Title: 部品の定義:管理者が設定するドロップダウン式のタグ選択欄

フォームに配置する部品にはいろいろな種類がありますが、タグをドロップダウン選択する部品で、なおかつドロップダウンに表示される選択肢を管理者が設定できるタイプの書き方を解説します。

ここでは、カスタマイズ版プロジェクトの投稿/編集フォームの作成方法 で紹介している、「製品保守案件」プラグインの 部品「maintprod_category」を例に見ていくことにします。



定義ファイルの場所



フォームの部品の定義ファイルは、config/data/field/props部品名.properties という名前で保存します。

部品の名前が「maintprod_category」なので、ファイル名は maintprod_category.properties になります。

定義ファイルの内容



この maintprod_category.properties に次の内容をコピー&ペーストして保存してください。

# 部品の種類
# タグを選択するための部品なので「labelname_bucket_select」を指定する。
type=labelname_bucket_select

# エントリーフィルードの名前
entry_field=maintprod_category

# フォームに表示する時にクラス名を入れたい場合は指定する
# 指定しなくても可
class=maintprod_category


タイプ(種類)



type= では、この部品の種類を指定します。ここではタグ選択を意味する labelname_bucket_select を指定しています。

エントリー フィルード(表示用の部品)



entry_field= では、この部品に対応するエントリーフィールドの名前を指定します。

クラス



class= で指定された値は、この部品をフォーム上に表示するとき、フォームを構成する HTML 内の class= 属性として反映されます。

エントリーフィルードの定義



フォームの部品「maintprod_category」に対応する、表示用の部品「maintprod_category」を定義します。

定義ファイルは、定義本体、HTML レンダリング用定義、Text レンダリング用定義、Fulltext (全文検索用) レンダリング用定義、の 4 つを用意します。

定義本体



エントリーフィルードの全体的な定義ファイル maintprod_category.propertiesconfig/entry/fields/props に作成します。

次の内容をコピー&ペーストしてください。

class=com.traction.sdk.token.LabelNameBucketEntryField

# 表示名
display_name=Category

# 使用する labelname bucket の名前
# (config/data/labelnamebuckets の中の定義ファイル名)
label_name_bucket=maintprod_category

# フィルター(絞り込み)として利用できるようにするか
filter_selectable=true

# フィルターとして利用する場合のグループ名と順番
filter_group=maintprod
filter_order=5020


HTML レンダリング用の定義



エントリーフィールドの値を HTML 形式で出力(レンダリング)するための定義ファイル maintprod_category.propertiesconfig/entry/fields/html に作成します。

次の内容をコピー&ペーストしてください。

# 「com」フォルダの下の、 「traction」フォルダの下の、
# 「sdl」フォルダの下の、 「fields」フォルダの下の、
# 「html.sdl」ファイルの中の、「entry-labelname-bucket-value」関数を使う
sdl=com.traction.sdl.fields.html#entry-labelname-bucket-value


Text レンダリング用の定義



エントリーフィールドの値をテキスト形式で出力(レンダリング)するための定義ファイル maintprod_category.propertiesconfig/entry/fields/text に作成します。

次の内容をコピー&ペーストしてください。

# 「com」フォルダの下の、 「traction」フォルダの下の、
# 「sdl」フォルダの下の、 「fields」フォルダの下の、
# 「text.sdl」ファイルの中の、「entry-labelname-bucket-value」関数を使う
sdl=com.traction.sdl.fields.text#entry-labelname-bucket-value


Fulltext レンダリング用の定義



エントリーフィールドの値をフルテキスト形式で出力(レンダリング)するための定義ファイル maintprod_category.propertiesconfig/entry/fields/fulltext に作成します。

次の内容をコピー&ペーストしてください。

# NullRendererを指定し、何も出力(レンダリング)しない
class=com.traction.sdk.token.NullRenderer


NullRenderer を指定しているので、フルテキストとしては「何も出力されない」ということになります。

タグ名バケツの定義



ラベル選択用の部品の場合、エントリーフィールドの定義ファイル中の label_name_bucket= で指定した名前の「バケツ」を config/data/labelnamebuckets フォルダで定義する必要があります。

「タグ」は、TeamPage の技術用語では「label」と呼ばれます。フォルダの名前は tagnamebuckets ではなく labelnamebuckets であることに注意しましょう。

この定義ファイルでは、下記のように、管理者によって適時変更できること、設定内容はジャーナルに保存されること(=プラグイン設定画面の「ジャーナル設定」に表示されます)、その設定の名前が「maintprod_category」であることが記述されます。

# このタグ選択ドロップダウンに表示される選択肢は、
# プラグイン設定で管理者が設定できるタイプである。
class=tsi.sdk.data.DynamicSettingValueLabelNameBucket

# その設定はジャーナル設定である。
# (スペースやユーザーの設定ではない)
store_type=journal

# ジャーナル設定の名前
property_name=maintprod_category


管理者用の設定の定義



プラグイン設定画面の「ジャーナル設定」に表示される設定項目の定義ファイルは、config/props/journal に設置します。

このフォルダに maintprod_category.properties ファイルを設置し、次の内容を記述します。

# この設定はタグ名バケツ用のものである
class=tsi.sdk.settings.LabelNameBucketData

# この設定の見出し
display_name=Category

# この設定の説明文
description=Please fill-in the category names for the product maintenance projects.

# この設定の注意書き
tip=Each category name must be line-broken.

# この設定の設定欄の種類
sdleditor=com.traction.sdl.admin.settings#labelname-bucket

# 以下の4つはおまじないみたいなもの
edit_type=false
edit_name=false
edit_display_name=true
labelname_list_size=50

# [既定値を使用] チェックボックスを表示する
usedefault=true

# 既定値の設定
# 既定で、Apple, Orange, Lemon, Grape, Banana の5つのカテゴリーが設定される
default=type\=list,name\=maintprod_category,display_name\=Category,list\=Apple\\,Orange\\,Lemon\\,Grape\\,Banana

# この設定を適用するタグ名バケツの名前
bucket_name=maintprod_category


プラグイン設定ファイルでの記述



管理者用の設定を定義しましたが、これだけではこの設定は使えません。

プラグインの設定ファイル plugin.properties

db_config=true
db_settings=maintprod_category


として、「このプラグインでは、ジャーナル設定としてこの設定を使います」という宣言が必要です。

参照: DocSDK126: プラグイン設定の追加方法



関連記事
Article: DocSDK480 (permalink)
Date: 2020/05/05; 23時17分28秒 JST

Author Name: TeamPage サポート
Author ID: jpbo