预填充动作形式Alfresco分享

时间:2015-02-26 07:01:26

标签: alfresco alfresco-share

我有一个动作,显示某个用户输入的表单。输入是纯文本字段。我想知道如何预先填写输入字段。

我发现的所有教程和博客文章都很老,所有这些都只考虑了一个字段。我的理解是,我需要一个自定义的.ftl,其中包含对Web脚本的调用。

<field id="myprop">
   <control template="/org/alfresco/components/form/controls/mycustomfield.ftl"/>
</field>

我的问题是我最终会对同一个网页脚本进行至少六次调用。因为那是我目前在表单中的字段数。

2 个答案:

答案 0 :(得分:2)

嗯,我想它也可以通过使用表单过滤器来实现。也许不是最好的解决方案,但它应该完成工作。 https://wiki.alfresco.com/wiki/Forms_Developer_Guide#Form_Filter

答案 1 :(得分:1)

只有一种更好的方式......您不需要使用共享表单引擎。看看&#34;创建网站&#34;对话框,此表单不使用共享表单引擎

您需要创建自定义共享组件,该组件将返回带有填充参数的表单,并在单击操作时执行的前端js中初始化此表单。

您可以通过以下方式将新组件添加到共享:

1)在web-extension / site-webscripts / com / pizdez / form中创建新的描述符my-form.get.desc.xml

<webscript>
  <shortname>my-form</shortname>
  <description>Get HTML form</description>
  <url>/pizdec/components/form</url>
</webscript>

2)在同一个文件夹中创建新控制器my-form.get.js,您可以在该文件夹中调用alfresco以获取所有需要的信息

var connector = remote.connect("alfresco");
    var response = connector.get("/my/alfresco/webscript");

    if (response.status == 200)
    {
        // Create javascript objects from the repo response
        var obj = eval('(' + response + ')');
        if (obj)
        {
            model.param1 = obj.param1;

        }
    }

3)在同一个文件夹中创建ftl模板my-form.get.html.ftl

    <@markup id="css" >
    <#-- CSS Dependencies -->
        <@link href="${url.context}/res/components/form/my.css" />
    </@>

    <@markup id="js">
        <@script src="${url.context}/res/components/form/my.js" />
    </@>

    <@markup id="widgets">
        <@createWidgets/>
    </@>

    <@markup id="html">
        <@uniqueIdDiv>
        <#assign el=args.htmlid?html>
<div id="${el}-dialog">
    <div class="hd">TITLE</div>
    <div class="bd">
        <form id="${el}-form" method="POST" action="">

            <div class="yui-gd">
                <div class="yui-u first"><label for="${el}-title">Title:</label></div>
                <div class="yui-u"><input id="${el}-title" type="text" name="title" tabindex="0" maxlength="255"/>&nbsp;*
                </div>
            </div>

            <div class="yui-gd">
                <div class="yui-u first"><label for="${el}-param1">Param1:</label></div>
                <div class="yui-u"><input id="${el}-param1" type="text" name="title" tabindex="0" maxlength="255" value="${param1}"/>&nbsp;*
                </div>
            </div>

            <div class="bdft">
                <input type="submit" id="${el}-ok-button" value="${msg("button.ok")}" tabindex="0"/>
                <input type="button" id="${el}-cancel-button" value="${msg("button.cancel")}" tabindex="0"/>
            </div>
        </form>
    </div>
</div>
        </@>
    </@>

4)之后你需要从ui js

获得这个组件
                var myForm = new Alfresco.module.SimpleDialog(this.id + "-dialog");

            myForm.setOptions(
                {
                    width: "50em",
                    templateUrl: Alfresco.constants.URL_SERVICECONTEXT + "/pizdec/components/form",
                    actionUrl: null,
                    destroyOnHide: true,
                    doBeforeDialogShow:
                    {
                        fn: doBeforeDialogShow,
                        scope: this
                    },
                    onSuccess:
                    {
                        fn: function (response)
                        {

                        },
                        scope: this
                    },
                    onFailure:
                    {
                        fn: function(response)
                        {

                        },
                        scope: this
                    }
                }).show();

我只想告诉你研究的方向