文書やメディア表示ポートレットのルートフォルダとしてフォルダのいずれかを設定する方法DAMの表示ポートレットのルートフォルダを指すようにする方法 programmatically.PFAイメージによってプログラム的
答えて
Liferayのメジャーバージョン
あなた質問はとタグ付けされています。Liferay 6とLiferay 7 2つのリリースは大幅に異なります。この回答はLiferay 6.xを使用していると仮定しています。これは、OSGIモジュールではなく、DDM ポートレットを要求しているためです。
プログラムで任意のフォルダがドキュメントライブラリの表示にポートレットをJSP用のJavaServerページのフックを作成する必要がありますように、入力リソースをデフォルトにすることを設定します。具体的になる前にJSPフックを作成する方法を簡単に説明します。
あなたのプラグインSDKのフックフォルダに移動し、コマンド・ライン端子からフック
を作成します。フックプロジェクトを作成するには、作成スクリプトを実行する必要があります。ここでは、スクリプトを実行するには従うべきフォーマットだ:LinuxおよびMac OS X上で
create.[sh|bat] [project-name] "[Hook Display Name]"
、あなたは、この例では、いずれかのコマンドを入力したい:
./create.sh doc-lib-disp-hook "Document Library Display Hook"
Windowsでは、次の例のようなコマンドを入力します。
create.bat doc-lib-disp-hook "Document Library Display Hook"
Liferay IDEの新規プロジェクトウィザードと作成スクリプトは、プラグインSDKのフックフォルダにフックプロジェクトを生成します。 Plugins SDKはプロジェクト名に自動的に "-hook"を追加します。
これを動作させるには、Apache ANTがインストールされている必要があります。インストールが必要な場合は、次のマニュアルを参照してください。
フックは、あなたのLiferay IDEまたはLiferayの開発メーカー(またはEclipse)で開いて作成されたら。あなたのIDEで
- 右ファイル(左上隅)
- の下にある下向きの矢印をクリックしDOC-LIB-DISP-フック上の既存のソース
- ダブルクリックしてからLiferayのプラグイン・プロジェクトを選択します。プラグインのSDK Hookディレクトリにあるフォルダを開きます。
これに類似した名前(別名)が表示されます。
オーバーライドJSP
今、あなたはフックプラグインを正常に作成していることを、我々は必要なファイルを上書きする必要があります。私たちは、このフックのために必要であること、特に二つのファイル
- HTML /ポートレット/ document_library_display/configuration.jsp
- HTML /ポートレット/ document_library/
は、JSPの実行以下の手順で上書きするには あなたのMETA-INFフォルダの下init.jsp我々は両方必要があります。これらのファイルの1つを実際にオーバーライドするだけで済みますが、この例を論理的に参照する必要があります。
- に
- オープンアップのLiferay-hook.xmlcustom_jspと呼ばれる新しいディレクトリを作成し概要モード
- 緑プラス記号(カスタムJSPラベルの右側にある)をクリックします。
- 上記の両方のファイルを検索して(ウィンドウにURLをコピーして貼り付けて)、[保存]をクリックします。
これで、次のディレクトリ構造があることに気付きました。
てみましょう最初のconfiguration.jspを開きます。これはスクリーンショットをとったGUIを生成するコードです。次のコードブロックを見つけます。
<aui:field-wrapper label="root-folder">
<div class="input-append">
<liferay-ui:input-resource id="rootFolderName" url="<%= rootFolderName %>" />
<aui:button name="openFolderSelectorButton" value="select" />
<%
String taglibRemoveFolder = "Liferay.Util.removeFolderSelection('rootFolderId', 'rootFolderName', '" + renderResponse.getNamespace() + "');";
%>
<aui:button disabled="<%= rootFolderId <= 0 %>" name="removeFolderButton" onClick="<%= taglibRemoveFolder %>" value="remove" />
</div>
</aui:field-wrapper>
ブロック内に、設定したいルートフォルダ要素が表示されます。
<liferay-ui:input-resource id="rootFolderName" url="<%= rootFolderName %>" />
フォルダのURLがすでに変数rootFolderNameにデフォルトで設定されて見ることができるように。その変数が最初に初期化される場所を見つける必要があります。
このファイルはまったく変更する必要はありません。私はそれを含めるとそれを開き、論理的に従うことができました。
あなたはrootFolderNameに気付いた場合configuration.jsのpファイルの任意の場所に初期化されません。したがって、init.jspというファイルは、ページの上部にインクルードされているため、調査する必要があります。そのファイルを開くと、次のブロックに気付くでしょう。
String portletResource = ParamUtil.getString(request, "portletResource");
if (layout.isTypeControlPanel()) {
portletPreferences = PortletPreferencesLocalServiceUtil.getPreferences(themeDisplay.getCompanyId(), scopeGroupId, PortletKeys.PREFS_OWNER_TYPE_GROUP, 0, PortletKeys.DOCUMENT_LIBRARY, null);
}
long rootFolderId = PrefsParamUtil.getLong(portletPreferences, request, "rootFolderId", DLFolderConstants.DEFAULT_PARENT_FOLDER_ID);
String rootFolderName = StringPool.BLANK;
if (rootFolderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
try {
Folder rootFolder = DLAppLocalServiceUtil.getFolder(rootFolderId);
rootFolderName = rootFolder.getName();
}
catch (NoSuchFolderException nsfe) {
}
}
このコードは基本的にはrootFolderNameを初期化しようとしています。 rootFolderIdがより高く0
- により、ポートレットの好みのいずれか、または
- リクエストパラメータ
を設定されている場合は、我々はそれに応じてrootFolderNameを設定します。
結論
あなたがプログラムで、デフォルトで任意のフォルダにrootFolderNameを設定したい場合は、いくつかのことをすることができます。一番簡単な方法は、フォルダのIDを取得し、プログラムのデフォルトのルートフォルダを設定します。この
long folderIdConstant = 999999L; // place folder id here
long rootFolderId = PrefsParamUtil.getLong(portletPreferences, request, "rootFolderId", folderIdConstant);
のようにコードを変更することであろう。今すぐビルドして展開してください。
- 1. プログラムによってカテゴリにイメージを追加するprestashop
- 2. TableLayoutはプログラムによって
- 3. アンドロイド:プログラムによってテーブル
- 4. UIBarButtonItemはプログラムによって
- 5. UWPプログラムによってXAMLページの背景イメージを変更するC#
- 6. jqueryによってサーバーのファイルシステムから動的にイメージをロードする
- 7. プログラムによって一時的に自動更新を無効にする
- 8. Drupalによってプログラム的にJavaScriptが無効にされます
- 9. WCF IncludeExceptionDetailInFaultsはプログラムによって?
- 10. Httpレスポンスコードはプログラムによって
- 11. 表示options.xulはプログラムによって
- 12. MS CRM 2011 CSVインポート(プログラムによって)
- 13. Gradle Plugin defaultDependencies jarプログラムによって
- 14. iPhone:URLを開くプログラムによって
- 15. LoadApplicationによってプログラムがクラッシュする
- 16. は、私は、次のシャイニーアプリを持ってどのようにプログラム的にテンプレート
- 17. プログラムによって動的にアクセスを共有するDynamics CRM Webアプリケーション
- 18. pydev別のプログラムによって起動されたPythonプログラム
- 19. iChatAgentによってiChatAgentによってプログラムでステータスを設定します
- 20. Qt(Ruby)のListViewを使ってプログラム的に移動
- 21. はプログラム的に私は、単純なドリルダウンチャートを持ってHighcharts
- 22. iphone sdkでプログラムによってイメージが占有するメモリサイズを取得する方法は?
- 23. Prologによって動的に表示されるHTMLページにイメージを含めるには?
- 24. Postgresは動的パスによって
- 25. イメージWKHtmlToPDFによって生成されたPDFのクォーク
- 26. APIによって返されたイメージをダウンロードします。
- 27. QRイメージがCIDetectorによって検出されない
- 28. はどのようにプログラム的
- 29. WooCommerceプログラムによって/機能を介してアカウントを作成
- 30. Android LogCatプログラムによって - すべてのプロセス
私は良いポインタを持っていますが、あなたがhttp://meta.stackexchange.com/questions/141823/why-is-cross-posting-wrong-on-an-external-siteで行動するまで待つことになります –