Tech Sketch Bucket of Technical Chips by TIS Inc.

SugarCRMをお気軽にカスタマイズしてみた その3

Pocket

1回目2回目 はツールによる自動生成だけでどこまで作れるか?チャレンジと称して一回もソースコードを見ることなく済ましてきましたが、とうとう年貢の納め時。
3回目にしてようやくソースコードに手を入れます!
2回目で基本的な部分のソースは自動生成されているはずなので、足りない部分だけ補うことにして楽をしよう、という方針です。


雛形にするソースコードを取得する

前回プロトタイプをインストールした際に使用した「配置」ボタンの隣に「公開」ボタンがあります。それを押すとパッケージファイル(zip)がダウンロードされます。
このzipファイルを開発者向けツール内の「モジュールローダー」を使ってアップロード→インストールとしても配置したのと同じモジュールが使用できるようになります。
複数のSugarCRMにインストールしたい場合に便利です。
このzipファイルを展開すると、中身はPHPファイルが詰まっています。
今回はこれを雛形として利用してみます。

リストビューのカスタマイズ

customCodeで出力するHTMLタグを上書き
リストビューのレイアウト設定ファイルlistviewdefs.phpの、表示をカスタムしたい項目(今回は'IMG')に下記のようにcustomCodeを加えます。
レコードIDの取得が詳細画面とは異なっていて、{$ID}を使います。
<パッケージROOT>/SugarModules/modules/smpl_image/metadata/listviewdefs.php

サブパネルのカスタマイズ

サブパネルのレイアウトは、モジュールビルダー上で編集できません。
そのため、設定ファイルに直接追記して項目を追加します。(ついでに項目幅も調整)
<パッケージROOT>/SugarModules/modules/<MODULE_NAME>/metadata/subpanels/default.php

ここでリストビューと同じくcustomCodeの出番・・・と思いきや、サブパネルではcustomCodeが無視され、何もない空間だけ表示されてしまいました。
2012080902204800.JPG

こちらのカスタマイズには、「 ロジックフック 」と呼ばれる仕組みを使います。
ロジックフックとは保存前、削除前など、各イベントのタイミングに割り込んで実行されるカスタムロジックです。今回はデータベースの検索結果の返却に割り込む「process_record」を使って画面に表示される値を画像アドレスに書き換えてしまうことにしました。
ロジックフックは <SUGAR_ROOT> /custom/modules/ <MODULE_NAME> /に以下の2ファイルを配置すると使えるようになります。

logic_hooks.php

img_tag.php

以上の設定が出来たところで、パッケージファイルを再びzipに固めなおして、モジュールローダーを使ってアップロード→インストールすると・・・

リストビュー

2012080902172100.JPG

サブパネル

2012080902251700.JPG

※アップロードした写真は コチラの素材サイト からお借りしました。

まとめ

同じ画像を画面に表示させるだけなのに各ビューでカスタマイズ法が異なっているのにてこずりましたが、実際のコーディング量としてはほんのちょっぴりですみました。

フィールドやリレーション設定は手で作ってミスがあるとデータベースエラーになってしまったりとトラブルになりやすいので、ツールに任せてしまったほうが間違いがなく、早くて楽です。
テンプレートにしたモジュールタイプによっては必要ないフィールドが出来ますが、レイアウト設定で非表示にしてしまえば特に問題なく使えます。

ロジックフックは入力チェックをする、隠しフィールドに何か計算した値をセットする、何かSQLを実行するなど、色々応用できそうです。

エンジニア採用中!私たちと一緒に働いてみませんか?