ウィジェットの使用および拡張(クラシック UI) using-and-extending-widgets-classic-ui
Adobe Experience Manager(AEM)の web ベースインターフェイスでは、AJAX やその他の最新のブラウザー技術を使用しています。これらの技術により、作成者は、web ページ上でコンテンツの WYSIWYG 編集や書式設定を行うことができます。
AEM は ExtJS ウィジェットライブラリを使用しています。このライブラリは、高度に洗練されたユーザーインターフェイス要素を提供するものであり、すべての重要なブラウザーで機能し、デスクトップグレードの UI エクスペリエンスを作成できます。
これらのウィジェットは AEM に組み込まれており、AEM 自体でも使用されていますが、AEM で作成した任意の web サイトでも使用できます。
AEM で使用可能なすべてのウィジェットについて詳しくは、ウィジェット API ドキュメントまたは既存の xtype のリストを参照してください。また、ExtJS フレームワークを所有している Sencha のサイトには、ExtJS フレームワークの使用方法の例が多数掲載されています。
このページでは、ウィジェットの使用方法と拡張方法に関するインサイトを提供します。まず、ページにクライアントサイドコードを含める方法を説明します。次に、いくつかのコンポーネントの例を使用して、基本的な使用と拡張について説明します。これらのコンポーネントは、Package Share の Using ExtJS Widgets というパッケージにあります。
このパッケージには、次の例が含まれています。
- すぐに使用できるウィジェットで作成した基本ダイアログ。
- すぐに使用できるウィジェットとカスタマイズされた Javascript ロジックで作成した動的ダイアログ。
- カスタムウィジェットを基にしたダイアログ。
- 特定のパスの下に JCR ツリーを表示するツリーパネル。
- 表形式でデータを表示するグリッドパネル。
クライアントサイドのコードをページに含める including-the-client-sided-code-in-a-page
クライアントサイドの JavaScript とスタイルシートのコードをクライアントライブラリに配置します。
クライアントライブラリを作成するには:
-
/apps/<project>
の下にノードを作成し、次のプロパティを設定します。- name="clientlib"
- jcr:mixinTypes="[mix:lockable]"
- jcr:primaryType="cq:ClientLibraryFolder"
- sling:resourceType="widgets/clientlib"
- categories="[<category-name>]"
- dependencies="[cq.widgets]"
Note: <category-name> is the name of the custom library (for example, "cq.extjstraining") and is used to include the library on the page.
-
clientlib
の下にcss
フォルダーとjs
フォルダー(nt:folder)を作成します。 -
clientlib
の下にcss.txt
ファイルとjs.txt
ファイル(nt:file)を作成します。これらの .txt ファイルには、ライブラリに組み込むファイルを記述します。 -
js.txt
を編集します。このファイルは、先頭に「#base=js
」を指定し、その後に CQ クライアントライブラリサービスによって集約されるファイルのリストを指定する必要があります。以下に例を示します。code language-none #base=js components.js exercises.js CustomWidget.js CustomBrowseField.js InsertTextPlugin.js
-
css.txt
を編集します。このファイルは、先頭に「#base=css
」を指定し、その後に CQ クライアントライブラリサービスによって集約されるファイルのリストを指定する必要があります。以下に例を示します。code language-none #base=css components.css
-
js
フォルダーの下に、ライブラリに属する JavaScript ファイルを配置します。 -
css
フォルダーの下に、.css
ファイルと、css ファイルが使用するリソース(my_icon.png
など)を配置します。
ページコンポーネント jsp にクライアントライブラリを組み込むには:
-
JavaScript コードとスタイルシートの両方を組み込むには:
<ui:includeClientLib categories="<category-name1>, <category-name2>, ..."/>
<category-nameX>
はクライアントサイドのライブラリの名前です。 -
JavaScript コードのみを組み込むには:
<ui:includeClientLib js="<category-name>"/>
詳しくは、<ui:includeClientLib> タグの説明を参照してください。
クライアントライブラリは、オーサーモードでしか使用できず、パブリッシュモードでは除外する必要が生じる場合があります。これを行うには、次のように設定します。
if (WCMMode.fromRequest(request) != WCMMode.DISABLED) {
%><ui:includeClientLib categories="cq.collab.blog"/><%
}
サンプルの概要 getting-started-with-the-samples
このページのチュートリアルに従うには、Using ExtJS Widgets というパッケージをローカル AEM インスタンスにインストールして、コンポーネントを組み込むサンプルページを作成します。これを行うには、次の手順を実行します。
- AEM インスタンスで、Package Share から Using ExtJS Widgets (v01) というパッケージをダウンロードしてインストールします。リポジトリの
/apps
の下にextjstraining
という名前のプロジェクトが作成されます。 - スクリプト(js)とスタイルシート(css)を含むクライアントライブラリを、Geometrixx ページ jsp の head タグに含めます。サンプルコンポーネントを Geometrixx ブランチの新しいページに含めることになります。
CRXDE Lite で/apps/geometrixx/components/page/headlibs.jsp
ファイルを開き、cq.extjstraining
カテゴリを既存の<ui:includeClientLib>
タグに次のように追加します。%><ui:includeClientLib categories="apps.geometrixx-main, cq.extjstraining"/><%
/content/geometrixx/en/products
の下にある Geometrixx ブランチに新しいページを作成し、Using ExtJS Widgets という名前を付けます。- デザインモードに切り替え、Using ExtJS Widgets という名前のグループのすべてのコンポーネントを Geometrixx のデザインに追加します。
- 編集モードに戻ります。サイドキックで Using ExtJS Widgets グループのコンポーネントが使用可能になります。
基本ダイアログ basic-dialogs
通常、ダイアログはコンテンツの編集に使用されますが、情報の表示も可能です。完全なダイアログを簡単に表示するには、JSON 形式の表現にアクセスします。これを行うには、ブラウザーで次のように指定します。
https://localhost:4502/<path-to-dialog>.-1.json
サイドキックにある Using ExtJS Widgets グループの最初のコンポーネントは、1. ダイアログの基本 という名前で、4 つの基本ダイアログが入っています。これらのダイアログは、すぐに使用できるウィジェットで作成されており、カスタマイズした Javascript ロジックは含まれていません。ダイアログは、/apps/extjstraining/components/dialogbasics
の下に保存されています。基本的なダイアログを次に示します。
- フルダイアログ(
full
ノード):3 つのタブを持つウィンドウが表示されます。各タブには、2 つのテキストフィールドがあります。 - 単一パネルダイアログ(
singlepanel
ノード):1 つのタブを持つウィンドウが表示されます。このタブには、2 つのテキストフィールドがあります。 - 複数パネルダイアログ(
multipanel
ノード):表示内容はフルダイアログと同じですが、ダイアログの作成の仕方が異なります。 - Design ダイアログ(
design
ノード):2 つのタブを持つウィンドウが表示されます。最初のタブには、テキストフィールド、ドロップダウンメニューおよび折りたたみ可能なテキスト領域があります。2 番目のタブには、4 つのテキストフィールドを含むフィールドセットと、2 つのテキストフィールドを含む折りたたみ可能なフィールドセットがあります。
次の手順に従って、1. ダイアログの基本 コンポーネントをサンプルページに組み込みます。
- 1 を追加します。Dialog Basics コンポーネントを サイドキック の「ExtJS ウィジェットの使用」タブからサンプルページに追加します。
- このコンポーネントには、タイトル、テキスト、プロパティ リンクが表示されます。リンクを選択すると、リポジトリに保存されている段落のプロパティが表示されます。リンクをもう一度クリックすると、プロパティが非表示になります。
このコンポーネントは、次のように表示されます。
例 1:フルダイアログ example-full-dialog
Full ダイアログには、3 つのタブを持つウィンドウが表示されます。各タブには、2 つのテキストフィールドがあります。これは、ダイアログの基本 コンポーネントのデフォルトダイアログです。特性は次のとおりです。
- ノード(node type =
cq:Dialog
、xtype =[dialog](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#dialog)
)によって定義されます。 - タブ(node type =
cq:Panel
)を 3 つを表示します。 - 各タブには、テキストフィールドが 2 つあります(node type =
cq:Widget
、xtype =[textfield](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#textfield)
)。 - ノードによって定義されます。
/apps/extjstraining/components/dialogbasics/full
- 次をリクエストすることにより、JSON 形式でレンダリングされます。
https://localhost:4502/apps/extjstraining/components/dialogbasics/full.-1.json
ダイアログが次のように表示されます。
例 2:単一パネルダイアログ example-single-panel-dialog
単一パネル ダイアログには、1 つのタブを持つウィンドウが表示されます。このタブには、2 つのテキストフィールドがあります。特性は次のとおりです。
- タブ(node type =
cq:Dialog
、xtype =[panel](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#panel)
)を 1 つ表示します。 - このタブには、2 つのテキストフィールド(node type =
cq:Widget
、xtype =[textfield](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#textfield)
)があります。 - ノードによって定義されます。
/apps/extjstraining/components/dialogbasics/singlepanel
- 次をリクエストすることにより、JSON 形式でレンダリングされます。
https://localhost:4502/apps/extjstraining/components/dialogbasics/singlepanel.-1.json
- フルダイアログ の利点の一つは、必要な設定が少ないことです。
- 推奨される用途:情報を表示するだけの、またはフィールドが数個しかない単純なダイアログ。
単一パネルダイアログを使用するには:
-
ダイアログの基本 コンポーネントのダイアログを 単一パネル ダイアログに置き換えます。
- CRXDE Lite で、次のノードを削除します。
/apps/extjstraining/components/dialogbasics/dialog
- 「すべて保存」をクリックして変更を保存します。
- 次のノードをコピーします。
/apps/extjstraining/components/dialogbasics/singlepanel
- コピーしたノードを次に貼り付けます。
/apps/extjstraining/components/dialogbasics
- ノード
/apps/extjstraining/components/dialogbasics/Copy of singlepanel
を選択して、名前をdialog
に変更します。
- CRXDE Lite で、次のノードを削除します。
-
コンポーネントを編集します。次のようなダイアログが表示されます。
例 3:複数パネルダイアログ example-multi-panel-dialog
複数パネルl ダイアログは、フル ダイアログと同じ表示内容ですが、ダイアログの作成の仕方が異なります。特性は次のとおりです。
- ノード(node type =
cq:Dialog
、xtype =[tabpanel](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#tabpanel)
)によって定義されます。 - タブ(node type =
cq:Panel
)を 3 つを表示します。 - 各タブには、テキストフィールドが 2 つあります(node type =
cq:Widget
、xtype =[textfield](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#textfield)
)。 - ノードによって定義されます。
/apps/extjstraining/components/dialogbasics/multipanel
- 次をリクエストすることにより、JSON 形式でレンダリングされます。
https://localhost:4502/apps/extjstraining/components/dialogbasics/multipanel.-1.json
- フルダイアログ より有利な点は、構造が簡単なことです。
- 複数のタブを持つダイアログでの使用を推奨します。
複数パネルダイアログを使用するには:
- ダイアログの基本 コンポーネントのダイアログを 複数パネル ダイアログに置き換えます。
例 2:単一パネルダイアログで説明している手順に従います。 - コンポーネントを編集します。次のようなダイアログが表示されます。
例 4:リッチダイアログ example-rich-dialog
リッチ ダイアログには、2 つのタブを持つウィンドウが表示されます。最初のタブには、テキストフィールド、ドロップダウンメニューおよび折りたたみ可能なテキスト領域があります。2 番目のタブには、4 つのテキストフィールドを含むフィールドセットと、2 つのテキストフィールドを含む折りたたみ可能なフィールドセットがあります。特性は次のとおりです。
- ノード(node type =
cq:Dialog
、xtype =[dialog](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#dialog)
)によって定義されます。 - 3 つのタブ(node type =
cq:Panel
)が表示されます。 - 最初のタブには、
[textfield](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#textfield)
を含む[dialogfieldset](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#dialogfieldset)
ウィジェットと 3 つのオプションを含む[selection](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#selection)
ウィジェットに加え、[textarea](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#textarea)
ウィジェットを含む折りたたみ可能な[dialogfieldset](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#dialogfieldset)
があります。 - 2 つ目のタブには、4 つの
[textfield](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#textfield)
ウィジェットを含む[dialogfieldset](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#dialogfieldset)
ウィジェットと、2 つの[textfield](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#textfield)
ウィジェットを含む折りたたみ可能なdialogfieldset
があります。 - ノードによって定義されます。
/apps/extjstraining/components/dialogbasics/rich
- 次をリクエストすることにより、JSON 形式でレンダリングされます。
https://localhost:4502/apps/extjstraining/components/dialogbasics/rich.-1.json
リッチ ダイアログを使用するには:
- ダイアログの基本 コンポーネントのダイアログを リッチ ダイアログに置き換えます。
例 2:単一パネルダイアログで説明している手順に従います。 - コンポーネントを編集します。次のようなダイアログが表示されます。
動的ダイアログ dynamic-dialogs
サイドキックにある Using ExtJS Widgets グループの 2 番目のコンポーネントは、2. Dynamic Dialogs という名前で、3 つの動的ダイアログが含まれています。これらのダイアログは、すぐに使用できるウィジェットと、カスタマイズされた Javascript ロジック から作成されています。ダイアログは、/apps/extjstraining/components/dynamicdialogs
の下に保存されます。動的ダイアログは次のようになります。
- タブ切り換えダイアログ(
switchtabs
ノード):2 つのタブを持つウィンドウが表示されます。最初のタブでは、ラジオボタンにより、3 つのオプションのいずれかを選択できます。オプションを選択すると、選択したオプションに関連付けられているタブが表示されます。2 番目のタブには、2 つのテキストフィールドがあります。 - 任意ダイアログ(
arbitrary
ノード)。タブが 1 つあるウィンドウが表示されます。このタブには、フィールドが 2 つあります。一つは、アセットをドロップまたはアップロードするためのフィールド、もう一つは、コンポーネントを含むページに関する情報とアセットに関する情報(アセットが参照されている場合)を表示するフィールドです。 - フィールド切り換えダイアログ(
togglefield
ノード):タブが 1 つあるウィンドウが表示されます。このタブには、チェックボックスが 1 つあります。このチェックボックスを選択すると、テキストフィールドを 2 つ含むフィールドセットが表示されます。
2. 動的ダイアログ コンポーネントをサンプルページに組み込むには:
- 2. Dynamic Dialogs コンポーネントをサンプルページに追加します(サイドキック にある「Using ExtJS Widgets」タブから)。
- このコンポーネントには、タイトル、テキスト、プロパティ リンクが表示されます。リンクを選択すると、リポジトリに保存されている段落のプロパティが表示されます。リンクをもう一度クリックすると、プロパティが非表示になります。
このコンポーネントは、次のように表示されます。
例 1:Switch Tabs ダイアログ example-switch-tabs-dialog
Switch Tabs ダイアログには、2 つのタブを持つウィンドウが表示されます。最初のタブでは、ラジオボタンにより、3 つのオプションのいずれかを選択できます。オプションを選択すると、選択したオプションに関連付けられているタブが表示されます。2 番目のタブには、2 つのテキストフィールドがあります。
このダイアログの主な特徴を次に示します。
- ノード(node type =
cq:Dialog
、xtype =[dialog](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#dialog)
)によって定義されます。 - タブが 2 つ表示されます(node type =
cq:Panel
)。1 つ目は選択タブです。2 つ目のタブは、1 つ目のタブで 3 つのオプションのどれを選択したかによって変わります。 - オプションタブが 3 つあります(node type =
cq:Panel
)。それぞれのオプションタブには、2 つのテキストフィールドがあります(node type =cq:Widget
、xtype =[textfield](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#textfield)
)。オプションタブは、同時に 1 つしか表示されません。 - 次の場所にある
switchtabs
ノードによって定義されます。/apps/extjstraining/components/dynamicdialogs/switchtabs
- 次をリクエストすることにより、JSON 形式でレンダリングされます。
https://localhost:4502/apps/extjstraining/components/dynamicdialogs/switchtabs.-1.json
ロジックは、次のようにイベントリスナーと JavaScript コードによって実装されています。
- ダイアログノードには、ダイアログを表示する前にすべてのオプションタブを非表示にする「
beforeshow
」リスナーがあります。beforeshow="function(dialog){Ejst.x2.manageTabs(dialog.items.get(0));}"
dialog.items.get(0)
は、selection パネルと 3 つのオプションパネルを含んだtabpanel
を取得します。 Ejst.x2
オブジェクトは、次の場所にあるexercises.js
ファイルで定義します。/apps/extjstraining/clientlib/js/exercises.js
Ejst.x2.manageTabs()
メソッドでindex
の値を -1 にすると、すべてのオプションタブが非表示になります(i は 1 から 3 です)。- selection タブにはリスナーが 2 つあります。ダイアログの読み込み(「
loadcontent
」イベント)時に選択済みのタブを表示するリスナーと、selection の変更(「selectionchanged
」イベント)時に選択済みのタブを表示するリスナーです。loadcontent="function(field,rec,path){Ejst.x2.showTab(field);}"
selectionchanged="function(field,value){Ejst.x2.showTab(field);}"
Ejst.x2.showTab()
メソッドの場合、field.findParentByType('tabpanel')
は、すべてのタブを含んだtabpanel
を取得します(field
は selection ウィジェットを表します)。field.getValue()
は、selection の値(例:tab2)を取得します。Ejst.x2.manageTabs()
は選択したタブを表示します。- 各オプションタブには、「
render
」イベントでタブを非表示にするリスナーがあります。render="function(tab){Ejst.x2.hideTab(tab);}"
Ejst.x2.hideTab()
メソッドの場合、tabPanel
は、すべてのタブを含んだtabpanel
です。index
はオプションタブのインデックスですtabPanel.hideTabStripItem(index)
はタブを非表示にします
次のように表示されます。
例 2:任意ダイアログ example-arbitrary-dialog
ほとんどの場合、ダイアログには、基になるコンポーネントからのコンテンツが表示されます。ここで説明する 任意 ダイアログは、別のコンポーネントからコンテンツを取り込みます。
Arbitrary ダイアログには、1 つのタブを持つウィンドウが表示されます。このタブには、2 つのフィールドがあります。アセットをドロップまたはアップロードするためのフィールドと、コンポーネントを含んだページに関する情報とアセットに関する情報(アセットが参照されている場合)を表示するフィールドです。
このダイアログの主な特徴を次に示します。
- ノード(node type =
cq:Dialog
、xtype =[dialog](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#dialog)
)によって定義されます。 - 1 つの
tabpanel
ウィジェット(node type =cq:Widget
、xtype =[tabpanel](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#tabpanel)
)と 1 つのパネル(node type =cq:Panel
)を表示します。 - パネルには、smartfile ウィジェット(node type =
cq:Widget
、xtype =[smartfile](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#smartfile)
)と ownerdraw ウィジェット(node type =cq:Widget
、xtype =[ownerdraw](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#ownerdraw)
)があります。 - 次の場所にある
arbitrary
ノードによって定義されます。/apps/extjstraining/components/dynamicdialogs/arbitrary
- 次をリクエストすることにより、JSON 形式でレンダリングされます。
https://localhost:4502/apps/extjstraining/components/dynamicdialogs/arbitrary.-1.json
ロジックは、次のようにイベントリスナーと JavaScript コードによって実装されています。
ownerdraw
ウィジェットには、コンポーネントを含んだページに関する情報を表示する「loadcontent
」リスナーがあります。つまり、コンテンツの読み込み時に smartfile ウィジェットで参照されるアセットです。loadcontent="function(field,rec,path){Ejst.x2.showInfo(field,rec,path);}"
field
はownerdraw
オブジェクトで設定されます。path
は、コンポーネントのコンテンツパス(例:/content/geometrixx/en/products/triangle/ui-tutorial/jcr:content/par/dynamicdialogs
)で設定されます。Ejst.x2
オブジェクトは、次の場所にあるexercises.js
ファイルで定義されます。/apps/extjstraining/clientlib/js/exercises.js
Ejst.x2.showInfo()
メソッドの場合、pagePath
は、コンポーネントを含んだページのパスです。pageInfo
は、ページプロパティを JSON 形式で表します。reference
は、参照されるアセットのパスです。metadata
は、アセットのメタデータを JSON 形式で表します。ownerdraw.getEl().update(html);
は、作成した html をダイアログに表示
任意 ダイアログを使用するには:
- 動的ダイアログ コンポーネントのダイアログを 任意の ダイアログに置き換えます。
例 2:単一パネルダイアログで説明している手順に従います。 - コンポーネントを編集します。次のようなダイアログが表示されます。
例 3:Toggle Fields ダイアログ example-toggle-fields-dialog
Toggle Fields ダイアログには、1 つのタブを持つウィンドウが表示されます。このタブには、チェックボックスが 1 つあります。このチェックボックスを選択すると、テキストフィールドを 2 つ含むフィールドセットが表示されます。
このダイアログの主な特徴を次に示します。
- ノード(node type =
cq:Dialog
、xtype =[dialog](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#dialog)
)によって定義されます。 - 1 つの
tabpanel
ウィジェット(node type =cq:Widget
、xtype =[tabpanel](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#textpanel)
)と 1 つのパネル(node type =cq:Panel
)を表示します。 - このパネルには、selection/checkbox ウィジェット(node type =
cq:Widget
、xtype =[selection](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#selection)
、type =[checkbox](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#checkbox)
)と、2 つの textfield ウィジェット(node type =cq:Widget
、xtype =[textfield](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#textfield)
)を持つ折り畳み可能な dialogfieldset ウィジェット(node type =cq:Widget
、xtype =[dialogfieldset](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#dialogfieldset)
)があります。後者はデフォルトで非表示になっています。 - 次の場所にある
togglefields
ノードによって定義されます。/apps/extjstraining/components/dynamicdialogs/togglefields
- 次をリクエストすることにより、JSON 形式でレンダリングされます。
https://localhost:4502/apps/extjstraining/components/dynamicdialogs/togglefields.-1.json
ロジックは、次のようにイベントリスナーと JavaScript コードによって実装されています。
- selection タブにはリスナーが 2 つあります。コンテンツの読み込み(「
loadcontent
」イベント)時に dialogfieldset を表示するリスナーと、selection の変更(「selectionchanged
」イベント)時に dialogfieldset を表示するリスナーです。loadcontent="function(field,rec,path){Ejst.x2.toggleFieldSet(field);}"
selectionchanged="function(field,value){Ejst.x2.toggleFieldSet(field);}"
Ejst.x2
オブジェクトは、次の場所にあるexercises.js
ファイルで定義します。/apps/extjstraining/clientlib/js/exercises.js
Ejst.x2.toggleFieldSet()
メソッドの場合、box
は selection オブジェクトです。panel
は、selection ウィジェットと dialogfieldset ウィジェットを含んだパネルです。fieldSet
は dialogfieldset オブジェクトです。show
は selection の値(true または false)です。
「show
」に基づいて dialogfieldset が表示されているかどうかが決まります。
Toggle Fields ダイアログを使用するには、次の手順を実行します。
- 動的ダイアログ コンポーネントのダイアログを フィールドを切り換え ダイアログに置き換えます。
例 2:単一パネルダイアログで説明している手順に従います。 - コンポーネントを編集します。次のようなダイアログが表示されます。
カスタムウィジェット custom-widgets
AEM 付属のすぐに使用できるウィジェットは、ほとんどのユースケースに対応しています。ただし、プロジェクト固有の要件に対応するために、カスタムウィジェットの作成が必要になることもあります。カスタムウィジェットは、既存のウィジェットを拡張して作成できます。こうしたカスタマイズを行う際の手助けとなるように、Using ExtJS Widgets
パッケージには、3 つの異なるカスタムウィジェットを使用する 3 つのダイアログが含まれています。
- 複数フィールドダイアログ(
multifield
ノード)は、タブが 1 つあるウィンドウを表示します。このタブには、カスタマイズされた multifield ウィジェットがあり、2 つのオプションを選択できるドロップダウンメニューとテキストフィールドという 2 つのフィールドが含まれています。このタブは、デフォルトのmultifield
ウィジェット(テキストフィールドのみを持つ)に基づいているので、multifield
ウィジェットの機能をすべて使用できます。 - ツリー参照ダイアログ(
treebrowse
ノード)。このダイアログに表示されるウィンドウには、パス参照ウィジェットを含む 1 つのタブがあります。矢印をクリックすると、ウィンドウが開き、階層を参照しながら項目を選択できます。項目を選択すると、そのパスがパスフィールドに追加され、ダイアログを閉じても保持され続けます。 - リッチテキストエディタープラグインベースのダイアログ(
rteplugin
ノード)。リッチテキストエディターにカスタムボタンを追加したもので、メインテキストにカスタムテキストを挿入できます。richtext
ウィジェット(RTE)と、RTE プラグインメカニズムを通じて追加されたカスタム機能から構成されています。
カスタムウィジェットとプラグインは、3. Custom Widgets(Using ExtJS Widgets パッケージに属する)という名前のコンポーネントに含まれています。このコンポーネントをサンプルページに組み込むには:
- 3. Custom Widgets コンポーネントを、サイドキック にある「Using ExtJS Widgets」タブからサンプルページに追加します。
- このコンポーネントには、タイトルとテキストが表示されます。また、PROPERTIES リンクをクリックすると、リポジトリに格納されている段落のプロパティも表示されます。もう一度クリックすると、プロパティが非表示になります。
このコンポーネントは、次のように表示されます。
例 1:Custom Multifield ウィジェット example-custom-multifield-widget
Custom Multifield ウィジェットベースのダイアログには、1 つのタブを持つウィンドウが表示されます。このタブには、カスタマイズされた multifield ウィジェットがあります。標準の multifield ウィジェットには 1 つのフィールドがありますが、このウィジェットには、2 つのオプションを選択できるドロップダウンメニューとテキストフィールドという 2 つのフィールドがあります。
Custom Multifield ウィジェットベースのダイアログ:
-
ノードで定義されます(node type =
cq:Dialog
、xtype =[dialog](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#dialog)
)。 -
パネル(node type =
cq:Widget
、xtype =[panel](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#panel)
)を含んだ 1 つのtabpanel
ウィジェット(node type =cq:Widget
、xtype =[tabpanel](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#tabpanel)
)を表示します。 -
このパネルには、
multifield
ウィジェット(node type =cq:Widget
、xtype =[multifield](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#multifield)
)があります。 -
multifield
ウィジェットには、カスタム xtype 「ejstcustom
」に基づく fieldconfig(node type =nt:unstructured
、xtype =ejstcustom
、optionsProvider =Ejst.x3.provideOptions
)があります。- 「
fieldconfig
」は、[CQ.form.MultiField](https://developer.adobe.com/experience-manager/reference-materials/6-5/widgets-api/index.html?class=CQ.form.MultiField)
オブジェクトの設定オプションです。 - 「
optionsProvider
」は、ejstcustom
ウィジェットの設定です。Ejst.x3.provideOptions
メソッドで設定されます。このメソッドは、次の場所にあるexercises.js
で定義されます。/apps/extjstraining/clientlib/js/exercises.js
2 つのオプションを返します。
- 「
-
次の場所にある
multifield
ノードによって定義されます。/apps/extjstraining/components/customwidgets/multifield
-
次をリクエストすることにより、JSON 形式でレンダリングされます。
https://localhost:4502/apps/extjstraining/components/customwidgets/multifield.-1.json
カスタム multifield
ウィジェット(xtype = ejstcustom
):
-
Ejst.CustomWidget
という名前の JavaScript オブジェクトです。 -
次の場所にある
CustomWidget.js
JavaScript ファイルで定義されます。/apps/extjstraining/clientlib/js/CustomWidget.js
-
[CQ.form.CompositeField](https://developer.adobe.com/experience-manager/reference-materials/6-5/widgets-api/index.html?class=CQ.form.CompositeField)
ウィジェットを拡張します。 -
hiddenField
(テキストフィールド)、allowField
(コンボボックス)およびotherField
(テキストフィールド)という 3 つのフィールドがあります。 -
CQ.Ext.Component#initComponent
を上書きして 3 つのフィールドを追加します。allowField
は「select」型のオブジェクト CQ.form.Selection です。optionsProvider は、ダイアログで定義された CustomWidget の optionsProvider 設定でインスタンス化される Selection オブジェクトの設定です。otherField
は、CQ.Ext.form.TextField オブジェクトです。
-
CQ.form.CompositeField のメソッド
setValue
、getValue
、getRawValue
を上書きして、次の形式の CustomWidget の値を設定および取得します。<allowField value>/<otherField value>, for example: 'Bla1/hello'
。 -
自分自身を「
ejstcustom
」 xtype として登録します。CQ.Ext.reg('ejstcustom', Ejst.CustomWidget);
Custom Multifield ウィジェットベースのダイアログは、次のように表示されます。
例 2:カスタム Treebrowse
ウィジェット example-custom-treebrowse-widget
カスタム Treebrowse
ウィジェットベースのダイアログには、カスタムパスの参照ウィジェットを含む 1 つのタブを持つウィンドウが表示されます。矢印を選択すると、ウィンドウが開き、階層を参照して項目を選択できます。項目を選択すると、そのパスがパスフィールドに追加され、ダイアログを閉じても保持され続けます。
カスタム treebrowse
ダイアログ:
- ノードによって定義されます(node type =
cq:Dialog
、xtype =[dialog](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#dialog)
)。 - パネル(node type =
cq:Widget
、xtype =[panel](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#panel)
)を含む 1 つのtabpanel
ウィジェット(node type =cq:Widget
、xtype =[tabpanel](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#tabpanel)
)を表示します。 - このパネルには、カスタムウィジェット(node type =
cq:Widget
、xtype =ejstbrowse
)があります。 - 次の場所にある
treebrowse
ノードによって定義されます。/apps/extjstraining/components/customwidgets/treebrowse
- 次をリクエストすることにより、JSON 形式でレンダリングされます。
https://localhost:4502/apps/extjstraining/components/customwidgets/treebrowse.-1.json
カスタム treebrowse ウィジェット(xtype = ejstbrowse
):
-
Ejst.CustomWidget
という名前の JavaScript オブジェクトです -
次の場所にある
CustomBrowseField.js
JavaScript ファイルに定義されています。/apps/extjstraining/clientlib/js/CustomBrowseField.js
-
[CQ.Ext.form.TriggerField](https://developer.adobe.com/experience-manager/reference-materials/6-5/widgets-api/index.html?class=CQ.Ext.form.TriggerField)
を拡張します。 -
browseWindow
という名前の参照ウィンドウを定義します。 -
矢印がクリックされたときに参照ウィンドウを表示するように
[CQ.Ext.form.TriggerField](https://developer.adobe.com/experience-manager/reference-materials/6-5/widgets-api/index.html?class=CQ.Ext.form.TriggerField)#onTriggerClick
を上書きします。 -
CQ.Ext.tree.TreePanel オブジェクトを定義します。
- このオブジェクトのデータを取得するには、
/bin/wcm/siteadmin/tree.json
に登録されたサーブレットを呼び出します。 - このオブジェクトのルートは、「
apps/extjstraining
」です。
- このオブジェクトのデータを取得するには、
-
window
オブジェクト([CQ.Ext.Window](https://developer.adobe.com/experience-manager/reference-materials/6-5/widgets-api/index.html?class=CQ.Ext.Window)
)を定義します。- 事前定義済みのパネルに基づいています。
- 選択されたパスの値を設定し、パネルを非表示にする「OK」ボタンを組み込みます。
-
ウィンドウは、「パス」フィールドの下に固定されます。
-
選択されたパスは、
show
イベントが発生したときに、参照フィールドからウィンドウに渡されます。 -
それ自体を「
ejstbrowse
」xtype として登録します。CQ.Ext.reg('ejstbrowse', Ejst.CustomBrowseField);
カスタム Treebrowse ウィジェットベースのダイアログを使用するには:
- カスタムウィジェット コンポーネントのダイアログを カスタム Treebrowse ダイアログに置き換えます。
例 2:Single Panel ダイアログで説明されている手順に従います。 - コンポーネントを編集します。次のようなダイアログが表示されます。
例 3:リッチテキストエディター(RTE)プラグイン example-rich-text-editor-rte-plug-in
リッチテキストエディター(RTE)プラグイン ベースのダイアログは、リッチテキストエディターベースのダイアログで、カスタムテキストを角括弧内に挿入するカスタムボタンが備わっています。カスタムテキストをサーバー側ロジックで解析し、例えば、特定のパスで定義されたテキストを追加することができます(この例では、サーバー側ロジックは実装されていません)。
RTE プラグイン ベースのダイアログ:
- 次の場所にある rteplugin ノードによって定義されます。
/apps/extjstraining/components/customwidgets/rteplugin
- 次を要求することにより、JSON 形式でレンダリングされます。
https://localhost:4502/apps/extjstraining/components/customwidgets/rteplugin.-1.json
rtePlugins
ノードには、プラグインにちなんで命名された子ノードinserttext
(ノードタイプ =nt:unstructured
)があります。このノードには、RTE で使用可能なプラグイン機能を定義するfeatures
という名前のプロパティがあります。
RTE プラグイン:
-
Ejst.InsertTextPlugin
という名前の JavaScript オブジェクトです -
次の場所にある
InsertTextPlugin.js
JavaScript ファイルに定義されています。/apps/extjstraining/clientlib/js/InsertTextPlugin.js
-
[CQ.form.rte.plugins.Plugin](https://developer.adobe.com/experience-manager/reference-materials/6-5/widgets-api/index.html?class=CQ.form.rte.plugins.Plugin)
オブジェクトを拡張します。 -
次のメソッドは、
[CQ.form.rte.plugins.Plugin](https://developer.adobe.com/experience-manager/reference-materials/6-5/widgets-api/index.html?class=CQ.form.rte.plugins.Plugin)
オブジェクトを定義するもので、プラグインの実装時に上書きされます。getFeatures()
は、プラグインによって使用可能になるすべての機能の配列を返します。initializeUI()
は、RTE ツールバーに新しいボタンを追加します。notifyPluginConfig()
は、ボタンにマウスポインターが置かれたときにタイトルとテキストを表示します。execute()
は、ボタンのクリック時に呼び出されるもので、含めるテキストを定義するためのウィンドウを表示するというプラグインのアクションを実行します。
-
insertText()
は、対応するダイアログオブジェクトEjst.InsertTextPlugin.Dialog
(後述)を使用してテキストを挿入します。 -
executeInsertText()
は、ダイアログのapply()
メソッドで呼び出されます。これは「OK」ボタンをクリックしたときにトリガーされます。 -
それ自体を「
inserttext
」プラグインとして登録します。CQ.form.rte.plugins.PluginRegistry.register("inserttext", Ejst.InsertTextPlugin);
-
Ejst.InsertTextPlugin.Dialog
オブジェクトは、プラグインのボタンがクリックされたときに開くダイアログを定義します。このダイアログは、1 つのパネル、1 つのフォーム、1 つのテキストフィールドおよび 2 つのボタン(「OK」と「キャンセル」)から構成されます。
リッチテキストエディター(RTE)プラグイン ベースのダイアログを使用するには:
- カスタムウィジェット コンポーネントのダイアログを リッチテキストエディター(RTE)プラグイン ベースのダイアログに置き換えます。
例 2:Single Panel ダイアログで説明されている手順に従います。 - コンポーネントを編集します。
- 右端のアイコン(4 つの矢印が付いているアイコン)をクリックします。パスを入力して「OK」をクリックします。
パスが角括弧([ ])内に表示されます。 - 「OK」をクリックして、リッチテキストエディタを閉じます。
リッチテキストエディター(RTE)プラグイン ベースのダイアログは次のように表示されます。
Tree Overview tree-overview
すぐに使用できる [CQ.Ext.tree.TreePanel](https://developer.adobe.com/experience-manager/reference-materials/6-5/widgets-api/index.html?class=CQ.Ext.tree.TreePanel)
オブジェクトは、ツリー構造のデータをツリー構造 UI として表示できます。Using ExtJS Widgets パッケージに含まれている Tree Overview コンポーネントを見ると、TreePanel
オブジェクトを使用して特定のパスの下に JCR ツリーを表示する方法がわかります。このウィンドウ自体は、ドッキングすることも、ドッキング解除することもできます。この例の場合、ウィンドウのロジックは、コンポーネント jsp の <script> タグと </script> タグの間に埋め込まれています。
Tree Overview コンポーネントをサンプルページに組み込むには:
-
4. Tree Overview コンポーネントをサンプルページに追加します。これは、サイドキック にある「Using ExtJS Widgets」タブでおこないます。
-
このコンポーネントには、次のものが表示されます。
- タイトルとテキスト
- プロパティ リンク:クリックして、リポジトリに保存されている段落のプロパティを表示します。もう一度クリックすると、プロパティが非表示になります。
- 展開可能なリポジトリのツリー表現を持つフローティングウィンドウ。
このコンポーネントは、次のように表示されます。
Tree Overview コンポーネント:
-
次で定義されます。
/apps/extjstraining/components/treeoverview
-
このダイアログでは、ウィンドウのサイズを設定したり、ウィンドウをドッキングまたはドッキング解除したりできます(詳細は以下を参照)。
コンポーネント jsp:
- リポジトリから幅、高さおよびドッキングされたプロパティを取得します。
- Tree Overview のデータ形式に関するテキストを表示します。
- ウィンドウのロジックをコンポーネント jsp の JavaScript タグの間に埋め込みます。
- 次で定義されます。
apps/extjstraining/components/treeoverview/content.jsp
コンポーネント jsp に埋め込まれた JavaScript コード:
-
ページからツリーウィンドウの取得を試みることにより、
tree
オブジェクトを定義します。 -
ツリーを表示しているウィンドウが存在しない場合は、
treePanel
(CQ.Ext.tree.TreePanel)が作成されます。treePanel
には、ウィンドウの作成に使用されるデータが含まれています。- データは、次で登録されたサーブレットを呼び出すことにより、取得されます。
/bin/wcm/siteadmin/tree.json
-
beforeload
リスナーにより、選択されたノードがロードされます。 -
root
オブジェクトは、パスapps/extjstraining
をツリーのルートとして設定します。 -
tree
([CQ.Ext.Window](https://developer.adobe.com/experience-manager/reference-materials/6-5/widgets-api/index.html?class=CQ.Ext.Window)
)は、事前定義済みのtreePanel
に基づいて設定され、次のように表示されます。tree.show();
-
ウィンドウが存在する場合、ウィンドウは、リポジトリから取得した幅、高さ、ドッキングの各プロパティに基づいて表示されます。
コンポーネントダイアログ:
- ツリー概要ウィンドウのサイズ(幅と高さ)を設定するための 2 つのフィールドとウィンドウをドッキング、ドッキング解除するための 1 つのフィールドを持つ 1つのタブを表示
- ノードによって定義されます(node type =
cq:Dialog
、xtype =[panel](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#panel)
)。 - パネルには、サイズフィールドウィジェット(node type =
cq:Widget
、xtype =[sizefield](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#sizefield)
)と、2 つのオプション(true または false)がある選択ウィジェット(node type =cq:Widget
、xtype =[selection](/docs/experience-manager-65/content/implementing/developing/components/classic-ui-components/xtypes.md#selection)
、type =radio
)があります。 - 次の場所にあるダイアログノードによって定義されます。
/apps/extjstraining/components/treeoverview/dialog
- 次のことを要求することにより、JSON 形式でレンダリングされます。
https://localhost:4502/apps/extjstraining/components/treeoverview/dialog.-1.json
- 次のように表示されます。
グリッドの概要 grid-overview
グリッドパネルは、データを行と列の表形式で表します。これは、次の内容で構成されます。
- ストア:データレコード(行)を保持しているモデル。
- 列モデル:列の構成。
- ビュー:ユーザーインターフェイスが含まれます。
- 選択モデル:選択の動作。
Using ExtJS Widgets パッケージに含まれている Grid Overview コンポーネントを見ると、データを表形式で表示する方法がわかります。
- 例 1 では、静的データを使用しています。
- 例 2 では、リポジトリから取得したデータを使用しています。
Grid Overview コンポーネントをサンプルページに組み込むには:
-
5 を追加します。Grid Overview コンポーネントを、サイドキック の Using ExtJS Widgets タブからサンプルページに追加します。
-
このコンポーネントには、次のものが表示されます。
- タイトルとテキスト
- プロパティ リンク:クリックして、リポジトリに保存されている段落のプロパティを表示します。もう一度クリックすると、プロパティが非表示になります。
- 表形式のデータを含むフローティングウィンドウ。
このコンポーネントは、次のように表示されます。
例 1:デフォルトのグリッド example-default-grid
標準バージョンでは、Grid Overview コンポーネントは、静的データが含まれるウィンドウを表形式で表示します。この例では、ロジックは次の 2 つの方法でコンポーネント jsp に埋め込まれます。
- 一般的なロジックは、<script></script> タグの間に定義されます。
- 特定のロジックは、別の .js ファイルで使用でき、jsp 内でリンクされます。この設定により、必要な <script> タグをコメントすることで、2 つのロジック(static/dynamic)を簡単に切り替えることができます。
Grid Overview コンポーネント:
- 次で定義されます。
/apps/extjstraining/components/gridoverview
- このダイアログでは、ウィンドウのサイズを設定したり、ウィンドウをドッキングまたはドッキング解除したりできます。
コンポーネント jsp:
- リポジトリから幅、高さおよびドッキングされたプロパティを取得します。
- グリッド概要のデータ形式の紹介としてテキストを表示します。
- GridPanel オブジェクトを定義する JavaScript コードを参照します。
<script type="text/javascript" src="/apps/extjstraining/components/gridoverview/defaultgrid.js"></script>
defaultgrid.js
では、一部の静的データを GridPanel オブジェクトのベースとして定義します。 - GridPanel オブジェクトを使用して Window オブジェクトを定義する JavaScript タグの間に JavaScript コードを埋め込みます。
- 次で定義されます。
apps/extjstraining/components/gridoverview/content.jsp
コンポーネント jsp に埋め込まれた JavaScript コード:
- ページからウィンドウコンポーネントの取得を試みることにより、
grid
オブジェクトを定義します。var grid = CQ.Ext.getCmp("<%= node.getName() %>-grid");
grid
が存在しない場合、CQ.Ext.grid.GridPanel オブジェクト(gridPanel
)は、getGridPanel()
メソッド(以下を参照)を呼び出すことにより定義されます。このメソッドは、defaultgrid.js
で定義されます。grid
は、事前定義済みの GridPanel に基づく[CQ.Ext.Window](https://developer.adobe.com/experience-manager/reference-materials/6-5/widgets-api/index.html?class=CQ.Ext.Window)
オブジェクトであり、次のように表示されます:grid.show();
grid
が存在する場合、リポジトリから取得した幅、高さ、ドッキングされたプロパティに基づいて表示されます。
コンポーネント jsp で参照される JavaScript ファイル(defaultgrid.js
)には、getGridPanel()
メソッドが定義されています。このメソッドは、JSP に埋め込まれたスクリプトによって呼び出され、静的データに基づいて [CQ.Ext.grid.GridPanel](https://developer.adobe.com/experience-manager/reference-materials/6-5/widgets-api/index.html?class=CQ.Ext.grid.GridPanel)
オブジェクトを返します。ロジックを次に示します。
-
myData
は、静的データの配列で、5 列 x 4 行の表として書式設定されています。 -
store
は、myData
を使用するCQ.Ext.data.Store
オブジェクトです。 -
store
は、メモリにロードされます。store.load();
-
gridPanel
は、store
を使用する[CQ.Ext.grid.GridPanel](https://developer.adobe.com/experience-manager/reference-materials/6-5/widgets-api/index.html?class=CQ.Ext.grid.GridPanel)
オブジェクトです。- 列幅は常に再調整されます。
forceFit: true
- 選択できる行は一度に 1 つのみです。
singleSelect:true
- 列幅は常に再調整されます。
例 2:参照検索グリッド example-reference-search-grid
パッケージをインストールすると、Grid Overview コンポーネントの content.jsp
により、静的データに基づくグリッドが表示されます。次の特徴を持つグリッドを表示するようにコンポーネントを変更できます。
- 3 列ある。
- サーブレットを呼び出すことにより、リポジトリから取得したデータを基礎にする。
- 最後の列のセルを編集できます。この値は、先頭の列に表示されたパスで定義されたノードの下にある
test
プロパティに保持されます。
前の節で説明したように、ウインドウオブジェクトは、/apps/extjstraining/components/gridoverview/defaultgrid.js
の defaultgrid.js
ファイルで定義された getGridPanel()
メソッドを呼び出して、その [CQ.Ext.grid.GridPanel](https://developer.adobe.com/experience-manager/reference-materials/6-5/widgets-api/index.html?class=CQ.Ext.grid.GridPanel)
オブジェクトを取得します。Grid Overview コンポーネントでは、getGridPanel()
メソッドを別の方法で実装することができます。これは、/apps/extjstraining/components/gridoverview/referencesearch.js
にある referencesearch.js
ファイルで定義されます。コンポーネント jsp で参照される .js ファイルを切り替えることにより、グリッドは、リポジトリから取得したデータに基づいています。
コンポーネント jsp で参照される .js ファイルを切り替えるには、次の手順を行います。
- CRXDE Lite で、コンポーネントの
content.jsp
ファイル内にあるdefaultgrid.js
ファイルを含む行を、次のようにコメント化します。<!-- script type="text/javascript" src="/apps/extjstraining/components/gridoverview/defaultgrid.js"></script-->
referencesearch.js
ファイルを含む行のコメント化を、次のように解除します。<script type="text/javascript" src="/apps/extjstraining/components/gridoverview/referencesearch.js"></script>
- 変更内容を保存します。
- サンプルページを更新します。
このコンポーネントは、次のように表示されます。
コンポーネント jsp で参照されている JavaScript コード(referencesearch.js
)は、コンポーネント jsp から呼び出される getGridPanel()
メソッドを定義しており、リポジトリから動的に取得されるデータに基づいて [CQ.Ext.grid.GridPanel](https://developer.adobe.com/experience-manager/reference-materials/6-5/widgets-api/index.html?class=CQ.Ext.grid.GridPanel)
オブジェクトを返します。referencesearch.js
のロジックでは、一部の動的データが GridPanel の基礎として定義されています。
-
reader
は、JSON 形式のサーブレット応答を読み取る 3 列用の[CQ.Ext.data.JsonReader](https://developer.adobe.com/experience-manager/reference-materials/6-5/widgets-api/index.html?class=CQ.Ext.data.JsonReader)
オブジェクトです。 -
cm
は、3 列用の[CQ.Ext.grid.ColumnModel](https://developer.adobe.com/experience-manager/reference-materials/6-5/widgets-api/index.html?class=CQ.Ext.grid.ColumnModel)
オブジェクトです。
「テスト」列のセルは、エディターで定義されているので編集することが可能です。editor: new [CQ.Ext.form.TextField](https://developer.adobe.com/experience-manager/reference-materials/6-5/widgets-api/index.html?class=CQ.Ext.form.TextField)({})
-
列は並べ替え可能です。
cm.defaultSortable = true;
-
store
は[CQ.Ext.data.GroupingStore](https://developer.adobe.com/experience-manager/reference-materials/6-5/widgets-api/index.html?class=CQ.Ext.data.GroupingStore)
オブジェクトで、次のような特徴があります。- クエリをフィルター処理するためのパラメーターをいくつか指定し、「
/bin/querybuilder.json
」に登録されているサーブレットを呼び出すことで、データを取得します - 前に定義した
reader
に基づきます - 表は、「jcr:path」列に従って、昇順で並べ替えられます。
- クエリをフィルター処理するためのパラメーターをいくつか指定し、「
-
gridPanel
は編集可能な[CQ.Ext.grid.EditorGridPanel](https://developer.adobe.com/experience-manager/reference-materials/6-5/widgets-api/index.html?class=CQ.Ext.grid.EditorGridPanel)
オブジェクトで、次のような特徴があります。-
事前定義済みの
store
と列モデルcm
に基づいています。 -
選択できる行は一度に 1 つのみです。
sm: new [CQ.Ext.grid.RowSelectionModel](https://developer.adobe.com/experience-manager/reference-materials/6-5/widgets-api/index.html?class=CQ.Ext.grid.RowSelectionModel)({singleSelect:true})
-
afteredit
リスナーは、「テスト」列のセルが編集されたことを確認します。- 「jcr:path」列で定義されたパスにあるノードのプロパティ「
test
」は、セルの値とともにリポジトリに設定されます。 - POST が成功した場合は、値が
store
オブジェクトに追加されます。POST が失敗した場合は、値が拒否されます。
- 「jcr:path」列で定義されたパスにあるノードのプロパティ「
-