Alfresco Share のフォームにファイル/データ アップロード ピッカーを追加するにはどうすればよいですか? ボタンをクリックすると、ファイル ピッカーが表示されます。誰でも助けることができますか?
3 に答える
users.jsで定義されている Manage Users コンソール コードを確認してください。このコードには、ユーザーの詳細を含む 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>
onReady()
次に、クライアント側のコード (関数内など) で YUI ボタンを作成します。
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
config オブジェクトでのパラメーターの使用に注意してください。アップロードされたファイルのコンテンツを処理する方法を知っている、作成したカスタム リポジトリ Web スクリプトの URL にこれを設定する必要があります。
ユーザー アップロードの例では、onUsersUploadComplete()
参照されるメソッドも定義しています。ここに独自のコンポーネント メソッドを実装して、アップロードの結果に基づいて UI を更新するなどの適切なアクションを実行するかどうかは、ユーザー次第です。
フォームを作成するには、次の 3 つのファイルをパスに配置する必要があります。
/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 について言及しています。ここでは、同様のフォームを実装しました (実際には、アップロードではなくコンテンツを作成するダッシュレットを作成しましたが、コンセプトはまったく同じです。こちらをご覧ください: https://forums .alfresco.com/ja/viewtopic.php?f=48&t=41486
ドキュメント詳細ページのドキュメント アクションのブロックに新しいブロックを表示するには、ドキュメント詳細ページに新しいコンポーネントを追加する必要があります。でsite-data\template-instances\document-details.xml
、追加
<component>
<region-id>document-uploadcustom</region-id>
<url>/components/documentUploadCustom</url>
</component>
/components/documentUploadCustom
あなたのウェブスクリプトのURLにしましょう。
で、あなたのコード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
ファイルのアップロード方法はのonFileUpload
とから参照できますfile-upload.js
。