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
-
-
/apps/wcm/core/content/siteadmin/grid/geometrixx/columnsの下にstarredノード (タイプ nt:unstructured)を次のプロパティで追加します。-
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 サイト管理コンソールのカスタマイズで入手できます。