Detailviewdefs/editviewdefs
出典: SugarForum.jp
バージョン5では、エンドユーザによるカスタマイズが重視され、$viewdefs配列で表示項目を設定するスタイルをとる
DetailView(詳細ビュー)とEditView(編集ビュー)の設定は、共通部分が多い。Sugar内部でも、DetailViewはEditViewクラスを継承しており、基本的には画面表示の際のテンプレートが異なるだけだ。
目次 |
定義の場所
SugarRoot/modules/@モジュール名/metadata/detailviewdefs.php SugarRoot/modules/@モジュール名/metadata/editviewdefs.php
書式
$viewdefs = array(
'<モジュール名>' => array(
'<ビューの種類>' => array(
'templateMeta' => array(
//上部に並ぶ「編集」「削除」などのボタン設定
//横に並べるカラムの数や、幅などの全体的なレイアウトの設定、など
),
'panels' => array(
//項目の並べ方、各項目の表示方法の指定
),
)
)
)
templateMeta
- form :
- buttons :
- customCode :
- hidden :
- buttons :
- maxColumns : 最大カラム数
- widths : ラベル幅とセル幅の指定
- panelClass : CSSのクラス。デフォルトは「tabForm」
- labelsOnTop :
- includes : JavaScriptの読み込みなど
panels
下記のように、パネル > 行 > セル の順で配列に入れて表現する。
'@パネル名' => array (
array (
array (
'name' => 'full_name',
'label' => 'LBL_NAME',
),
array (
'name' => 'phone_work',
'label' => 'LBL_OFFICE_PHONE',
),
),
),
セルに指定可能な属性は、nameやlabelの他、さまざまな指定が可能。
- name : フィールド名称。vardefsに対応するフィールドがあれば、その設定が使われる
- label : フィールドのラベル。モジュールの言語ファイルが参照される
- displayParams : 表示するSugarFieldのパラメータ設定。フォームのサイズなど。
- customCode : セルにカスタムのHTMLを出力する場合に使う。Smartyの記法で。
- customLabel : ラベルの内容を動的に変える場合など。
displayParams
ビュー表示用のメタデータ定義ファイル(editviewdefs.php等)では、表示フィールドに対してdisplayParamsというオプションパラメータを設定することが出来ます。このパラメータを指定すると、画面表示時のテキストフィールドのサイズの変更や、ボタンの表示/非表示を簡単に設定することができます。displayParamsは指定したいフィールドに対して、連想配列で記述します。
'displayParams' => array( 'パラメータ1' => '値1', 'パラメータ2' => '値2', ...)
パラメータに指定する値は、パラメータ名がそのままHTMLタグの属性名になっている場合には対応する値を記述します。それ以外は基本的にBoolean(true/false)を指定します。例えばmodules/Accounts/metadata/editviewdefs.phpでは、displayParamsは次のように記述されています。
array(
'name'=>'name',
'label'=>'LBL_NAME',
'displayParams'=>array('required'=>true)
),
このように通常の定義に追加する形で'displayParams'を追加して記述します。
指定可能なパラメータ
size
- 対象のフィールドにsize属性を追加します。値は数値で記述します。本パラメータ未指定時には、以下の値がsize属性のデフォルト値となります。(例外あり)
- テキストフィールド => 30
- Sugarのフィールドがdatetime => 11
- select,その他 => 6
- 定義例
- ほとんどのモジュールのeditviewdefs.phpで指定
- 利用しているテンプレート
- include/SugarFields/Fields/Base/EditView.tpl:include/SugarFields/Fields/Collection/CollectionEditViewRow.tpl
- include/SugarFields/Fields/Relate/EditView.tpl
- include/SugarFields/Fields/Relate/SearchView.tpl
maxlength
- input type=text, textareaに対してmaxlength属性を追加します。値は数値で記述します。未指定の場合には、vardefのlenの値が指定されます(されない場合もあり)。また、このパラメータを指定してもvardefのlenの値が優先されます場合もあります。
- 定義例
- modules/Contacts/metadata/editviewdefs.php
- 利用しているテンプレート
- include/SugarFields/Fields/Text/EditView.tpl
- include/SugarFields/Fields/Base/EditView.tpl
- include/SugarFields/Fields/Address/en_us.EditView.tpl
class
- class属性を追加します。値は文字列でclass名を記述します。対象のSugarフィールドがrelateの場合、"sqsEnabled"を同時に指定しない限りクイックサーチはoffとなります。(入力フィールドのクイックサーチの指定がclass属性で行われているため)
- 定義例
- modules/Cases/metadata/popupdefs.php
- 利用しているテンプレート
- include/SugarFields/Fields/Relate/EditView.tpl
- include/SugarFields/Fields/Relate/SearchView.tpl
- include/SugarFields/Fields/Collection/CollectionEditViewRow.tpl
- include/SugarFields/Fields/Collection/ViewSugarFieldCollection.php
rows
- textareaを表示するフィールドに対してrows属性を追加します。値は数値で記述します。本パラメータが指定されていない場合、デフォルトでは"4"が設定されます。
- 定義例
- modules/Contacts/metadate/editviewdefs.php
- 利用しているテンプレート
- include/SugarFields/Fields/Text/EditView.tpl
- include/SugarFields/Fields/Address/EditView.tpl
- include/SugarFields/Fields/Address/en_us.EditView.tpl
cols
- textareaを表示するフィールドに対してcols属性を追加します。値は数値で記述します。本パラメータが指定されていない場合、デフォルトでは"60"が設定されます。
- 定義例
- modules/Contacts/metadate/editviewdefs.php
- 利用しているテンプレート
- include/SugarFields/Fields/Text/EditView.tpl
- include/SugarFields/Fields/Address/EditView.tpl
- include/SugarFields/Fields/Address/en_us.EditView.tpl
selectOnly
- relateフィールドに対して、クリアボタンを非表示にします(検索ボタンのみ表示)。値はtrueで記述します。
- 定義例
- modules/Accounts/metadata/sidecreateviewdefs.php
- 利用しているテンプレート
- include/SugarFields/Fields/Relate/EditView.tpl
- include/SugarFields/Fields/Relate/SearchView.tpl
- include/SugarFields/Fields/Parent/EditView.tpl
- include/SugarFields/Fields/Parent/SearchView.tpl
clearOnly
- 検索エリアのrelateフィールドに対して、検索ボタンを非表示にします(クリアボタンのみ表示)。値はtrueで記述します。ポップアップ画面の検索エリアでは、このパラメータが自動的に追加されます。
- 定義例
- なし(標準モジュールはこのパラメータを指定していない)
- 利用しているテンプレート
- include/SugarFields/Fields/Relate/SearchView.tpl
hideButtons
- relateフィールドに対して、ボタンを非表示にします(検索/クリアボタン非表示)。値はtrueで記述します。
- 定義例
- modules/Cases/metadata/popupdefs.php
- 利用しているテンプレート
- include/SugarFields/Fields/Relate/SearchView.tpl
- include/SugarFields/Fields/Relate/EditView.tpl
required
- 対象フィールドを必須フィールドとして扱います。この時、画面上にはフィールドラベル名の横に"LBL_REQUIRED_SYMBOL(デフォルトでは赤色の*)"が表示されます。また、未入力のまま保存した場合に、ヴァリデーションエラーのメッセージを表示します。
- 対象フィールドがvardef内ですでに"required=>true"で宣言されている場合、本パラメータを指定しなくても自動的に必須フィールドとなります。ただし、vardef内で"required=>true"が宣言されているにもかかわらず、本パラメータをfalseに指定すると、必須フィールド扱いが無効となります(おそらく障害)。
- 定義例
- modules/Accounts/metadate/editviewdefs.php
- 利用/実装しているテンプレート
- include/EditView/EditView.tpl
- include/SugarFields/Fields/Address/EditView.tpl
- include/SugarFields/Fields/Address/en_us.EditView.tpl
- include/TemplateHandler/TemplateHandler.php
- include/EditView/EditView2.php
link
- fileフィールドに対して、DetailViewで表示する時の表示名となります。fileフィールドを画面上に表示する際には、このパラメータは必須となります。値はフィールド名で記述します。指定したフィールド名が存在しない場合には画面上に何も表示されません。
- 定義例
- modules/Notes/metadata/detailview.php
- include/SugarObjects/templates/file/metadata/detailviewdefs.php
- 利用しているテンプレート
- include/SugarFields/Fields/Image/DetailView.tpl
- include/SugarFields/Fields/File/SugarFieldFile.php
id
- fileフィールドに対して、DetailViewで表示したリンクアドレスで指定されるidとなります。標準のファイルアップロードロジックを利用する限り、 id => 'id'を指定します。fileフィールドを画面上に表示する際には、このパラメータは必須となります。
- 定義例
- modules/Notes/metadata/detailview.php
- include/SugarObjects/templates/file/metadata/detailviewdefs.php
- 利用しているテンプレート
- include/SugarFields/Fields/File/SugarFieldFile.php
showFormats
- datetime(combo)型のフィールド表示時に、ユーザ設定で指定された日付フォーマット(例:yyyy-mm-dd)を表示します。値はtrue/falseで記述します。
- 定義例
- modules/Tasks/metadata/editviewdefs.php
- modules/Campaigns/metadata/editviewdefs.php
- modules/Campaigns/metadata/searchdefs.php
- 利用しているテンプレート
- include/SugarFields/Fields/Datetime/SugarFieldDatetime.php
- include/SugarFields/Fields/Datetime/EditView.tpl
- include/SugarFields/Fields/Datetimecombo/EditView.tpl
- include/SugarFields/Fields/Datetimecombo/SugarFieldDatetimecombo.php
showNoneCheckbox
- datetime(combo)型のフィールド表示時に、Noneチェック用のチェックボックスを配置します。チェックボックスが有効になった場合、該当フィールドの時/分ドロップダウンにreadOnlyが設定されます。値はtrue/falseで記述します。
- 定義例
- modules/Tasks/metadata/editviewdefs.php
- 利用しているテンプレート
- include/SugarFields/Fields/Datetime/SugarFieldDatetime.php
- include/SugarFields/Fields/Datetimecombo/EditView.tpl
- include/SugarFields/Fields/Datetimecombo/SugarFieldDatetimecombo.php
splitDateTime
- datetimecombo型のフィールド表示時に、日付入力フィールドの後ろに
を追加します。指定はtrue/falseで記述します。 - 定義例
- modules/Calls/metadata/sidecreateviewdefs.php
- modules/Meetings/metadata/sidecreateviewdefs.php
- 利用しているテンプレート
- include/SugarFields/Fields/Datetimecombo/EditView.tpl
hiddeCallendar
- datetime型のフィールド表示時にカポップアップレンダー非表示にします。値はtrue/falseで記述します。
- 定義例
- なし(基本モジュールでは利用されていない)
- 利用しているテンプレート
- include/SugarFields/Fields/Datetime/SugarFieldDatetime.php
- include/SugarFields/Fields/Datetime/SugarFieldDatetime.php
- include/SugarFields/Fields/Datetime/EditView.tpl
- include/SugarFields/Fields/Datetime/EditView.tpl
[未実装]showHoursDropdown/showMinutesDropdown
- datetime(combo)型のフィールド表示時に、それぞれ時/分のドロップダウンを非表示にします。値はtrue/falseで記述します。フラグの受け渡しのみ実装されており、、テンプレートの表示ロジックが未実装。非表示処理を入れたい場合には、以下のファイル内で該当パラメータのチェックを行うようにカスタマイズします。
- include/SugarFields/Fields/Datetime/EditView.tpl
- include/SugarFields/Fields/Datetimecombo/EditView.tpl
- 利用しているテンプレート
- include/SugarFields/Fields/Datetime/SugarFieldDatetime.php
- include/SugarFields/Fields/Datetimecombo/SugarFieldDatetimecombo.php
- tabindex :
- hideLabel :
cf. 「displayParamsで指定可能なパラメータ」「displayParamsで指定可能なパラメータ(2)」
customLabel
ラベルの内容を動的に変える場合などに有効。
例として、動的に関連づけされるフィールドの場合。Tasksモジュールより。
'customLabel' => '{sugar_translate label=\'LBL_MODULE_NAME\' module=$fields.parent_type.value}',
アップグレードセーフな拡張
SugarRoot/custom/modules/@モジュール名/metadata/detailviewdefs.php SugarRoot/custom/modules/@モジュール名/metadata/editviewdefs.php