ウィジェットマニュアル [PDF:484KB]

OpenCms ウィジェット マニュアル
株式会社 ジークス
(2010 年 10 月 25 日更新)
2
目次
1 ウィジェットとは................................................................................................................5
2 基本系ウィジェット ............................................................................................................6
2-1 StringWidget --- テキストフィールド(一行入力欄) .................................................................. 6
2-2 StringWidgetPlaintext --- タグ禁止テキストフィールド(一行入力欄) .................................... 6
2-3 BooleanWidget --- 単一選択チェックボックス .............................................................................. 6
2-4 MultiCheckboxWidget --- 複数選択チェックボックス .................................................................. 7
2-5 RadioSelectWidget --- ラジオボタン.............................................................................................. 8
2-6 RadioButtonWidget --- ラジオボタン(多項目用) ...................................................................... 8
2-7 SelectorWidget --- プルダウン・リスト ......................................................................................... 9
2-8 MultiSelectWidget --- 複数選択セレクトボックス ........................................................................ 9
2-9 TextareaWidget --- テキストエリア(複数行入力欄) ................................................................ 10
2-10 TextareaWidgetPlaintext --- タグ禁止テキストエリア(複数行入力欄)................................ 10
2-11 DisplayWidget --- テキスト表示のみ.......................................................................................... 10
3 リッチ GUI 系ウィジェット .............................................................................................11
3-1 HtmlWidget --- HTML エディタ................................................................................................... 11
3-2 DateTimeWidget --- カレンダーからの日付入力 ......................................................................... 14
3-3 ColorpickerWidget --- カラーパレットからの色選択................................................................... 16
3-4 CategoryWidget --- 多階層のカテゴリ選択プルダウンリスト..................................................... 16
3-5 ComboWidget --- コンボボックス ................................................................................................ 17
4 リソース選択系ウィジェット............................................................................................18
4-1 VfsFileWidget --- リソース・ツリーからのファイル(フォルダ)選択...................................... 18
4-2 VfsImageWidget --- イメージギャラリーからの画像選択・拡大縮小・クリッピング ............... 19
4-3 XmlContentSelectWidget --- <cms:contentload/>タグ準拠の構造化コンテンツ選択 ................ 20
4-4 ResourceSelectWidget --- 検索条件指定によるファイル(フォルダ)選択................................ 21
4-5 ResourceStatusWidget --- リソースのステータス表示 ............................................................... 22
4-6 NavPosWidget --- NavPos プロパティによる並び順変更 ............................................................ 23
5 キャラリー系ウィジェット ...............................................................................................24
5-1 ImageGalleryWidget --- イメージギャラリーからの画像選択 .................................................... 24
5-2 DownloadGalleryWidget --- ダウンロードギャラリーからのバイナリファイル選択................. 24
5-3 LinkGalleryWidget --- リンクギャラリーからの外部リンク選択 ............................................... 24
5-4 TableGalleryWidget --- テーブルギャラリーからの表組み選択.................................................. 25
5-5 HtmlGalleryWidget --- HTML ギャラリーからの HTML 部品選択............................................ 25
3
6 アカウント系ウィジェット ...............................................................................................26
6-1 UserWidget --- ユーザー選択........................................................................................................ 26
6-2 GroupWidget --- グループ選択 ..................................................................................................... 26
6-3 OrgUnitWidget --- 組織ユニット選択 .......................................................................................... 27
6-4 PrincipalWidget --- 権限選択 ....................................................................................................... 27
7 データベース系ウィジェット............................................................................................28
7-1 DBRadioButtonWidget --- ラジオボタン(データベース連携) ................................................ 28
7-2 DBSelectWidget --- プルダウンリスト(データベース連携) .................................................... 29
7-3 DBMultiCheckboxWidget --- チェックボックス(データベース連携)..................................... 29
7-4 DBMultiSelectWidget --- 複数選択セレクトボックス(データベース連携) ............................ 29
7-5 DBComboWidget --- コンボボックス(データベース連携)....................................................... 30
8 独自ウィジェットの開発 ...................................................................................................31
8-1 ウィジェットの作成方法 ............................................................................................................... 31
8-2 CmsInputWidget のソースコード................................................................................................. 32
4
1 ウィジェットとは
OpenCms でのウィジェットとは、構造化コンテンツの入力フォームの種類の事を指します。
構造化コンテンツでは、ページの入力項目を XML で定義し、自由にカスタマイズできます。
入力項目の一つ一つをウィジェットと呼び、既にいくつかの種類のウィジェットが提供されています。
ウィジェットには、それぞれ名前が定義されており、XML でその名前を指定することで、入力フォー
ムを作成します。
<layouts>
<layout element="タイトル" widget="StringWidget"/>
<layout element="更新日" widget="DateTimeWidget"/>
<layout element="カテゴリ" widget="RadioButtonWidget"
configuration="新着ニュース|製品情報|IR 情報|会社情報|その他"/>
<layout element="メーカー名" widget="StringWidget"/>
<layout element="本文" widget="HtmlWidget"/>
<layout element="画像" widget="ImageGalleryWidget"/>
<layout element="キャプション" widget="StringWidget"/>
<layout element="ダウンロードファイル" widget="DownloadGalleryWidget"/>
</layouts>
5
XML には、各ウィジェットの configuration にパラメータを指定することが出来ます。
どんなパラメータが指定できるかは、各ウィジェットに依存します。
また、ウィジェットは Java のクラスで作成されており、独自のウィジェットクラスを作成すれば、
OpenCms 上で利用する事が出来ます。
2 基本系ウィジェット
2-1 StringWidget --- テキストフィールド(一行入力欄)
テキストフィールド(一行入力欄)を表示します。
2-2 StringWidgetPlaintext --- タグ禁止テキストフィールド(一行入力欄)
テキストフィールド(一行入力欄)を表示します。
StringWidget はタグを入力できますが、StringWidgetPlaintext の場合は、タグを入力すると、保存時
にタグのみ消去されます。
2-3 BooleanWidget --- 単一選択チェックボックス
チェックボックスを一つ表示します。チェックを入れると true という文字列がデータに保存され、チ
ェックが無い場合は false という文字列が保存されます。
configuration に文字列を指定すると、チェックボックスの横にラベルを表示させることが出来ます。
<layout element="BooleanWidget" widget="BooleanWidget"
configuration="オススメアイコンを表示" />
また、サイトごとに違うラベルを指定したい場合は、以下のように、configuration にサイトごとでラ
ベルを指定します。
6
<layout element="BooleanWidget" widget="BooleanWidget"
configuration="$site=/sites/default|お勧めアイコンを表示,/sites/site1|PickUp アイコンを表示,*|
アイコンを表示"/>
サイト別に指定する場合は、"$site="ではじめます。
そして、(サイトパス)|(ラベル)のペアをカンマ区切りで指定します。
想定外のサイトパス用のラベルを指定したい場合は、サイトパスのところを"*"にします。
2-4 MultiCheckboxWidget --- 複数選択チェックボックス
複数選択のチェックボックスを表示します。
実際のデータは、チェックを入れた項目の値が、カンマ区切りで保存されます。
選択項目は configuration に以下のように|区切りで指定します。
初期値としてチェックを入れたい項目には、項目名の後ろに*を付与します。
<layout element="MultiCheckboxWidget" widget="MultiCheckboxWidget"
configuration="PC*|本|車" />
ただ、上記の簡略した形式の場合、表示される選択ラベル名と、保存されるデータが同じ値になります。
よって、保存される時も、"PC,車"のように、ラベルがそのまま文字列として保存されます。
ラベルと値を別にしたい場合は、以下のように指定します。
<layout element="MultiCheckboxWidget" widget="MultiCheckboxWidget"
configuration="value='1' option='PC' default='true'|value='2' option='本'|value='3' option='車' " />
値を value、ラベルを option に指定します。デフォルト値は default に ture を指定します。
この場合、保存される時は、"1,3"のように、値がそのまま文字列として保存されます。
7
2-5 RadioSelectWidget --- ラジオボタン
単一選択のラジオボタンを表示します。
選択項目は configuration に以下のように|区切りで指定します。
初期値としてチェックを入れたい項目には、項目名の後ろに*を付与します。
<layout element="RadioSelectWidget" widget="RadioSelectWidget" configuration="PC|本|車*" />
ただ、上記の簡略した形式の場合、表示される選択ラベル名と、保存されるデータが同じ値になります。
よって、保存される時も、"車"のように、ラベルがそのまま文字列として保存されます。
ラベルと値を別にしたい場合は、以下のように指定します。
<layout element="RadioSelectWidget" widget="RadioSelectWidget"
configuration="value='1' option='PC' default='true'|value='2' option='本'|value='3' option='車' " />
値を value、ラベルを option に指定します。デフォルト値は default に ture を指定します。
この場合、保存される時は、"3"のように、値がそのまま文字列として保存されます。
2-6 RadioButtonWidget --- ラジオボタン(多項目用)
RadioSelectWidget と同様、単一選択のラジオボタンを表示します。
RadioSelectWidget は、縦一列に選択項目が並びますが、RadioButtonWidget は横に並びます。
一行に表示される項目は 6 つまでで、それ以降は次の行に表示されます。
configuration の指定方法は RadioSelectWidget と同様です。
8
2-7 SelectorWidget --- プルダウン・リスト
単一選択のセレクトボックスを表示します。
選択項目は configuration に以下のように|区切りで指定します。
初期値として選択済みにしたい項目には、項目名の後ろに*を付与します。
<layout element="SelectorWidget" widget="SelectorWidget" configuration="PC|本|車*" />
ただ、上記の簡略した形式の場合、表示される選択ラベル名と、保存されるデータが同じ値になります。
よって、保存される時も、"車"のように、ラベルがそのまま文字列として保存されます。
ラベルと値を別にしたい場合は、以下のように指定します。
<layout element="SelectorWidget" widget="SelectorWidget"
configuration="value='1' option='PC' default='true'|value='2' option='本'|value='3' option='車' " />
値を value、ラベルを option に指定します。デフォルト値は default に ture を指定します。
この場合、保存される時は、"3"のように、値がそのまま文字列として保存されます。
2-8 MultiSelectWidget --- 複数選択セレクトボックス
複数選択のセレクトボックスを表示します。
実際のデータは、チェックを入れた項目の値が、カンマ区切りで保存されます。
選択項目は configuration に以下のように|区切りで指定します。
初期値として選択済みにしたい項目には、項目名の後ろに*を付与します。
<layout element="MultiSelectWidget" widget="MultiSelectWidget" configuration="PC*|本|車" />
ただ、上記の簡略した形式の場合、表示される選択ラベル名と、保存されるデータが同じ値になります。
よって、保存される時も、"PC,車"のように、ラベルがそのまま文字列として保存されます。
ラベルと値を別にしたい場合は、以下のように指定します。
9
<layout element="MultiSelectWidget" widget="MultiSelectWidget"
configuration="value='1' option='PC' default='true'|value='2' option='本'|value='3' option='車' " />
値を value、ラベルを option に指定します。デフォルト値は default に ture を指定します。
この場合、保存される時は、"1,3"のように、値がそのまま文字列として保存されます。
2-9 TextareaWidget --- テキストエリア(複数行入力欄)
テキストエリア(複数行入力欄)を表示します。
デフォルトでは、縦 4 行、横 60 の入力欄が表示されますが、configuration で縦の行数を数値で指定す
ることが出来ます。
<layout element="TextareaWidget" widget="TextareaWidget" configuration="10" />
2-10 TextareaWidgetPlaintext --- タグ禁止テキストエリア(複数行入力欄)
テキストエリア(複数行入力欄)を表示します。
TextareaWidge はタグを入力できますが、TextareaWidgetPlaintext の場合は、タグを入力すると、保
存時にタグのみ消去されます。
2-11 DisplayWidget --- テキスト表示のみ
このウィジェットは、入力用のものではなく、説明用テキストを表示する為のものです。
configuration に表示するテキストを指定して下さい。configuration を指定しない場合は、そのエレメ
ントに入力されていた値がそのまま表示されます。
<layout element="DisplayWidget" widget="DisplayWidget"
configuration="※ 入力は公開の 2 日前に完了して下さい。" />
10
3 リッチ GUI 系ウィジェット
3-1 HtmlWidget --- HTML エディタ
HTML エディタを表示します。configuration にはさまざまな値を指定できます。
ボタンの
ボタンの表示・
表示・非表示
デフォルトでは非表示となっているボタンは、ボタン名を指定することで表示させる事が出来ます。
ボタン名を複数指定するときは、カンマ区切りで指定します。
<layout element="HtmlWidget" widget="HtmlWidget" configuration="anchor, editorlink, find,
formatselect, fullpage, image, link, replace, source, spellcheck, style, table, unlink, imagegallery,
downloadgallery, htmlgallery, linkgallery, tablegallery" />
11
undo
元に戻すボタンを表示します。
redo
やり直しボタンを表示します。
find
検索ボタンを表示します。
replace
置き換えボタンを表示します。
selectall
すべて選択ボタンを表示します。
removeformat
フォーマット削除ボタンを表示します。
cut
切り取りボタンを表示します。
copy
コピーボタンを表示します。
paste
貼り付けボタンを表示します。
bold
太字ボタンを表示します。
italic
斜体ボタンを表示します。
underline
下線ボタンを表示します。
strikethrough
打ち消し線ボタンを表示します。
subscript
添え字ボタンを表示します。
superscript
上付き文字ボタンを表示します。
alignleft
左揃えボタンを表示します。
aligncenter
中央揃えボタンを表示します。
alignright
右揃えボタンを表示します。
justify
両端揃えボタンを表示します。
orderedlist
段落番号の追加/削除ボタンを表示します。
unorderedlist
箇条書きの追加/削除ボタンを表示します。
outdent
インデント解除ボタンを表示します。
indent
インデントボタンを表示します。
source
ソース表示ボタンを表示します。
formatselect
フォーマット選択プルダウンリストを表示します。
style
スタイル選択プルダウンリストを表示します。但し、これを指定した場合は、
stylesxml:で選択項目を定義したスタイルシートを指定する必要があります。
例)
configuration="style,
stylesxml:/system/workplace/resources/editors/fckeditor/fckstyles.xml"
editorlink
リンク挿入/編集ボタンを表示します。
link
リンクボタンを表示します。
anchor
アンカー挿入/編集ボタンを表示します。
unlink
リンク削除ボタンを表示します。
imagegallery
イメージギャラリー(画像の挿入や編集)を起動するボタンを表示します。
12
downloadgallery
ダウンロードギャラリー(ファイルの挿入/編集)を起動するボタンを表示します。
linkgallery
リンクギャラリー(外部リンクの挿入や編集)を起動するボタンを表示します。
htmlgallery
HTML ギャラリー(HTML の挿入や編集)を起動するボタンを表示します。
tablegallery
テーブルギャラリー(テーブルの挿入や編集)を起動するボタンを表示します。
table
テーブル挿入/編集ボタンを表示します。
specialchar
特殊文字挿入ボタンを表示します。
print
印刷ボタンを表示します。
spellcheck
スペルチェックボタンを表示します。
fullpage
編集領域最大化ボタンを表示します。
フォルトでは、以下のボタンが既に表示状態になっています。
undo, redo, selectall, removeformat, cut, copy, paste, bold, italic, underline, strikethrough, subscript,
superscript, alignleft, aligncenter, alignright, justify, orderedlist, unorderedlist, outdent, indent,
specialchar, print, fitwindow
逆に、表示状態となっているボタンを非表示にする場合は、hidebuttons:でボタン名を指定します。
hidebuttons:に複数のボタンを指定するときは、セミコロン区切りで指定します。
<layout element="HtmlWidget" widget="HtmlWidget"
configuration="imagegallery, downloadgallery, hidebuttons: specialchar; print; fitwindow " />
13
編集領域の
編集領域のサイズ変更
サイズ変更
編集領域の高さは、デフォルトでは 260px になっています。
これを変更する場合は、height:で高さを指定します。
<layout element="HtmlWidget" widget="HtmlWidget"
configuration="height:400px, imagegallery, downloadgallery" />
編集領域に
編集領域にスタイルシートを
スタイルシートを適用
編集領域にスタイルシートを適用したい場合は、css:で CSS のパスを指定します。
<layout element="HtmlWidget" widget="HtmlWidget"
configuration="css:/common/css/main.css, imagegallery, downloadgallery " />
3-2 DateTimeWidget --- カレンダーからの日付入力
カレンダーからの入力補助機能を持った、テキストフィールドを表示します。
テキストフィールドの右にカレンダーアイコンが表示され、クリックすると、カレンダーが起動します。
保存されるデータは、日付フォーマットに依存した文字列ではなく、UNIX TIME の long 値です。
例えば、"1272201122000"のような数値が文字列として保存されます。
※ 単位はミリ秒なので、通常の UNIX TIME が 1000 倍された値になるので注意して下さい。
configuration には、以下の値を指定することが出来ます。
singleClick
true を指定すると、日付を選択した時点で入力欄に日付がセットされ、カレンダ
ーが閉じます。
false を指定すると、日付を選択した時点で入力欄に日付がセットされますが、
カレンダーは閉じられません。
デフォルトは、false です。
14
weekNumbers
true を指定すると、カレンダーの左端に、その年の 1/1 からの週の数を
表示します。デフォルトは、false です。
mondayFirst
月曜日を週の最初(カレンダーの左端)に表示します。
デフォルトは、true です。
showsTime
true を指定すると、時刻を表示する欄があらわれ、日付だけでなく、時間も入力
できるようになります。デフォルトは、true です。
<layout element="DateTimeWidget" widget="DateTimeWidget"
configuration="singleclick=true|mondayFirst=false|showTime=false" />
このウィジェットの入力値をバリデーションで検証する場合は注意が必要です。
入力された書式をチェックしようとしても、文字列から long 型の数値に変換された後にバリデーショ
ンにわたってきますので、書式チェックは出来ません。
ただ、文字列から long 型の数値に変換する途中でエラーとなった場合は、以前の long 値がわたってき
ますが、最後に半角スペースが付与されているので、全て数字か、最後に半角スペースが付与されてい
るかの違いで、エラーがあったかどうかの判別は付ける事が出来ます。
15
3-3 ColorpickerWidget --- カラーパレットからの色選択
カラーパレットからの入力補助機能を持った、テキストフィールドを表示します。
テキストフィールドの右にカラーアイコンが表示され、クリックすると、カラーパレットが起動します。
保存されるデータは、#000000 などの色情報の文字列です。
(例えば、"1272201122000"のような数値が文字列として保存されます。)
尚、このウィジェットを利用する場合は、データタイプは OpenCmsColor でなくてはなりません。
OpenCmsString でもエラーとなり操作が出来なくなります。
また、#000000 以外のフォーマットのデータが入っているエレメントを、途中で ColorpickerWidget
に変更した場合も、エラーになりますので、事前に#000000 形式のデータに変換しておく必要がありま
す。
3-4 CategoryWidget --- 多階層のカテゴリ選択プルダウンリスト
多階層のカテゴリを選択するプルダウンが表示されます。
プルダウンを選択した時に、さらに子となるカテゴリが存在すれば、その右に子カテゴリのプルダウン
が、次々に現れます。
カテゴリは、/system/categories/の下にフォルダを作成していくことで管理しますが、このプルダウン
で選択したデータは、その選んだカテゴリ・フォルダのパス(例えば、/system/categories/av/audio/)
として保存されます。
16
このウィジェットは、configuration で指定できるパラメータがあります。
category
カテゴリの開始位置を指定します。
例えば、"/av"と指定すると、/system/categories/av/以下のカテゴリから選択可能
になります。
OpenCms は、全サイトでカテゴリ・ツリーを一つしかもてないので、カテゴリを
大きな分類で分けた上で、途中の階層から使用する運用をお勧めします。
property
category にパスを指定する代わりに、プロパティに登録されたパスを使用する場合
は、property にそのプロパティ名を指定します。
category でパスを指定すると、そのリソースタイプでカテゴリの選択範囲が固定と
なりますが、property を使用すると、ページによって可変にする事が出来ます。
onlyleafs
true を指定すると、末端のカテゴリまで選択しなければエラーとなります。
途中のカテゴリまでの選択でも、保存できるようにしたい場合は false を指定しま
す。
これらのパラメータを複数同時に指定する場合は、|で区切って指定します。
<layout element="CategoryWidget" widget="CategoryWidget"
configuration="onlyleafs=true|property=category" />
3-5 ComboWidget --- コンボボックス
単一選択のコンボボックスを表示します。
プルダウンから値を選択することも出来れば、直接文字を入力する事も出来ます。
選択項目は configuration に以下のように|区切りで指定します。
configuration でのデフォルト値は指定できませんので、XSD のデフォルト値の定義を利用して下さい。
<layout element="ComboWidget" widget="ComboWidget" configuration="PC|本|車" />
また、以下のように help を使用して説明テキストを指定することも可能です。
<layout element="ComboWidget" widget="ComboWidget"
configuration=" value='PC' help='PC に興味がある。' |
value='本' help='本に興味がある。' | value='車' help='車に興味がある。' " />
17
4 リソース選択系ウィジェット
これらは、リソース(ファイルやフォルダ)を選択して保存するウィジェットです。
これらのウィジェットを使用するとき、そのエレメント(入力項目)のデータタイプに注意して下さい。
データタイプに OpenCmsString を指定すると、パスの情報だけが保存されます。
そして、OpenCms に存在しないリソースを指定しても、手入力で http://~のように、外部のサーバー
のファイルパスを指定しても、問題なく保存されます。
しかし、OpenCmsVfsFile や OpenCmsVfsImage を指定した場合は、OpenCms 内に存在しないファイ
ルを選択するとエラーとなります。その代わり、これらのデータタイプを指定した場合、リソースのパ
ス情報だけでなく、そのリソースの ID(主キー)も同時に保存しますので、選択したリソースが、別
のフォルダに移動された場合や、リソースの名前が変更された場合でも、ここで選択したリソースのパ
スは自動的に変更され、手で修正する必要がありません。逆に、データタイプが OpenCmsString の場
合は、参照先のリソースを移動またはリネームした場合、リンク切れとなります。
OpenCmsVfsImage の場合は、さらに、画像をサムネイル化した時のサイズや、クリッピングした時の
座標の情報などを保持します。また、データタイプが OpenCmsVfsImage だとしても、画像以外のフ
ァイルを指定してエラーになる事はありません。
4-1 VfsFileWidget --- リソース・ツリーからのファイル(フォルダ)選択
18
リソース・ツリーからの入力補助機能を持った、テキストフィールドを表示します。
テキストフィールドの右に検索アイコンが表示され、クリックすると、リソース・ツリーが起動します。
保存されるデータは、ファイルやフォルダのパスです。
configuration に excludefiles を指定すると、ファイルは表示されず、フォルダのみ選択できるようにな
ります。hidesiteselector を指定すると、上段のサイト選択プルダウンリストが非表示になります。
また、最初に表示されるサイトを startsite で指定できます。
これらのオプションを複数指定するときは、|区切りで指定します。但し、startsite を指定するときは、
必ず先頭に記述して下さい。
<layout element="VfsFileWidget" widget="VfsFileWidget"
configuration="startsite=/sites/default|excludefiles|hidesiteselector" />
4-2 VfsImageWidget --- イメージギャラリーからの画像選択・拡大縮小・クリッピング
画像選択用のウィジェットです。
テキストフィールドの横に、イメージギャラリーを起動するボタンと、プレビューボタンが表示されま
す。このウィジェットは、画像のパスだけでなく、画像を拡大・縮小した時のサイズの情報や、クリッ
ピングした時の座標情報なども保持します。
VfsImageWidget を使用する場合は、データタイプを OpenCmsVfsImage にする必要があります。
configuration には、以下の値を JSON 形式で指定することが出来ます。
startup
ギャラリーを開いた時に、最初に表示させるフォルダを指定します。
例)configuration="{startup: '/demo_en/images/'}"
type
ギャラリーを開いた時に、初期表示されるタブを指定します。
'gallery'を指定するとギャラリー・タブを開いた状態になります。
'category'を指定するとカテゴリ・タブを開いた状態になります。
例)configuration="{type: 'gallery'}"
usedescription
VfsImageWidget 系のウィジェットの場合、true を指定すると入力フォームにフ
ァイル選択フォームだけでなく、デスクリプションの入力欄を表示します。
例)configuration="{usedescription: true}"
useformat
VfsImageWidget 系のウィジェットの場合、true を指定すると入力フォームにフ
ァイル選択フォームだけでなく、フォーマットの入力欄を表示します。このプル
ダウンの選択項目は、次の formatnames パラメータで指定します。
例)configuration="{useformat: true}"
19
formatnames
フォーマット欄の選択項目を定義します。(値):(選択項目名)のペアを|区切
りで指定していきます。
例)configuration="{formatnames: 'imageleft:左ナビ用画像|imageright:右ナビ
用画像|imagetop:トップ画像'}"
formatvalues
formatnames で定義した選択項目に対応する値を指定します。縦幅と横幅の区
切り文字に、x を使用し、縦横比固定の場合には、縦横どちらかに?を使用して指
定します。
例)configuration="{formatvalues: ['150x?', '250x300', '?x250']}"
I_CmsImageWidgetDynamicConfiguration インターフェースをインプリメント
class
したクラスを指定します。startup、type、formatvalues の値を、動的にセット
したい場合は、独自実装したクラスをここに指定することが出来ます。
scaleparams
デフォルトのスケールパラメータを指定します。
例)configuration="{scaleparams: 'q:70,r:2,c:CCCC00'}"
configuration に複数のパラメータを指定する場合は以下のような書式になります。
configuration="{scaleparams: 'q:70,r:2,c:CCCC00', type: 'gallery', startup: '/demo_en/images/',
usedescription: true, useformat: true, formatnames: 'imageleft:左ナビ用画像|imageright:右ナビ用画
像|imagetop:トップ画像', formatvalues: ['150x?', '250x300', '?x250']}"
4-3 XmlContentSelectWidget --- <cms:contentload/>タグ準拠の構造化コンテンツ選択
構造化コンテンツのリソースをプルダウンから選択するためのウィジェットです。
configuration には、<cms:contentload/>タグと同じ記述で検索条件を指定することが出来ます。
データには選択したリソースのパスが保存されます。
<layout element="XmlContentSelectWidget" widget="XmlContentSelectWidget"
configuration="zx.allInFolder|/demo_en/today/news/news_%(number).html|ttnews|10" />
20
4-4 ResourceSelectWidget --- 検索条件指定によるファイル(フォルダ)選択
リソースのパスを、プルダウンから選択するためのウィジェットです。
configuration には、以下のフォーマットで検索条件を指定することが出来ます。
(対象フォルダのパス)|(リソースタイプ)|(ソート順)|(件数)
<layout element="ResourceSelectWidget" widget="ResourceSelectWidget"
configuration="/demo_en/*|folder, ttnews|date desc|20" />
対象フォルダのパスには、検索対象となるフォルダのパスを指定します。
普通にパスを指定すると、そのフォルダ直下のリソースを検索しますが、パスの最後に*を付けると、
サブフォルダのリソースも再帰的に検索します。
ファイルのパスには、%(opencms.uri) などのマクロが指定できます。
ファイルのパスを指定した場合は、その親フォルダが指定されたものとみなします。
リソースタイプには、検索対象のリソースタイプを指定します。
カンマ区切りで複数指定することも可能です。
ソート順には、以下の文字列を指定することが出来ます。
date
公開日の昇順にソートします。
path
パスの昇順にソートします。大文字・小文字の区別があります。
ignore
パスの昇順にソートします。大文字・小文字の区別はありません。
folder
パスの昇順にソートしますが、フォルダはファイルより上に表示します。大文字・小文
字の区別はありません。
それ以外の文字が指定された場合は、folder が指定されているものとして扱われます。
また、後ろに desc を付与すると、降順に並べる事が出来ます。
件数にはプルダウンに表示する最大リソース数を正の整数で指定します。
0 を指定すると、無制限となり、全件取得して表示します。
21
4-5 ResourceStatusWidget --- リソースのステータス表示
このウィジェットは、入力用のものではなく、編集中のリソースの状態を表示する為のものです。
リソースの状態によって、"変更なし", "変更あり", "新規", "削除"が表示されます。
また、非公開に設定されているリソースの場合、"(非公開)"が付与されます。
非公開でない場合、公開期限が設定されており、期限切れの場合、"(期限切れ)"が付与されます。
非公開でない場合、公開日がまだのリソースは、"(公開待)"が付与されます。
表示されるステータスの表記を変更したい場合は、置換のルールを configuration に記述します。
フォーマットは、(key1)=(value1)&(key2)=(value2)… です。但し、XSD に記述する場合は&という文
字がそのまま使えないので、&amp;にエスケープする必要があります。
<layout element="ResourceStatusWidget" widget="ResourceStatusWidget"
configuration="新規=NEW&amp;新規(期限切れ)=期限切れ NEW" />
また、置換のルールをテキストファイルに記述し、configuration にはそのパスを指定することも出来
ます。この場合、複数の XSD で共通した設定ファイルを持つ事が可能になり、また、サイト単位で別
のファイルを読ませる事も可能になります。
/common/map_status.txt
新規 = NEW
新規(期限切れ) = 期限切れ NEW
<layout element="ResourceStatusWidget" widget="ResourceStatusWidget"
configuration="/common/map_status.txt" />
22
4-6 NavPosWidget --- NavPos プロパティによる並び順変更
リソースのソート順に利用される NavPos プロパティの入力インターフェースを表示するウィジェット
です。
これは、リソースを右クリックして、コンテクストメニューからプロパティを選択した時に表示される
以下のダイアログの、「後に挿入」プルダウンと同じ機能です。
このウィジェットを使用する場合は、このエレメントと NavPos プロパティのマッピングを XSD に記
述して下さい。そうしなければ、ここで変更した値が NavPos プロパティに反映されないので、意味が
ありません。
23
5 キャラリー系ウィジェット
5-1 ImageGalleryWidget --- イメージギャラリーからの画像選択
イメージギャラリーから、画像を選択できるウィジェットです。
クリッピングやリサイズ機能を有効にする場合は、VfsImageWidget を使用して下さい。
configuration には、以下の値を JSON 形式で指定することが出来ます。
startup
ギャラリーを開いた時に、最初に表示させるフォルダを指定します。
例)configuration="{startup: '/demo_en/images/'}"
type
ギャラリーを開いた時に、初期表示されるタブを指定します。
'gallery'を指定するとギャラリー・タブを開いた状態になります。
'category'を指定するとカテゴリ・タブを開いた状態になります。
例)configuration="{type: 'gallery'}"
class
I_CmsGalleryWidgetDynamicConfiguration インターフェースをインプリメン
トしたクラスを指定します。startup、type の値を、動的にセットしたい場合は、
独自実装したクラスをここに指定することが出来ます。
configuration に複数のパラメータを指定する場合は以下のような書式になります。
configuration="{type: 'gallery', startup: '/demo_en/images/'}"
5-2 DownloadGalleryWidget --- ダウンロードギャラリーからのバイナリファイル選択
ダウンロードギャラリーから、バイナリファイルを選択できるウィジェットです。
configuration の指定方法は、ImageGalleryWidget を参照して下さい。
5-3 LinkGalleryWidget --- リンクギャラリーからの外部リンク選択
リンクギャラリーから、外部リンクを選択できるウィジェットです。
configuration の指定方法は、ImageGalleryWidget を参照して下さい。
24
5-4 TableGalleryWidget --- テーブルギャラリーからの表組み選択
テーブルギャラリーから、HTML の表組みを選択できるウィジェットです。
configuration の指定方法は、ImageGalleryWidget を参照して下さい。
5-5 HtmlGalleryWidget --- HTML ギャラリーからの HTML 部品選択
HTML ギャラリーから、HTML の部品を選択できるウィジェットです。
configuration の指定方法は、ImageGalleryWidget を参照して下さい。
25
6 アカウント系ウィジェット
6-1 UserWidget --- ユーザー選択
ユーザー一覧から、ユーザーID を選択できるウィジェットです。
configuration には、group と flags を渡す事が出来ます。
group にグループ名を指定すると、そのグループに所属しているユーザーのみが一覧表示されます。
グループの依存関係によって該当のグループに所属しているユーザーは含まれません。
flags には数値で、以下の値の論理和を指定します。
1
無効となっているユーザー
2
パスワードなどの自己管理権限の無いユーザー
32768
ウェブユーザー(2^15)
<layout element="UserWidget" widget="UserWidget" configuration="flags=2|group=Users" />
6-2 GroupWidget --- グループ選択
グループ一覧から、グループを選択できるウィジェットです。
configuration には、user と flags、oufqn を渡す事が出来ます。
user にユーザーID を指定すると、そのユーザーが所属しているグループのみが一覧表示されます。
oufqn には組織ユニットを指定します。
flags には数値で、以下の値の論理和を指定します。
1
無効となっているグループ
2
プロジェクトマネージャ・グループ
4
プロジェクトユーザー・グループ
1024
仮想グループ(2^10)
1048576
ロール(2^20)
<layout element="GroupWidget" widget="GroupWidget" configuration="user=Admin|flag=2" />
26
6-3 OrgUnitWidget --- 組織ユニット選択
組織ユニット一覧から、組織ユニットを選択できるウィジェットです。
configuration には、role を渡す事が出来ます。
6-4 PrincipalWidget --- 権限選択
組織ユニットを含めた、ユーザーやグループ、その他、アクセス権限の設定で利用される値を一覧から
選択できるウィジェットです。
configuration には、flags を渡す事が出来ます。
27
7 データベース系ウィジェット
これらは、ラジオボタンやチェックボックスなどのウィジェットですが、データベースに SQL を発行
し、取得したデータを、選択項目としてセットする事が出来ます。
7-1 DBRadioButtonWidget --- ラジオボタン(データベース連携)
DB から取得した値を選択項目に使用し、ラジオボタンを表示するウィジェットです。
configuration には、pool name と、SQL を|でつないで記述します。
<layout element="DBRadioButtonWidget" widget="DBRadioButtonWidget"
configuration="default|SELECT USER_ID, USER_NAME FROM CMS_USERS" />
pool name は、データベースの接続情報名で、default を指定すると、OpenCms のテーブルが存在する
データベースへ接続します。別のデータベースへ接続する場合は、そのデータベースへの接続情報を定
義し、その pool name を指定します。別のデータベースへ接続する方法は、
「OpenCms タグリファレ
ンス」の 2-19 query を参照して下さい。
SQL には、1 列目のカラムがラジオボタンの値、2 列目のカラムがラベルとして使用されます。
また、3 つ目のカラムは必須ではありませんが、デフォルト値として使用されます。
ページの新規作成時に、3 つ目のカラムに 1 が入っているボタンが選択状態になります。
また、以下のように、SQL にはマクロを使用する事が可能です。
<layout element="DBRadioButtonWidget" widget="DBRadioButtonWidget"
configuration="default|SELECT
USER_ID,
USER_NAME
FROM
CMS_USERS
WHERE
USER_LASTNAME = '%(currentuser.lastname)'" />
利用可能なマクロは、「OpenCms タグリファレンス」の 27 マクロ変数一覧を参照して下さい。
28
7-2 DBSelectWidget --- プルダウンリスト(データベース連携)
DB から取得した値を選択項目に使用し、プルダウン・リストを表示するウィジェットです。
configuration には、pool name と、SQL を|でつないで記述します。
プルダウンリストとなる以外は、使い方は DBRadioButtonWidget と同じです。
<layout element="DBSelectWidget" widget="DBSelectWidget"
configuration="default|SELECT USER_ID, USER_NAME, 0 FROM CMS_USERS" />
7-3 DBMultiCheckboxWidget --- チェックボックス(データベース連携)
DB から取得した値を選択項目に使用し、チェックボックスを表示するウィジェットです。
configuration には、pool name と、SQL を|でつないで記述します。
プルダウンリストとなる以外は、使い方は DBRadioButtonWidget と同じです。
<layout element="DBMultiCheckboxWidget" widget="DBMultiCheckboxWidget"
configuration="default|SELECT USER_ID, USER_NAME, 1 FROM CMS_USERS" />
7-4 DBMultiSelectWidget --- 複数選択セレクトボックス(データベース連携)
DB から取得した値を選択項目に使用し、複数選択可能セレクトボックスを表示するウィジェットです。
configuration には、pool name と、SQL を|でつないで記述します。
プルダウンリストとなる以外は、使い方は DBRadioButtonWidget と同じです。
<layout element="DBMultiSelectWidget" widget="DBMultiSelectWidget"
configuration="default|SELECT USER_ID, USER_NAME, 1 FROM CMS_USERS" />
29
7-5 DBComboWidget --- コンボボックス(データベース連携)
DB から取得した値を選択項目に使用し、コンボボックスを表示するウィジェットです。
configuration には、pool name と、SQL を|でつないで記述します。
<layout element="DBComboWidget" widget="DBComboWidget"
configuration="default|SELECT USER_NAME, USER_EMAIL FROM CMS_USERS" />
pool name は、データベースの接続情報名で、default を指定すると、OpenCms のテーブルが存在する
データベースへ接続します。別のデータベースへ接続する場合は、そのデータベースへの接続情報を定
義し、その pool name を指定します。別のデータベースへ接続する方法は、
「OpenCms タグリファレ
ンス」の 2-19 query を参照して下さい。
SQL には、1 列目のカラムがプルダウンの選択項目の値、2 列目のカラムが、選択項目の説明用のヘル
プ・テキストして使用されます。2 列目のカラムは必須ではありません。
また、以下のように、SQL にはマクロを使用する事が可能です。
<layout element="DBComboWidget" widget="DBComboWidget"
configuration="default|SELECT USER_NAME, USER_EMAIL FROM CMS_USERS WHERE
USER_LASTNAME = '%(currentuser.lastname)'" />
利用可能なマクロは、「OpenCms タグリファレンス」の 27 マクロ変数一覧を参照して下さい。
30
8 独自ウィジェットの開発
8-1 ウィジェットの作成方法
独自のウィジェットを作成する場合は、抽象クラス org.opencms.widgets.A_CmsWidget を継承したク
ラスを作成します。
HTML エ デ ィ タ 系 の ウ ィ ジ ェ ッ ト を 作 成 す る 場 合 は 、 A_CmsWidget を 継 承 し た 抽 象 ク ラ ス
org.opencms.widgets.A_CmsHtmlWidget を使用すると便利です。
ギ ャ ラ リ ー 系 の ウ ィ ジ ェ ッ ト を 作 成 す る 場 合 は 、 A_CmsWidget を 継 承 し た 抽 象 ク ラ ス
org.opencms.widgets.A_CmsGalleryWidget を使用すると便利です。
作成したクラスは、XSD の widget の部分に、パッケージ名を含めた完全なクラス名を指定すれば使用
できます。
<xsd:annotation>
<xsd:appinfo>
<layouts>
<layout element="Title" widget="org.opencms.widgets.MyWidget" />
</layouts>
</xsd:appinfo>
</xsd:annotation>
※ OpenCms 標準のウィジェットは、opencms-vfs.xml でエイリアス(別名)を定義しているので、
パッケージ名を含めた完全なクラス名を指定する必要はありません。
31
8-2 CmsInputWidget のソースコード
以下は、シンプルなテキストフィールドを表示する、CmsInputWidget のソースコードです。
package org.opencms.widgets;
import org.opencms.file.CmsObject;
import org.opencms.i18n.CmsEncoder;
public class CmsInputWidget extends A_CmsWidget {
public CmsInputWidget() {
this("");
}
public CmsInputWidget(String configuration) {
super(configuration);
}
public String getDialogWidget(CmsObject cms,
I_CmsWidgetDialog widgetDialog, I_CmsWidgetParameter param) {
String id = param.getId();
StringBuffer result = new StringBuffer(16);
result.append("<td class=¥"xmlTd¥">");
result.append("<input class=¥"xmlInput textInput");
if (param.hasError()) {
result.append(" xmlInputError");
}
result.append("¥"");
result.append(" name=¥"");
result.append(id);
result.append("¥" id=¥"");
result.append(id);
32
result.append("¥" value=¥"");
result.append(CmsEncoder.escapeXml(param.getStringValue(cms)));
result.append("¥">");
result.append("</td>");
return result.toString();
}
public I_CmsWidget newInstance() {
return new CmsInputWidget(getConfiguration());
}
}
最低限必要なのは、コンストラクタと、newInstance()、そして、getDialogWidget()メソッドです。
実際の入力フォームの HTML を出力するのは、getDialogWidget()メソッドになります。
param.getId()で、入力項目の一時的な ID が取得できますので、それを<input/>の name と id にセッ
トする必要があります。
入力されたデータは、param.getStringValue(cms)で文字列として取得できます。
ダブルクォーテーションなどをエスケープする必要がありますので、CmsEncoder.escapeXml()を使って
います。
尚、XSD の configuration で指定したパラメータは、getConfiguration()で文字列として取得する事
が出来ます。
※ 既存の Widget のソースをコピーして使用する場合は、newInstance()メソッドの中身も忘れずに書
き換えてください。そうしなければ、コピー元の Widget が実行されてしまいます。
33