DetailViewとEdifViewのボタンをカスタマイズする
出典: SugarForum.jp
DetailViewやEditViewでは、ヘッダ部分に各種ボタンが並ぶ。DetailViewでは「編集」「複製」「削除」など。
目次 |
定義の場所
SugarRoot/modules/@モジュール名/metadata/detailviewdefs.php SugarRoot/modules/@モジュール名/metadata/editviewdefs.php SugarRoot/custom/modules/@モジュール名/metadata/detailviewdefs.php SugarRoot/custom/modules/@モジュール名/metadata/editviewdefs.php
標準のボタン
標準のボタンは、'EDIT'や'DELETE'などと文字列を指定するだけで配置可能。
例
$viewdefs = array (
'Contacts' => array (
'DetailView' => array (
'templateMeta' => array (
'form' => array (
'buttons' => array ('EDIT', 'DUPLICATE', 'DELETE', 'FIND_DUPLICATES'),
),
//その他のテンプレート設定
)
'panels' => array (
//パネルのレイアウト定義
),
));
現在用意されているのは、以下の10個。
- CANCEL
- DELETE
- DUPLICATE
- EDIT
- FIND_DUPLICATE
- SAVE
- SUBPANELSAVE (サブパネル用)
- SUBPANELCANCEL (サブパネル用)
- SUBPANELFULLFORM (サブパネル用)
- AUDIT (監査履歴の表示。ユーザが指定する必要はない)
Smartyプラグインとしてボタンが定義されているので、詳しくは下記コードを参照。
SugarRoot/include/smarty/plugins/function.sugar_button.php
カスタムボタン
標準ボタン用のフォームとして、'module','action','record','return_module',...といった最低限の hidden input は用意されている。足りない場合は'hidden'に配列として指定。
'buttons'に、文字列ではなく配列を指定すると、カスタムコードを自由に設定できる。
例: DetailView
Contactsモジュールに確認欄(kakunin_c)を追加し、DetailViewからチェックを入れられるようにする。
'form' => array (
'hidden' => array('<input type="hidden" name="kakunin_c" value="{$fields.kakunin_c.value}" />'),
'buttons' => array (
'EDIT',
'DELETE',
array('customCode'=>'
{if $fields.kakunin_c.value}
<input title="確認欄にチェックする" class="button"
onclick="
this.form.return_module.value=\'Contacts\';
this.form.return_id.value=\'{$fields.id.value}\';
this.form.return_action.value=\'DetailView\';
this.form.action.value=\'Save\';
this.form.kakunin_c.value=\'0\';"
type="submit" value="確認欄にチェックする">
{/if}'),
),
),
※上記、kakunin_c は「未確認」時に1の値をとる想定。「未確認」レコードの検索性を優先するため。
※文字列「確認欄にチェックする」は、'LBL_KAKUNIN_CHECK'といったラベルにして言語ファイルに書く方がベター。(多言語化するつもりが無くても、言語ファイルに書いておけばエンドユーザがカスタマイズできる)