Movable Type/第2回MTプラグイン勉強会 - A-Formの基本構造と独自モデルオブジェクトの作り方 http://www.ark-web.jp/sandbox/wiki/322.html
Movable Type/第2回MTプラグイン勉強会 - A-Formの基本構造と独自モデルオブジェクトの作り方
第2会はA-Form(http://www.ark-web.jp/movabletype/)の基本構造(アーキテクチャと大まかな機能)、MVC風アーキテクチによる実装例(まずは独自モデルオブジェクトの定義方法)を解説します。
動画(Ustream) †
勉強会の模様をアップしました。ご参加ありがとうございます。
今回、音とびが結構ひどかったですね。
あと、画面フォーカスが不慣れで申し訳ないですm(_ _)m
Ustreamのチャンネルはこちら。
http://www.ustream.tv/channel/mt%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E5%8B%89%E5%BC%B7%E4%BC%9A
勉強会で解説したプログラムコードのダウンロード †
モデルとプラグイン本体だけ含まれています^^;
ネタ †
日時 †
- 2008/05/30(金) 10:30〜
A-Formの基本構造 †
A-Formの大まかな機能 †
ざっとA-Formの機能をお見せする。
- 管理画面
- フォーム一覧
- フォーム作成
- フォーム編集
- 詳細設定
- CSVダウンロード
- アクセスレポート
- プラグイン管理画面と死活監視
- 組み込み方
- エンジン
- 入力画面(非同期エラーチェック、およびアクセスレポート、死活監視との連動)
- 確認画面
- 完了(メールとCSV)
ディレクトリ、ファイル構造 †
ベースとするディレクトリ、ファイル構造は前回の勉強会で紹介した構造を踏襲しています。
A-Formのディレクトリ、ファイル構造の概要は次の通り(一部ディレクトリ、ファイルは省略している)
MT_DIR/
|__ plugins/
| |__ AForm/ <- プラグイン・スクリプト
| |__ aform.pl <- プラグイン本体
| |__ aform_engine.cgi <- フォームエンジンプログラム
| |__ aform_logger.cgi <- アクセスレポート記録プログラム
| |__ aform_checker.cgi <- 死活監視プログラム
| |__ lib/ <- 独自開発のクラスファイルを格納
| | |__ MT/ <- モデルを格納
| | | |__ AForm.pm <- フォームをあらわすモデル
| | | |__ AFormField.pm <- フォームのフィールドをあらわすモデル
| | | |__ AFormData.pm <- フォームの受付データをあらわすモデル
| | | |__ AFormEntry.pm <- フォームとエントリー(またはWebページ)との関連をあらわすモデル
| | | |__ AFormInputError.pm <- フォームの入力エラーログをあらわすモデル
| | | |__ AFormAccess.pm <- フォームのアクセスカウントをあらわすモデル
| | | |__ AFormCounter.pm <- フォームの死活監視用アクセスカウントをあらわすモデル
| | |__ AFormEngineCGI.pm <- フォームエンジンの実体(コントローラ)
| | |__ AFormLoggerCGI.pm <- アクセスレポート記録の実体(コントローラ)
| | |__ AFormCheckerCGI.pm <- 死活監視の実体(コントローラ)
| | |__ AForm/ <- 管理画面側機能とローカライズ関連ファイルを格納
| | |__ CMS.pm <- 管理画面側機能の実体(コントローラ)
| | |__ L10N/ <- 言語ファイルを格納
| | |__ ja.pm <- 日本語言語ファイル
| |__ tmpl/ <- ビュー(テンプレートファイル)を格納
| |__ *.tmpl
|
|__ mt-static/ <- スタティック・ファイル(画像やJS、CSSなど)
|__ plugins/
|__ AForm/
|__ style.css <- エンジン側スタイル
|__ edit_aform.css <- 管理画面側スタイル
|__ images/ <- 画像
|__ js/ <- JavaScriptを格納
|__ aform.js <- エンジン側JavaScript(入力画面)
|__ aform_confirm.js <- エンジン側JavaScript (確認画面)
|__ edit_aform/ <- 管理画面側JavaScriptを格納
|__ edit_aform.js <- フォーム編集画面用モデル
|__ edit_aform_controller.js <- フォーム編集画面用コントローラ
|__ edit_aform_view.js <- フォーム編集画面用ビュー
|__ config_form.js <- 詳細設定画面用
構造の特徴
- プラグイン・スクリプトはplugins/AFormにスタティック・ファイルはmt-static/plugins/AFormに格納して、インストール、アンインストールをファイルのアップロード、ディレクトリ毎の削除だけで行えるようにしている。参照:前回の勉強会
- MT::Objectのサブクラス、テンプレートファイルを利用することでMVC風アーキテクチャで実装している。JavaScriptも巨大なロジックの場合はMVCアーキテクチャを使って実装している。
- MT::Objectのサブクラスのモデルを利用することでDBの実装に依存せずに、MT::Objectのインタフェースを使った透過的なデータ操作を行っている。
- 管理画面側はplugins/AForm/aform.pl、plugins/AForm/lib/AForm/CMS.pmで各画面とその機能を定義、実装している。
- ユーザ側はplugins/AForm/*.cgiからMT::Bootstrapでplugins/AForm/lib/*.pmのロジックを呼び出すことで各CGIの機能を実現している。
- プラグインのローカライゼーション機能を使って現時点では管理側の日本語化を行っている。将来は全体の文言を言語ファイルで定義して、国際化することを目指している。
MVC風アーキテクチャによる実装例 †
モデルの作成 †
資料:
次回予定 †
MVC風アーキテクチャによる実装例の続き、および、「管理画面の画面追加、メニューの追加、権限設定」など予定します。
tag: Movable Type、MT、MTPlugin、勉強会、A-Form
![[PukiWiki] [PukiWiki]](image/sandbox.gif)



