如何在露天的页面中添加表单

时间:2018-01-18 08:35:37

标签: alfresco freemarker

我在share-config-custom.xml配置文件中定义了表单,并且我有一个home.ftl页面。如何将配置文件中的表单定义与home.ftl页面相关联?

2 个答案:

答案 0 :(得分:1)

您可以通过/components/form webscript检索已配置的表单,这样您就可以使用javascript控制器将您的表单注入您的页面中,如@vikash在上一个回答中所述,或者您可以使用Spring surf创建页面为此,您可以查看Alfresco documentation Surf Pages

在定义页面中,将/components/form作为url和url参数作为属性,如以下示例中所述

<?xml version="1.0" encoding="UTF-8"?>
<component>
    <url>/components/form</url>
     <properties>
        <itemKind>type</itemKind>
        <itemId>contentType</itemId>
        <mode>edit</mode>
        <formUI>true</formUI>
        <submitType>json</submitType>
        <showCaption>true</showCaption>
        <showCancelButton>true</showCancelButton>
     </properties>
</component>

如果您想获取已配置类型的表单,则应在type中设置itemKind并在itemId中输入名称(cm:xxx)

答案 1 :(得分:0)

您可以使用内容类型打开共享表单 打开表格

function render(htmlPageId) {
var contentType = "content_type";
    var formHtmlId = htmlPageId+ "-metadata-form";
    var url = YAHOO.lang
            .substitute(
                    "{serviceContext}components/form"
                            + "?itemKind=type&itemId={itemId}&mode=create&submitType=json"
                            + "&formId={formId}&showCancelButton=true&htmlid={htmlid}"
                            + "&destination={destination}&siteId={siteId}&containerId={containerId}&uploadDirectory={uploadDirectory}",
                    {
                        serviceContext : Alfresco.constants.URL_SERVICECONTEXT,
                        itemId : contentType,
                        itemKind : "model",
                        formId : "upload-folder",
                        destination : "workspace://SpacesStore/e9d60c89-823a-4e3e-abb2-522e59a09d0f",
                        siteId : "production",
                        containerId : "documentLibrary",
                        uploadDirectory : "/GM",
                        htmlid : formHtmlId
                    });

    Alfresco.util.Ajax.request({
        url : url,
        responseContentType : "html",
        execScripts : true,
        successCallback : {
            fn : function(response) {
                var formNode = YAHOO.util.Dom.get(formHtmlId);
                formNode.innerHTML = response.serverResponse.responseText;

            },
            scope : this
        },
        failureCallback : {
            fn : function(response) {
                Alfresco.logger.debug("onContentTypeChange failureCallback",
                        arguments);
            },
            scope : this
        }
    });
}

将您的内容类型传递到 - contentType 您希望打开哪种类型的表单。

var formNode = YAHOO.util.Dom.get(formHtmlId);
 formNode.innerHTML = response.serverResponse.responseText;

formHtmlId 是您的html组件的ID     喜欢

<div id="${el}-renderForm" onload="render(htmlID)">
</div>

在此功能中传递您当前的htmlId。