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 :
  • 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

最終更新 00:01, 2010年1月3日 (日)。   このページは 1,986 回アクセスされました。