2

第一个问题:

我想以工作流的任务编辑形式实现文档的预览......我该怎么做?我尝试使document-details.xmlanddocument-details.ftl适应workflow-details.xmlworkflow-details.ftl但不起作用。我试图将具有文档详细信息文件的 Web 预览的组件复制到工作流详细信息。有什么提示吗?

我在workflow-details.ftl中有这个:

<#include "include/alfresco-template.ftl" />
<@templateHeader>
   <@script type="text/javascript" src="${url.context}/res/modules/documentlibrary/doclib-actions.js" group="document-details"/>
   <@link rel="stylesheet" type="text/css" href="${url.context}/res/components/document-details/document-details-panel.css" group="document-details"/>
   <@link rel="stylesheet" type="text/css" href="${url.context}/res/components/workflow/task-edit-header.css" group="workflow-details"/>
   <@templateHtmlEditorAssets />
</@>


<@templateBody>
   <@markup id="alf-hd">
   <div id="alf-hd">
      <@region scope="global" id="share-header" chromeless="true"/>
      <@region id="title" scope="template"/>
      <#if page.url.args.nodeRef??>
         <@region id="path" scope="template"/>
      </#if>
   </div>
   </@>
   <@markup id="bd">
   <div id="bd">
      <div class="share-form">
         <@region id="data-header" scope="page" />
         <div class="yui-gc">
            <div class="yui-u first">
                 <#if (config.scoped['WorkflowDetails']['workflow-details'].getChildValue('display-web-preview') == "true")>
                    <@region id="web-preview" scope="template"/>
                 </#if>
            </div>
         </div>
         <@region id="data-form" scope="page" />
         <@region id="data-actions" scope="page" />
      </div>
   </div>
   </@>
</@>

<@templateFooter>
   <@markup id="alf-ft">
   <div id="alf-ft">
      <@region id="footer" scope="global"/>
      <@region id="data-loader" scope="page" />
   </div>
   </@>
</@>

在 workflow-details.xml 我添加了这个组件:

 <component>
         <region-id>web-preview</region-id>
         <sub-components>
            <sub-component id="default">
               <evaluations>
                  <evaluation>
                     <evaluators>
                        <evaluator type="config.component.evaluator">
                           <params>
                              <element>WorkflowDetails/workflow-details/display-web-preview</element>
                           </params>
                        </evaluator>
                     </evaluators>
                     <url>/components/preview/web-preview</url>
                     <properties>
                        <nodeRef>{nodeRef}</nodeRef>
                        <api>api</api>
                        <proxy>alfresco</proxy>
                        <dependencyGroup>workflow-details</dependencyGroup>
                     </properties>
                  </evaluation>
               </evaluations>
            </sub-component>
         </sub-components>
      </component>

这不显示网络预览,只创建:

<div id="template_x002e_web-preview_x002e_workflow-details">
<div id="template_x002e_web-preview_x002e_workflow-details_x0023_default"> </div>
</div>

我的错误是什么?

第二个问题:

Aikau我得到的页面预览中:Warning: unimplemented annotation type: Widget signature在 Mozilla Firefox 的萤火虫的控制台中,文档显示没有数字签名......但是,例如,如果我上传带有数字签名的文档,我可以看到在文件的页面上签名document-details的文件。这个页面的预览不一样?如何实现此预览?

4

4 回答 4

3

您在这里遇到的主要问题是您在查看工作流任务时没有任何 nodeRef 请求参数(这被映射到分配给<nodeRef>web-preview 组件中元素的 {nodeRef} 令牌。因此web-preview WebScript 将没有要呈现的节点。

您将需要进行自定义,以便在查看工作流任务时将附件的 nodeRef 作为请求参数包含在内,或者使用您自己的 WebScript(Web 预览 WebScript 除外)来访问 nodeRef 的要预览的文档。

这里要考虑的其他几件事是,完全有可能将多个文档分配给工作流,因此您需要处理这种情况(即预览哪个文档,或者如何预览所有文档)。

我不认为这将是一个简单的定制。

于 2016-03-31T15:36:41.040 回答
2

仅使用共享中集成的 javascript 预览器 (pdf.js) 会更容易。如果直接使用javascript库,打开预览应该不难。

项目官网有例子:pdf.js

您可以使用共享 webscript 使用附加到工作流的文档的 url 列表来初始化 javascript。如果附加的文档不是 pdf,您将需要使用其 pdf 版本。

于 2016-03-31T17:36:02.723 回答
0

供日后参考。您可以按如下方式进行(示例):

创建共享扩展并将以下容器添加到/src/main/amp/config/alfresco/templates/org/alfresco/workflow-details.ftl

<div class="yui-gc">
    <div class="yui-u first">
    <#if (config.scoped['DocumentDetails']['document-details'].getChildValue('display-web-preview') == "true")>
        <@region id="web-preview" scope="template"/>
    </#if>
    </div>
</div>

也添加与中相同@templateHeaderdocument-details.ftl. 您的workflow-details.ftl遗嘱如下所示:

<#include "include/alfresco-template.ftl" />
<@templateHeader>
   <@script type="text/javascript" src="${url.context}/res/modules/documentlibrary/doclib-actions.js" group="document-details"/>
   <@link rel="stylesheet" type="text/css" href="${url.context}/res/components/document-details/document-details-panel.css" group="document-details"/>
   <@templateHtmlEditorAssets />
</@>

<@templateBody>
   <@markup id="alf-hd">
   <div id="alf-hd">
      <@region scope="global" id="share-header" chromeless="true"/>
      <@region id="title" scope="template"/>
      <#if page.url.args.nodeRef??>
         <@region id="path" scope="template"/>
      </#if>
   </div>
   </@>
   <@markup id="bd">
   <div id="bd">
      <div class="share-form">
         <@region id="data-header" scope="page" />
         <@region id="data-form" scope="page" />
         <div class="yui-gc">
            <div class="yui-u first">
                <#if (config.scoped['DocumentDetails']['document-details'].getChildValue('display-web-preview') == "true")>
                <@region id="web-preview" scope="template"/>
                </#if>
            </div>
         </div>
         <@region id="data-actions" scope="page" />
      </div>
   </div>
   </@>
</@>

<@templateFooter>
   <@markup id="alf-ft">
   <div id="alf-ft">
      <@region id="footer" scope="global"/>
      <@region id="data-loader" scope="page" />
   </div>
   </@>
</@>

将 WebPreview 组件添加到\src\main\amp\config\alfresco\site-data\template-instances\workflow-details.xml

<!-- WebPreview -->
<component>
 <region-id>web-preview</region-id>
 <sub-components>
    <sub-component id="default">
       <evaluations>
          <evaluation>
             <evaluators>
                <evaluator type="config.component.evaluator">
                   <params>
                      <element>DocumentDetails/document-details/display-web-preview</element>
                   </params>
                </evaluator>
             </evaluators>
             <url>/components/preview/web-preview</url>
             <properties>
                <nodeRef>{nodeRef}</nodeRef>
                <api>api</api>
                <proxy>alfresco</proxy>
                <dependencyGroup>document-details</dependencyGroup>
             </properties>
          </evaluation>
       </evaluations>
    </sub-component>
 </sub-components>
</component>      

您的workflow-details.xml遗嘱如下所示:

<?xml version='1.0' encoding='UTF-8'?>
<template-instance>
   <template-type>org/alfresco/workflow-details</template-type>
   <properties>
      <pageFamily>documentlibrary</pageFamily>
   </properties>
   <components>

      <!-- Site Navigation -->
      <component>
         <region-id>navigation</region-id>
         <sub-components>
            <sub-component id="default">
               <evaluations>
                  <!-- if referred from my tasks page: Task toolbar -->
                  <evaluation id="tasks">
                     <evaluators>
                        <evaluator type="equals.component.evaluator">
                           <params>
                              <referrer>{referrer}</referrer>
                              <tasks>tasks</tasks>
                           </params>
                        </evaluator>
                     </evaluators>
                     <url>/components/workflow/task-toolbar</url>
                  </evaluation>
                  <!-- if referred from my workflows page: Workflows toolbar -->
                  <evaluation id="workflows">
                     <evaluators>
                        <evaluator type="equals.component.evaluator">
                           <params>
                              <referrer>{referrer}</referrer>
                              <workflows>workflows</workflows>
                           </params>
                        </evaluator>
                     </evaluators>
                     <url>/components/workflow/workflow-toolbar</url>
                  </evaluation>
                  <!-- if in site: Site navigation -->
                  <evaluation id="site">
                     <evaluators>
                        <evaluator type="site.component.evaluator"/>
                     </evaluators>
                     <url>/components/navigation/collaboration-navigation</url>
                  </evaluation>
               </evaluations>
            </sub-component>
         </sub-components>
      </component>

       <!-- WebPreview -->
      <component>
         <region-id>web-preview</region-id>
         <sub-components>
            <sub-component id="default">
               <evaluations>
                  <evaluation>
                     <evaluators>
                        <evaluator type="config.component.evaluator">
                           <params>
                              <element>DocumentDetails/document-details/display-web-preview</element>
                           </params>
                        </evaluator>
                     </evaluators>
                     <url>/components/preview/web-preview</url>
                     <properties>
                        <nodeRef>{nodeRef}</nodeRef>
                        <api>api</api>
                        <proxy>alfresco</proxy>
                        <dependencyGroup>document-details</dependencyGroup>
                     </properties>
                  </evaluation>
               </evaluations>
            </sub-component>
         </sub-components>
      </component>      

      <!-- Path -->
      <component>
         <region-id>path</region-id>
         <sub-components>
            <sub-component id="default">
               <evaluations>
                  <!-- if in site: Site title -->
                  <evaluation id="site">
                     <evaluators>
                        <evaluator type="site.component.evaluator"/>
                     </evaluators>
                     <url>/components/document-details/path</url>
                  </evaluation>
                  <!-- otherwise: Repository title -->
                  <evaluation id="repo">
                     <url>/components/document-details/repo/path</url>
                  </evaluation>
               </evaluations>
            </sub-component>
         </sub-components>
      </component>

   </components>
</template-instance>

如果要将组件放置在任意区域,可能需要使用 JavaScript,例如:

...
var container = YAHOO.util.Dom.get('user-list');
var web_preview = YAHOO.util.Dom.get('template_x002e_web-preview_x002e_workflow-details_x0023_default');
YAHOO.util.Dom.insertAfter(web_preview, container);
...

ID==user-list我放在其中的容器userdetails.ftl添加到share-config-custom.xml如下:

... 
<field id="mswf:userDetails" set="userDetails" label="...">
    <control template="/org/alfresco/components/form/controls/workflow/userdetails.ftl" />
</field>
...

结果可能如下所示。

在此处输入图像描述

于 2017-07-02T13:11:42.890 回答
0

这是一个更简单的解决方案,可以处理多个文档并使用 web-preview 组件:

  1. 在您的 share-config-custom.xml 覆盖 packageItems 字段中:

    <field id="packageItems" set="items">
        <control template="/com/yourdomain/components/form/controls/workflow/packageitems.ftl" />
    </field>
    
  2. 控制模板(/com/yourdomain/components/form/controls/workflow/packageitems.ftl):

    <#include "/org/alfresco/components/form/controls/workflow/packageitems.ftl" />
    <#assign el>${controlId}-wp</#assign>
    <#assign dependencyGroup="web-preview">
    <#include "/org/alfresco/components/preview/include/web-preview-css-dependencies.lib.ftl" />
    <#include "/org/alfresco/components/preview/include/web-preview-js-dependencies.lib.ftl" />
    
    <div class="yui-g" id="${el}"></div>
    <script type="text/javascript">//<![CDATA[
    (function(){
        var nodeRefs = ("${field.value?html}" || "").split(',');
        for (var ni = 0; ni < nodeRefs.length; ni++) {
            Alfresco.util.loadWebscript({
              url: Alfresco.constants.URL_SERVICECONTEXT + "components/preview/web-preview",
              properties: { nodeRef: nodeRefs[ni], htmlid: "${el}-preview-" + ni},
              target: "${el}"
            }); 
        }
    })();
    //]]></script>
    
于 2017-10-27T17:59:05.917 回答