Web サイトコンソールのカスタマイズ(クラシック UI) customizing-the-websites-console-classic-ui
Web サイト(siteadmin)コンソールにカスタム列を追加 adding-a-custom-column-to-the-websites-siteadmin-console
カスタム列を表示するように web サイト管理コンソールを拡張できます。このコンソールは JSON オブジェクトをベースに構築されており、これを拡張するには ListInfoProvider
インターフェイスを実装する OSGI サービスを作成します。こうしたサービスが、コンソール構築のためにクライアントに送信される JSON オブジェクトを修正します。
このステップバイステップのチュートリアルでは、ListInfoProvider
インターフェイスを実装して web サイト管理コンソールに新しい列を表示する方法について説明します。主な手順は以下のとおりです。
- OSGI サービスを作成し、それを含むバンドルを AEM サーバーにデプロイします。
- (オプション)コンソールの構築に使用される JSON オブジェクトをリクエストする JSON 呼び出しを発行して、新しいサービスをテストします。
- リポジトリ内のコンソールのノード構造を拡張して、新しい列を表示します。
- デジタルアセットコンソール
- コミュニティコンソール
OSGI サービスの作成 creating-the-osgi-service
ListInfoProvider
インターフェイスは、次の 2 つのメソッドを定義します。
- リストのグローバルプロパティを更新する
updateListGlobalInfo
- 単一のリスト項目を更新する
updateListItemInfo
どちらのメソッドにも次の引数があります。
request
:関連付けられた Sling HTTP リクエストオブジェクトinfo
:更新する JSON オブジェクト。グローバルリストまたは現在のリスト項目に 1 つずつresource
:Sling リソース
実装例は以下の通りです。
-
各項目に starred プロパティを追加します。これは、ページ名が「e」で始まる場合は
true
で、それ以外はfalse
です。 -
starredCount プロパティを追加します。このプロパティはリストに対してグローバルで、星印の付いたリスト項目の数が格納されます。
OSGI サービスを作成するには:
- CRXDE Lite で、バンドルを作成します。
- 以下のサンプルコードを追加します。
- バンドルをビルドします。
新しいサービスが起動し、実行されます。
package com.test;
import com.day.cq.commons.ListInfoProvider;
import com.day.cq.i18n.I18n;
import com.day.cq.wcm.api.Page;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.commons.json.JSONException;
import org.apache.sling.commons.json.JSONObject;
@Component(metatype = false)
@Service(value = ListInfoProvider.class)
public class StarredListInfoProvider implements ListInfoProvider {
private int count = 0;
public void updateListGlobalInfo(SlingHttpServletRequest request, JSONObject info, Resource resource) throws JSONException {
info.put("starredCount", count);
count = 0; // reset for next execution
}
public void updateListItemInfo(SlingHttpServletRequest request, JSONObject info, Resource resource) throws JSONException {
Page page = resource.adaptTo(Page.class);
if (page != null) {
// Consider starred if page name starts with 'e'
boolean starred = page.getName().startsWith("e");
if (starred) {
count++;
}
I18n i18n = new I18n(request);
info.put("starred", starred ? i18n.get("Yes") : i18n.get("No"));
}
}
}
-
指定されたリクエストやリソースに基づいて、情報を JSON オブジェクトに追加すべきかどうかを実装環境に応じて判断する必要があります。
-
ListInfoProvider
の実装が、応答オブジェクト内に存在するプロパティを定義している場合、そのプロパティの値は、指定した値で上書きされます。サービスランキングを使用して、複数の
ListInfoProvider
実装の実行順序を管理できます。
新しいサービスのテスト testing-the-new-service
Web サイト管理コンソールを開いてサイトを閲覧すると、ブラウザーがコンソールの構築に使用されている JSON オブジェクトを取得するための Ajax 呼び出しを発行します。例えば、/content/geometrixx
フォルダーを閲覧すると、コンソールを構築するために、次のリクエストが AEM サーバーに送信されます。
https://localhost:4502/content/geometrixx.pages.json?start=0&limit=30&predicate=siteadmin
新しいサービスを含むバンドルのデプロイ後に、そのサービスが実行されていることを確認するには、以下を行います。
-
ブラウザーで次の URL を参照します。
https://localhost:4502/content/geometrixx.pages.json?start=0&limit=30&predicate=siteadmin -
応答があり、新しいプロパティが次のように表示されます。
新しい列の表示 displaying-the-new-column
最後の手順では、/libs/wcm/core/content/siteadmin
のオーバーレイによってすべての Geometrixx ページで新しいプロパティを表示するよう、web サイト管理コンソールのノード構造を適応させます。以下の手順を実行します。
-
CRXDE Lite で、タイプ
sling:Folder
のノードを使用してノード構造/apps/wcm/core/content
を作成し、構造/libs/wcm/core/content
を反映します。 -
ノード
/libs/wcm/core/content/siteadmin
をコピーし、以下/apps/wcm/core/content
に貼り付けます。 -
ノード
/apps/wcm/core/content/siteadmin/grid/assets
から/apps/wcm/core/content/siteadmin/grid/geometrixx
にコピーし、プロパティを変更します。-
pageText を削除
-
pathRegex を
/content/geometrixx(/.*)?
に設定
これによりすべての Geometrixx web サイトに対してグリッド設定がアクティブになります。 -
storeProxySuffix を
.pages.json
に設定 -
複数値プロパティ storeReaderFields を編集し、
starred
値を追加します。 -
MSM 機能をアクティベートするには、次の MSM パラメーターを複数文字列プロパティ storeReaderFields に追加します。
- msm:isSource
- msm:isInBlueprint
- msm:isLiveCopy
-
-
(タイプ nt:unstructured の)
starred
ノードを、次のプロパティを設定して/apps/wcm/core/content/siteadmin/grid/geometrixx/columns
の下に追加します。-
dataIndex:文字列タイプの
starred
-
ヘッダー:文字列タイプの
Starred
-
xtype:文字列タイプの
gridcolumn
-
-
(オプション)表示したくない列を
/apps/wcm/core/content/siteadmin/grid/geometrixx/columns
でドロップします。 -
/siteadmin
は、デフォルトとして/libs/wcm/core/content/siteadmin
を指すバニティーパスです。
このパスを/apps/wcm/core/content/siteadmin
のサイト管理のバージョンにリダイレクトするには、プロパティsling:vanityOrder
が/libs/wcm/core/content/siteadmin
で定義されているより大きい値を持つように定義します。デフォルト値は 300 なので、それより大きい値が適しています。 -
Web サイト管理コンソールに移動し、次の Geometrixx サイトに移動します。
https://localhost:4502/siteadmin#/content/geometrixx。 -
Starred という新しい列が使用可能になり、次のようにカスタム情報が表示されます。
サンプルパッケージ sample-package
このチュートリアルの結果は、Package Share の Web サイト管理コンソールのカスタマイズで入手できます。