カテゴリを作成したら、そこに追加するパネルアプリを作成します。
-
お気に入りのサードパーティツールを使用してOSGiモジュールを作成するか、Blade CLIを使用します。Blade CLIは、基本的なパネルカテゴリとパネルアプリの作成に役立つPanel Appテンプレートを提供します。
-
モジュールの
src
ディレクトリに一意のパッケージ名を作成し、そのパッケージに新しいJavaクラスを作成します。命名規則に従うには、クラスに一意の名前を付け、その後にPanelApp (例:JournalPanelApp
)を付けます。 -
クラスの宣言のすぐ上に、次のアノテーションを挿入します。
@Component( immediate = true, property = { "panel.app.order:Integer=INTEGER" "panel.category.key=" + PANEL_CATEGORY_KEY, }, service = PanelApp.class )
これらのプロパティと属性は、前のチュートリアルで説明したものと同様です。
panel.category.key
は、パネルアプリをパネルカテゴリに割り当てます。panel.app.order:Integer
プロパティは、同じカテゴリの他のパネルアプリの中で、あなたのパネルアプリが表示される順序を指定します。たとえば、パネルアプリを[サイト管理] → *[Content]*に追加する場合は、次のプロパティを追加します。"panel.category.key=" + PanelCategoryKeys.SITE_ADMINISTRATION_CONTENT
Liferayでデフォルトのパネルカテゴリを指定するために使用できるキーについては、PanelCategoryKeysクラスにアクセスしてください。
service
属性をPanelApp.class
に設定します。JournalPanelApp
クラスに対する同様の@Component
アノテーションの例を以下に示します。@Component( immediate = true, property = { "panel.app.order:Integer=100", "panel.category.key=" + PanelCategoryKeys.SITE_ADMINISTRATION_CONTENT }, service = PanelApp.class )
-
BasePanelApp抽象クラスを拡張して、
PanelApp
インターフェイスを実装します。パネルカテゴリに関する前のチュートリアルで学習したように、パネルでレンダリングするためにより複雑なUIを作成する必要がある場合は、作成できます。JSPを使用してそのUIをレンダリングする場合は、BaseJSPPanelAppを拡張します。 これにより、JSP機能を製品メニューのアプリのリストに組み込むために使用できる追加のメソッドが提供されます。
JSPは、パネルアプリにフロントエンド機能を提供する唯一の方法ではありません。
PanelCategory
を実装する独自のクラスを作成して、FreeMarkerなどの他のテクノロジーを使用できます。 -
基本クラスを拡張せずにPanelAppインターフェイスを実装している場合は、そのメソッドを実装する必要があります。
BlogsPanelApp
は、ポートレットをパネルアプリとして指定する方法の分かりやすい例です。このクラスはBasePanelApp
を拡張し、getPortletId
およびsetPortlet
メソッドをオーバーライドします。これらのメソッドは、ブログポートレットをパネルアプリとして指定および設定します。各パネルアプリはポートレットに属している必要があり、各ポートレットには最大1つのパネルアプリを含めることができます。複数のパネルアプリが必要な場合は、別のポートレットを作成する必要があります。デフォルトでは、パネルアプリは、ユーザーが関連するポートレットを表示する権限を持っている場合にのみ表示されます。
これらのメソッドは、ブログポートレットを次のように検索します。
@Override public String getPortletId() { return BlogsPortletKeys.BLOGS_ADMIN; } @Override @Reference( target = "(javax.portlet.name=" + BlogsPortletKeys.BLOGS_ADMIN + ")", unbind = "-" ) public void setPortlet(Portlet portlet) { super.setPortlet(portlet); }
製品メニューでパネルアプリの外観をカスタマイズすることもできます。前に学んだように、
BaseJSPPanelApp
抽象クラスを拡張して、JSPにさらに機能を提供できます。
これで、製品メニューでパネルアプリを追加または変更する方法がわかりました。Liferayは、新しいパネルカテゴリとアプリを追加する簡単なソリューションを提供するだけでなく、任意のテクノロジーを使用して、より複雑なUIを製品メニューに追加する柔軟性も提供しています。