Web サイトコンソールのカスタマイズ(クラシック UI)

Web サイト(サイト管理)コンソールにカスタム列を追加

カスタム列を表示するように Web サイト管理コンソールを拡張できます。このコンソールは JSON オブジェクトをベースに構築されており、これを拡張するには ListInfoProvider インターフェイスを実装する OSGI サービスを作成します。このサービスが、コンソール構築のためにクライアントに送信される JSON オブジェクトを修正します。

このステップバイステップのチュートリアルでは、ListInfoProvider インターフェイスを実装して Web サイト管理コンソールに新しい列を表示する方法について説明します。主な手順は次のとおりです。

  1. OSGI サービスを作成し、そのサービスを含むバンドルを AEM サーバーにデプロイします。
  2. (オプション)コンソールの構築に使用される JSON オブジェクトをリクエストする JSON 呼び出しを発行して、新しいサービスをテストします。
  3. リポジトリ内のコンソールのノード構造を拡張して、新しい列を表示します。
メモ

このチュートリアルは、次のような管理コンソールの拡張にも利用できます。

  • デジタルアセットコンソール
  • コミュニティコンソール

OSGI サービスの作成

ListInfoProvider インターフェイスは、次の 2 つのメソッドを定義します。

  • リストのグローバルプロパティを更新する updateListGlobalInfo
  • 単一のリスト項目を更新する updateListItemInfo

どちらのメソッドにも次の引数があります。

  • request:関連付けられた Sling HTTP リクエストオブジェクト
  • info:更新する JSON オブジェクト。グローバルリストまたは現在のリスト項目に 1 つずつ
  • resource、Slingリソース。

次の実装例では、

  • 各項目に starred プロパティを追加します。ページ名が「truee 」で始まる場合は​で、それ以外の場合は false です。

  • starredCount プロパティを追加します。このプロパティはリストに対してグローバルで、星印の付いたリスト項目の数が格納されます。

OSGI サービスの作成手順

  1. CRXDE Lite でバンドルを作成します
  2. 次のサンプルコードを追加します。
  3. バンドルをビルドします。

新しいサービスが起動し、実行されます。

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 実装の実行順序を管理できます。

新しいサービスのテスト

Web サイト管理コンソールを開いてサイトを閲覧すると、ブラウザーがコンソールの構築に使用されている JSON オブジェクトを取得するための ajax 呼び出しを発行します。例えば、/content/geometrixxフォルダーを参照すると、AEMサーバーに次の要求が送信され、コンソールが構築されます。

http://localhost:4502/content/geometrixx.pages.json?start=0&limit=30&predicate=siteadmin

新しいサービスを含むバンドルのデプロイ後に、そのサービスが実行されていることを確認するには、以下をおこないます。

  1. ブラウザーで次のURLを指定します。

    http://localhost:4502/content/geometrixx.pages.json?start=0&limit=30&predicate=siteadmin

  2. 応答によって、新しいプロパティが次のように表示されます。

screen_shot_2012-02-13at163046

新しい列の表示

最後の手順では、Webサイト管理コンソールのノード構造を適合させ、/libs/wcm/core/content/siteadminをオーバーレイしてすべてのGeometrixxページの新しいプロパティを表示します。 以下の手順を実行します。

  1. CRXDE Liteで、ノード構造/apps/wcm/core/contentをタイプsling:Folderのノードで作成し、構造/libs/wcm/core/contentを反映します。

  2. ノード/libs/wcm/core/content/siteadminをコピーして/apps/wcm/core/contentの下に貼り付けます。

  3. ノード/apps/wcm/core/content/siteadmin/grid/assets/apps/wcm/core/content/siteadmin/grid/geometrixxにコピーし、そのプロパティを変更します。

    • pageText を削除

    • pathRegex​を/content/geometrixx(/.*?lang=ja)?に設定

      に設定すべての Geometrixx Web サイトに対してグリッド設定が有効になります。

    • storeProxySuffix​を.pages.jsonに設定

    • 複数値プロパティ storeReaderFields を編集し、starred 値を追加します。

    • MSM機能をアクティブ化するには、次のMSMパラメーターをmulti-Stringプロパティ​storeReaderFields​に追加します。

      • msm:isSource
      • msm:isInBlueprint
      • msm:isLiveCopy
  4. 追加/apps/wcm/core/content/siteadmin/grid/geometrixx/columnsの下のstarredノード(タイプ​nt:unstructured)で、次のプロパティが含まれます。

    • dataIndex: starred 文字列型
    • header: Starred 文字列型
    • xtype: gridcolumn 文字列型
  5. (オプション)/apps/wcm/core/content/siteadmin/grid/geometrixx/columnsに表示したくない列をドロップします。

  6. /siteadmin は、デフォルトでは、を指すバニティパスで /libs/wcm/core/content/siteadminす。

    これを/apps/wcm/core/content/siteadmin上のご使用のバージョンのsiteadminにリダイレクトするには、/libs/wcm/core/content/siteadmin上で定義された値より大きい値を持つプロパティsling:vanityOrderを定義します。 デフォルト値は 300 なので、それより大きい値が適しています。

  7. Webサイト管理コンソールに移動し、Geometrixxサイトに移動します。

    http://localhost:4502/siteadmin#/content/geometrixx.

  8. Starred」という新しい列が使用可能になり、次のようにカスタム情報が表示されます。

screen_shot_2012-02-14at104602

注意

pathRegex プロパティによって定義されるリクエストパスに複数のグリッド設定が一致する場合は、最も詳しい設定ではなく、最初の設定が使用されます。つまり、設定の順序が重要です。

サンプルパッケージ

このチュートリアルの結果は、パッケージ共有のWebサイト管理コンソールパッケージのカスタマイズで確認できます。

このページ