1

如何在 Alfresco Share 中的表单上添加文件/数据上传选择器?我需要单击我的按钮,然后应该出现文件选择器。有人可以帮忙吗?

4

3 回答 3

6

查看users.js中定义的管理用户控制台代码,该代码能够上传包含用户详细信息的 CSV 文件。

首先,您需要定义一个 HTML 按钮控件,然后添加一些客户端脚本以将其绑定到上传控件

在组件的 HTML 模板中定义按钮

<span class="yui-button yui-push-button" id="${args.htmlid?html}-uploadusers-button">
   <span class="first-child"><button>${msg("button.uploaduser")}</button></span>
</span>

然后在您的客户端代码中创建 YUI 按钮(例如在您的onReady()函数中)

var uploadUsersButton = Alfresco.util.createYUIButton(this, "uploadusers-button", this.onUploadUsersClick);

然后将按钮单击处理程序定义为组件原型的新功能 - 以下示例来自您需要根据需要修改的ConsoleUsers_onUploadUsersClick()功能users.js

onUploadUsersClick: function onUploadUsersClick()
{
   // Force the use of the HTML (rather than Flash) uploader because there are issues with the
   // Flash uploader in these circumstances when Sharepoint is being used. The Flash uploader
   // picks up the wrong JSESSIONID cookie which causes the upload to fail.
   if (!this.fileUpload)
   {
      this.fileUpload = Alfresco.util.ComponentManager.findFirst("Alfresco.HtmlUpload") 
   }

   // Show uploader for single file select - override the upload URL to use appropriate upload service
   var uploadConfig =
   {
      uploadURL: "api/people/upload.html",
      mode: this.fileUpload.MODE_SINGLE_UPLOAD,
      onFileUploadComplete:
      {
         fn: this.onUsersUploadComplete,
         scope: this
      }
   };

   this.fileUpload.show(uploadConfig);

   // Make sure the "use Flash" tip is hidden just in case Flash is enabled...
   var singleUploadTip = Dom.get(this.fileUpload.id + "-singleUploadTip-span");
   Dom.addClass(singleUploadTip, "hidden");
   Event.preventDefault(e);
}

注意uploadURL配置对象中参数的使用。您应该将其设置为您创建的自定义存储库 Web 脚本的 URL,该脚本知道如何处理上传文件的内容。

用户上传示例还定义了一个onUsersUploadComplete()您将看到引用的方法。您可以在此处实现自己的组件方法以采取适当的操作,例如根据上传结果更新 UI。

于 2012-09-04T11:00:35.243 回答
2

要创建表单,您应该在路径中放置三个文件:

/Alfresco/Tomcat/shared/classes/alfresco/site-webscript/org/alfresco/components/dashlets

在那里,你应该有:

yourCustomForm.get.desc.xml
yourCustomForm.get.html.ftl
yourCustomForm.get.js

在 XML 中,你应该这样写:

<webscript>
<shortname>My Form</shortname>
<description>Form to upload new doc</description>
<family>dashlet</family>
<url>/components/dashlets/yourCustomForm</url>
<authentication>user</authentication>
</webscript>

FTL 文件:

<!-- Pre-requisite: flash-upload and html-upload components are also included on the page -->
<#assign fileUploadConfig = config.scoped["DocumentLibrary"]["file-upload"]!>
<#if fileUploadConfig.getChildValue??>
<#assign adobeFlashEnabled = fileUploadConfig.getChildValue("adobe-flash-enabled")!"true">
</#if>
<script type="text/javascript">//<![CDATA[
new Alfresco.getFileUploadInstance().setOptions(
{
adobeFlashEnabled: ${((adobeFlashEnabled!"true") == "true")?string}
});
//]]>
</script>

此文件在 Share 中启用上传表单的 Flash 或 HTML 版本。(它已经存在,代码是名为“file-upload.get*”的文件

/Alfresco/Tomcat/webapps/share/classes/alfresco/site-webscript/org/alfresco/components/upload directory

在那里您还可以找到 flash 和 html 默认代码。

JS应该包括文件上传js文件,所以:

<#include "../component.head.inc">
<!-- File-Upload -->
<@script type="text/javascript" src="${page.url.context}/res/components/upload/file-upload.js">
</@script>

显然源 file-upload.js 应该有正确的路径,所以如果你在共享目录中工作,你应该把上面提到的文件也复制到那里。

希望有帮助。我指的是 RHEL 5.5 上的 Alfresco 4 Enterprise,我们在其中实现了类似的表单(实际上我们制作了一个创建内容的 dashlet,而不是上传,但它的概念几乎相同。看看这里: https://forums .alfresco.com/en/viewtopic.php?f=48&t=41486

于 2012-08-31T10:54:56.397 回答
0

要在文档详细信息页面的文档操作块中显示新块,您需要将新组件添加到文档详细信息页面。中site-data\template-instances\document-details.xml,添加

<component>
         <region-id>document-uploadcustom</region-id>
         <url>/components/documentUploadCustom</url>
</component>

/components/documentUploadCustom成为您的网页脚本网址。

templates\org\alfresco\document-details.ftl中,为新组件添加区域,例如<@region id="document-uploadcustom" scope="template"/> 您的代码可能如下:

<@region id="document-actions" scope="template"/>
<@region id="document-tags" scope="template"/>
<@region id="document-links" scope="template"/>
<@region id="document-metadata" scope="template"/>
<@region id="document-uploadcustom" scope="template"/>
<@region id="document-permissions" scope="template"/>
<@region id="document-workflows" scope="template"/>
<@region id="document-versions" scope="template"/>
<@region id="document-publishing" scope="template"/>

如何上传文件可以参考repo-toolbar.js'sonFileUploadfile-upload.js.

于 2012-09-03T12:53:12.527 回答