如何在Alfresco Share中的表单上添加文件/数据上传选择器?我需要点击我的按钮,然后应该出现文件选择器。有人可以帮忙吗?
答案 0 :(得分:5)
查看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);
}
请注意在config对象中使用uploadURL
参数。您应该将其设置为您创建的自定义存储库Web脚本的URL,该脚本知道如何处理上载文件的内容。
用户上传示例还定义了您将看到引用的方法onUsersUploadComplete()
。您可以在此处实现自己的组件方法,以采取适当的操作,例如根据上传结果更新UI。
答案 1 :(得分: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>
显然源文件upload.js应该有正确的路径,所以如果你在共享目录中工作,你应该复制上面提到的文件。
希望有所帮助。 我指的是RHEL 5.5上的Alfresco 4 Enterprise,我们在其中实现了一个类似的表单(实际上我们创建了一个创建内容的dashlet,而不是上传,但它的概念非常相似。 看看这里: https://forums.alfresco.com/en/viewtopic.php?f=48&t=41486
答案 2 :(得分: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
的{{1}}和onFileUpload
引用。