在Alfresco 5共享社区中显示表单上的文档的Web预览

时间:2016-02-18 13:30:25

标签: alfresco yui alfresco-share

我创建了一个露天表格。我想在其上嵌入网络预览组件。我found是Alfresco 4.2.1的源代码示例。

首先它创建一个ftl文件。

<@script type="text/javascript" src="${page.url.context}/res/components/form/custom-web-preview.js"></@script>
   <@script type="text/javascript" src="${page.url.context}/res/components/preview/web-preview.js"></@script>
   <@script src="${url.context}/res/components/preview/web-preview.js" />
   <@script src="${url.context}/res/components/preview/WebPreviewer.js" />
   <@script src="${url.context}/res/js/flash/extMouseWheel.js" />
   <@script src="${url.context}/res/components/preview/StrobeMediaPlayback.js" />
   <@script src="${url.context}/res/components/preview/Video.js" />
   <@script src="${url.context}/res/components/preview/Audio.js" />
   <@script src="${url.context}/res/components/preview/Flash.js" />
   <@script src="${url.context}/res/components/preview/Image.js" />

 <script type="text/javascript">//<![CDATA[
(
function()
{
    new Alfresco.customControl("${fieldHtmlId}").setMessages(${messages});
}
)
();

//]]></script>

<div id="${fieldHtmlId}">
   <div id="web-preview">

 </div>
</div>

在客户端java脚本的onReady方法中添加以下代码

Alfresco.util.Ajax.request(
         {
           method: "GET",
           url: Alfresco.constants.URL_SERVICECONTEXT + "components/preview/web-preview?nodeRef=${NODEREF}&htmlid=${ID}",,
           successCallback:
           {
            fn: function(o)
            {
        Dom.get("web-preview").innerHTML = o.serverResponse.responseText;
            },
            scope: this
           },
           failureMessage: "Failed"
        });
         }

当我在alfresco 5社区尝试这种形式失败时。

这可能适用于Alfresco的新版本吗? 我应该在哪里添加Ajax请求? 有没有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

该文章中的代码不完整,取决于许多未包含的自定义代码。

我不清楚:

  1. custom-web-preview.js是什么?
  2. 什么是在ftl中实例化的javascript类Alfresco.customControl?

    新的Alfresco。 customControl (“$ {fieldHtmlId}”)。setMessages($ {messages})

  3. 在哪个“客户端”javascript中添加onReady?

  4. 尝试使用以下网址调用什么内容?

    Alfresco.constants.URL_SERVICECONTEXT +“components / preview / web-preview?nodeRef = $ {NODEREF} &amp; htmlid = $ {ID}

  5. 我不知道共享库中语法为$ {}的占位符。在共享代码中,有时YAHOO.lang.substitute用于替换使用语法{}指定的占位符,如下例所示:

    var templateUrl = YAHOO.lang.substitute(Alfresco.constants.URL_SERVICECONTEXT + "components/form?itemKind={itemKind}&itemId={itemId}&mode={mode}&submitType={submitType}&formId={formId}&showCancelButton=true",
    {
       itemKind: "type",
       itemId: "cm:folder",
       mode: "create",
       submitType: "json",
       formId: "doclib-common"
    });
    

    传递给方法的javascript对象用于指定占位符的实际值。 在文章中建议的代码中,我看不到与$ {ID}和$ {NODEREF}应该做什么共享。

    我很抱歉,但在我看来,文章的作者刚刚复制并粘贴了他在项目中编写的一些代码而没有测试他所写的是自包含和正确的。