site publis 4.x プラグインフレームワーク仕様書site... · 2008/12/09 1.2 越...
TRANSCRIPT
-
SITE PUBLIS 4.x プラグインフレームワーク仕様書
第 005 版
-
- 2 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
目次
1. はじめに .......................................................................................................................... 5
2. クラス継承 ...................................................................................................................... 6
3. クラス説明 ...................................................................................................................... 7
3.1. 基本グループ............................................................................................................ 7
3.1.1. MSM_Block ...................................................................................................... 7
3.1.2. MSM_PluginBlock ........................................................................................... 9
3.1.3. MSM_PluginBlockExt ................................................................................... 12
3.1.3.1. 設定項目の追加 ........................................................................................... 19
3.1.3.2. プラグインの Javascript の出力方法 ......................................................... 22
3.1.3.3. プラグインの CSS の出力方法 ................................................................... 23
3.1.3.4. バリデーターについて ................................................................................ 24
3.1.3.5. エラー処理について .................................................................................... 27
4. プラグインフレームワークの処理フロー ..................................................................... 29
4.1. 編集中ページのページ出力処理フロー ................................................................. 29
4.2. 公開ページのキャッシュ生成時の処理フロー ...................................................... 30
4.3. 公開ページのキャッシュ動作時の処理フロー ...................................................... 31
図目次
図 1 プラグインフレームワークのクラス図 ................................................................. 6
図 2 registerParamreters メソッドの記述例と引数について .................................... 19
図 3 内部記述による Javascript 出力 ......................................................................... 23
図 4 外部ファイル参照による Javascript 出力........................................................... 23
図 5 内部記述による CSS 出力.................................................................................... 24
図 6 外部ファイル参照による CSS 出力 ..................................................................... 24
図 7 バリデーターの書式 ............................................................................................. 25
図 8 編集中ページのページ出力処理のシーケンス図 ................................................. 30
図 9 公開ページのキャッシュ生成時の処理のシーケンス図 ...................................... 31
図 10 公開ページのキャッシュ動作時の処理のシーケンス図 .................................... 32
-
- 3 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
表目次
表 1 MSM_Block のメソッド ........................................................................................ 7
表 2 MSM_Block のプロパティ .................................................................................... 9
表 3 MSM_PluginBlock のメソッド ............................................................................. 9
表 4 MSM_PluginBlock のプロパティ ....................................................................... 12
表 5 MSM_PluginBlockExt のメソッド ..................................................................... 12
表 6 MSM_PluginBlockExt のプロパティ .................................................................. 17
表 7 プラグイン設定項目 ............................................................................................. 19
表 8 バリデーターの種類および設定項目 ................................................................... 25
表 9 例外の種類 ........................................................................................................... 27
-
- 4 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
改定履歴
日付 版 修正者 内容
2008/11/06 ドラフト 越 ドラフト
2008/11/06 1.0 田中 承認
2008/11/21 1.1 越 Smarty テンプレートに自動的にアサインされる変
数(エラー! 参照元が見つかりません。)について
追記。
2008/12/09 1.2 越 複数のテンプレートを設定項目に指定できる
PLUGIN_SmartiesExternalXml クラスについて
追記。
2008/12/11 1.3 越 不要な記述を削除。図の差し替え。
2010/05/31 1.4 大場 3.0.x 用バージョン表記差し替え
2014/12/26 1.5 長井 4.x 用バージョン表記差し替え
-
- 5 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
1. はじめに
本稿は、PUBLIS のプラグインフレームワークの開発を行うために必要な情報を提示する。
まず、プラグインフレームワークで使用するクラスの継承関係を示す。次に、各クラスの
詳細な情報について解説する。最後に、代表的な処理フローを解説する。
-
- 6 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
2. クラス継承
プラグインフレームワークのクラス継承を図 1 に示す。
図 1 プラグインフレームワークのクラス図
-
- 7 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
3. クラス説明
プラグインフレームワークで使用するクラスとしては、大きく 3 つに分類される。
基本グループ
プラグインフレームワークの基盤となる機能を提供する。
「lib/MSM/」ディレクトリの下に配置している。
拡張グループ
基本グループのクラスを継承して実装している。
Smatry テンプレートや通信機能といった、サブクラスで共通して利用する機能を提供
する。
「lib/MSM/Plugins/」ディレクトリの下に配置している。
3.1. 基本グループ
基本グループには、次の 3 つのクラスがある。
MSM_Block
MSM_PluginBlock
MSM_PluginBlockExt
3.1.1. MSM_Block
MSM_Block クラスは、CMS で使用するすべてのブロックの基底クラスである。したがっ
て、プラグインブロックの基底クラスでもある。ここでは、プラグインフレームワークに
関連するメソッドとプロパティについて解説をする。
まず、メソッドの解説を表 1 に示す。
表 1 MSM_Block のメソッド
メソッド名 引数 戻り値 説明
getHtml
[public]
$db
データベースオブジェクト
$page
ページオブジェクト
$mode
編集モード
ブ ロ ッ ク
の HTML
ブロックの HTML を
返す。プラグインブロ
ックでは、このメソッ
ドをオーバーライド
して、プラグイン固有
の処理をして生成し
た HTML を返却す
-
- 8 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
る。
getHeadHtml
[public]
$db
データベースオブジェクト
$page
ページオブジェクト
$mode
編集モード
ペ ー ジ の
HEAD 要
素 内 に 出
力 す る
HTML
ブロックごとにペー
ジの HEAD 要素内に
出力する HTML を返
却する
getBlockId
[public]
なし ブ ロ ッ ク
ID
ブロック ID を返却す
る。
getPageBlockId
[public]
なし ペ ー ジ ブ
ロック ID
ページを公開すると、
編集リビジョンと公
開リビジョンでブロ
ック ID が異なる。ペ
ージブロック ID は、
公開リビジョンと編
集リビジョンで対応
するブロックが共通
で持つ ID である。
getParentBlockId
[public]
なし 親 ブ ロ ッ
ク ID
ブロックを内包する
親のブロック ID を返
却する。
getPageId
[public]
なし ページ ID ブロックを配置した
ページ ID を返却す
る。
getRevision
[public]
なし リ ビ ジ ョ
ン
ブロックが所属する
ページリビジョンを
返却する。
getAreaCode
[public]
なし エ リ ア コ
ード
ブロックが所属する
エリアコードを返却
する。
-
- 9 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
getJs
[public]
$db
データベースオブジェクト
Javascript ブロックで使用する
Javascript を返却す
る 。 Javascript は
HEAD 要 素 内 の
script タグの中に挿入
される。
次に、プロパティの解説を表 2 に示す。
表 2 MSM_Block のプロパティ
プロパティ名 説明
$_blockId
[public]
ブロック ID
$_pageId
[public]
ブロックが所属するページ ID
$_revision
[public]
ブロックが所属するリビジョン
$_areaCode
[public]
ブロックが所属するエリアのエリアコード
$_parentBlockId
[public]
親ブロック ID
$_parentBlock
[public]
親ブロックオブジェクトへの参照
$_pageBlockId
[public]
ページブロック ID
3.1.2. MSM_PluginBlock
MSM_PluginBlock は、すべてのプラグインの基底クラスとなる。PUBLIS のプラグイン
クラスは通常このクラスを継承して作成する。ここでは、サブクラスに関連するメソッド
およびプロパティについて解説する。
まず、メソッドの解説を、表 3 に示す。
表 3 MSM_PluginBlock のメソッド
メソッド名 引数 戻り値 説明
-
- 10 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
MSM_PluginBlock
[public]
$blockId
ブロック ID
なし コンストラクタ。生成するブ
ロックオブジェクトの ID を
引数にとる。
getName
[public]
なし プロパテ
ィ
$name、
または、
クラス名
ブロックの名称を返却する。
プロパティ$name に値が設
定されていれば、$name を
返し、設定されていない場合
には、クラス名を返す。
【表示される箇所】
■プラグイン設定の一覧画
面
■プラグイン設定画面
getNameByProgramTitle
[public]
$_programTitle
プラグインプロ
グラム名
プラグイ
ンタイト
ル
プラグインタイトルを返却
する。
【表示される箇所】
■プラグイン設定の一覧画
面
■プラグイン設定画面
getDescription
[public]
なし プラグイ
ンの説明
文
プラグインの説明文を返却
する。
【表示される箇所】
■プラグイン設定の一覧画
面
getHtml
[public]
$db
データベースオ
ブジェクト
$page
ページオブジェ
クト
$mode
編集中モード
ブロック
の
HTML
プラグイン未指定の場合の
メッセージ表示の HTML を
返却する。
MSM_Block::getHtml メソ
ッドをオーバーライドする。
getHeadHtml
[public]
$db
データベースオ
ブジェクト
$page
ページオブジェ
ページの
HEAD
要素内に
出力する
HTML
プラグインブロックでは、デ
フォルトで Javascript を使
用しないため、空を返す。
MSM_Block::getHeadHtml
メソッドをオーバーライド
-
- 11 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
クト
$mode
編集中モード
する。仮に、Javascript を使
用するプラグインを作成す
る場合は、このメソッドをオ
ーバーライドする。
getButtons
[public]
$db
データベースオ
ブジェクト
$permissionDetail
未使用
編集ペー
ジの、ブ
ロックの
操作アイ
コ ン
HTML
SITE PUBLIS4 では使用し
ません。
getTypeName
[public]
なし ブロック
の種別名
ブロックの種類の名称を返
却する。
saveCommonParameters
[public]
$_params
共通設定の連想
配列
$_db[オプション]
データベースオ
ブジェクト
データベ
ースの実
行 結 果
(true or
false)
プラグインの共通設定を保
存するために使用する。
この設定は、プラグインプロ
グラム共通の設定として保
存できる。
loadCommonParameters
[public]
$_db[オプション]
データベースオ
ブジェクト
共通設定
の連想配
列、また
は、null
プラグインの共通設定を読
み出すために使用する。
この設定は、プラグインプロ
グラム共通の設定として使
用できる
また、共通設定が保存されて
いない場合や、保存フォーマ
ットが一致していない場合
には、null を返却する。
getProgramTitle
[public]
なし プラグイ
ンプログ
ラム名
プラグインプログラム名を
返却する。
returnResponse
[public]
なし なし htdocs/plugin_interface.php
から呼び出す。
-
- 12 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
Write
[public]
$_data
ブロックのデー
タを格納した連想
配列
なし ページツリーインポートエ
クスポート用データ書き込
みメソッド
次に、表 4 にプロパティについて示す。
表 4 MSM_PluginBlock のプロパティ
プロパティ名 説明
$name
[protected]
プラグイン名称
$description
[protected]
プラグインの説明
3.1.3. MSM_PluginBlockExt
MSM_PluginBlockExt クラスは、多くのプラグインで必要となる設定画面や、設定保存処
理などをあらかじめ実装したクラスである。
まず、メソッドの解説を、表 5 に示す。
表 5 MSM_PluginBlockExt のメソッド
メソッド名 引数 戻り値 説明
__construct
[public]
$blockId
ブロック ID
なし コンストラクタ
getButtons
[public]
$db
データベースオブ
ジェクト
$permissionDetail
権限設定情報
設定アイ
コンの配
列
SITE PUBLIS4 では使用
しません
getTypeName
[final public]
なし ラベル 設定アイコン右隣のラベル
の文字列を返す
-
- 13 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
getCommonConfHtml
[public]
なし 設定画面
フォーム
部 分 の
HTML
プラグインクラス共通設定
の設定画面を取得する
getCommonConfExecHt
ml
[public]
なし なし プラグインクラス共通設定
の保存処理を行う
getValidatorJavascript
[public]
$_param
プラグインの設定
項目情報の配列
バリデー
タ ー の
Javascri
pt
項目ごとに、バリデーター
の Javascript を生成する
getConfHtml
[public]
$db
データベースオブ
ジェクト
$blockId
ブロック ID
設定画面
HTML
設定画面 HTML を取得す
る
getConfExecHtml
[public]
$db
データベースオブ
ジェクト
$blockId
ブロック ID
$parameter
未使用
設定終了
画面 HTML
設定項目のデータを DB に
登録する。
loadParameters
[public]
$db
データベースオブ
ジェクト
パラメー
ターが保
存されて
いる場合
は連想配
列、無い
場 合 は
null
設定項目のパラメーターデ
ータを取得する。
saveParameters
[public]
$_params
セーブするパラメ
ーターの連想配列
$db
データベースオブ
なし 設定項目のデータを DB に
登録する。
-
- 14 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
ジェクト
getConfigJavascript
[public]
$_common
プラグインの共通
設定かどうかのフラ
グ
プラグイ
ンの設定
画 面 の
Javascri
pt
設定画面のJavascriptを追
加する
getHtmlOnError
[public]
$_e
例外オブジェクト
$_mode
編集中か公開中か
エ ラ ー
HTML
エ ラ ー 時 に 出 力 す る
HTML を返す
errorHandling
[public]
$errno
エラー番号
$errmsg
エラーメッセージ
$file
エラーの発生した
ファイルパス
$line
エラーの発生した
行数
なし Parse 実行時のエラー処理
read
[public]
$_pageList
エクスポート対象
のページ ID 配列
なし ページツリーインポートエ
クスポート用データ読出し
メソッド
writeForPlugin
[public]
$_data
ブロックのデータ
を格納した連想配列
なし ページツリーインポートエ
クスポート用データ書込み
メソッド(プラグイン用:
write メソッドの後に、こ
のメソッドが実行される)
rewrite
[public]
$_idMap
インポートしたペ
ージ ID の連想配列
(key=旧,value=新)
$_working
なし ページツリーインポート後
のリンクの書き換え処理
-
- 15 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
インポート作業デ
ィレクトリ
$_revision
このブロックが属
するページのリビジ
ョン
registerParameters
[protected]
なし なし プラグインのパラメーター
設定(子クラスで実装する)
registerParameter
[protected]
$_key
設定項目の識別子
$_type
設定項目の種別
$_label
設定項目のラベル
$_params
任意の設定項目の
追加情報
$_validator
適応するバリデー
ター関数群
なし プラグインのパラメーター
の追加
deleteParameter
[protected]
$_key
削除する設定項目
の識別子
なし プラグインのパラメーター
の削除
reassignParameter
[protected]
$_key
変更する設定項目
の識別子
$_param
変更する設定項目
の要素
$_value
変更する設定項目
の要素の値
なし プラグインのパラメーター
の変更
-
- 16 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
getParameterHtml
[protected]
$_params
パラメーター情報
( pesistentParamet
ers ま た は 、
commonParameters
)
$_data
保存されたパラメ
ーター
設定画面
用のパラ
メーター
フォーム
設定画面用のパラメーター
フォームを作成する
getExtraParameterHtm
l
[protected]
$_params
設定項目情報が格
納されている
$_value
設定項目に対する
設定値が格納されて
いる
$_data
その他の設定項目
の設定値を取得する
ため
設定項目
の HTML
独自の設定項目を追加す
る。サブクラスでオーバー
ライドして任意の設定項目
を追加する。
getConfigCss
[protected]
なし 設定画面
の CSS
設定画面の CSS を追加す
る
clearErrors
[protected]
なし なし エラー情報をクリアする
checkErrors
[protected]
なし なし‘ エラーチェックを行い、エ
ラ ー が あ る 場 合 は 、
MSM_Exception_Invalid
Data を送出する。
hasParameterType
[protected]
$_type
チェックするパラ
メーター情報
引数のパ
ラメータ
ーがある
場合には
true, 無
プラグインが引数のパラメ
ーター種別のパラメーター
を持つか?
-
- 17 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
い場合に
は false
hasCommonParameterT
ype
[protected]
$_type
チェックするパラ
メーター情報
引数のパ
ラメータ
ーがある
場合には
true, 無
い場合に
は false
引数$_type で与えたパラ
メーター種別と同じ、パラ
メーターを設定項目として
持つか?
getActiveId
[protected]
$key
パラメーター名
$_db
データベースオブ
ジェクト
有効な ID 共通・個別設定の中から現
在有効となっている ID を
取得する
getActiveValue
[protected]
$key
パラメーター名
$_db
データベースオブ
ジェクト
有効な値 共通・個別設定の中から現
在有効となっている値を取
得する
次に、プロパティの解説を表 6 に示す。
表 6 MSM_PluginBlockExt のプロパティ
プロパティ名 説明
parametersCache
[protected]
個別パラメーターのキャッシュ
config
[protected]
設定画面情報
もし null ならば、設定画面は無い。
設定する場合には、次の例に従って連想配列
を代入する。
array(
'icon' => 'img/icon/edit.gif',
'title' => '設定画面',
'width' => 600,
'height' => 800
-
- 18 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
);
label
[protected]
ラベルとして表示する文字列を設定する
persistentParameters
[protected]
プラグインで永続的に保存するパラメータ
ー
次の項目を持つ連想配列が1つのパラメータ
ーに対応する。
key: プラグラム内でパラメーターを識別す
るために利用する。
label: ページ内に表示される文字列であり、
利用者はこの文字列でパラメーターを認識
する。
type: 設定画面において、表示する input の
形式となる。
ext: 任意の要素のプロパティを設定する(と
りあえず TYPE_TEXT だけ)。
items: type が TYPE_SELECT または
TYPE_RADIO の場合に選択項目を設定す
る。
value: value に対応する。
label: ページ内に表示される文字列であり、
利用者はこの文字列で選択項目を認識する。
TYPE_REF 用に特別の設定項目がある。
url: 選択ボタンを押して開かれる URL
callback: 選択ウィンドウの GET パラメー
ターに callback として渡される。
width: 選択ウィンドウの幅
height: 選択ウィンドウの高さ
TYPE_LABEL 用に特別の設定項目がある。
default: 初期状態で表示される文字
commonParameters
[protected]
プラグインの共通設定パラメーター
errors
[protected]
エラー情報配列
-
- 19 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
parametersType
[protected]
プラグインが保有するパラメーター種別の
リスト
commonParametersType
[protected]
プラグインが保有するパラメーター種別の
リスト
3.1.3.1. 設定項目の追加
MSM_PluginBlockExt クラスでは、プラグインに対して設定項目を簡単に追加できる仕組
みを実装している。ここでは、設定項目の追加の方法について述べる。
プラグインに対して設定項目を追加する場合には、registerParameters メソッドを使用す
る。registerParameters メソッドの記述例と、引数の詳細については図 2 に示す。
図 2 registerParamreters メソッドの記述例と引数について
表 7 プラグイン設定項目
定数名 定数値 説明
TYPE_TEXT 1 【テキストボックス】
任意の文字列をテキストボックスで設定で
きる。
■設定項目オプション
default: デフォルト値
【記述例】
registerParameter( ‘url’, MSM_PluginBlockExt::TYPE_TEXT, ‘接続先 URL’ ,
array('ext' => 'size="80"'), array( 'MaxLength' => array('maxLength'=>
100 )) );
第一引数
HTML ソースにおける ‘key’の設定。
Input 要素の id 属性,name 属性の値の名称,Javascript の関数名など
に使われる。
第二引数 設定項目の種類の指定である (表 7 参照)
MSM_PluginBlockExt::TYPE_URL と書く必要がある。
第三引数 編集・設定画面における名称となる。
第四引数 設定項目オプションである.連想配列で格納される。
第二引数で与え多設定項目の種類により、指定できる設定項目オプシ
ョン(表 7 参照)は異なる。
第五引数 入力された値の有効判別(バリデーター)を設定できる。
3.1.3.4 で詳しく述べる。
-
- 20 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
TYPE_SELECT 2 【セレクトボックス】
■設定項目オプション
items: を生成するための配列。
配列の要素は、label と value をキーとす
る連想配列。
TYPE_RADIO 3 【ラジオボタン】
■設定項目オプション
items: ラジオボタンを生成するための配
列。配列の要素は、label と value をキー
とする連想配列。
TYPE_CHECK 4 【チェックボックス】
■設定項目オプション
description: チェックボックスの label要
素として表示する文字列。
TYPE_REF 5 【別ウィンドウ呼び出し】
別ウィンドウを開き、そのウィンドウで設
定した値を保存する。
■設定項目オプション
width: 別ウィンドウ幅
height: 別ウィンドウ高さ
url: 別ウィンドウで開く URL
callback: 別ウィンドウの GET パラメー
ターcallback に渡す文字列。
TYPE_LABEL 6 【ラベル】
入力を受け付けないテキストボックスを表
示する。
TYPE_SUB 7 【保存のみ】
可視要素ではない。
通常、設定項目一つに対して、設定値を保
存できるのは一つの値のみである。そこで、
一つの設定項目で、複数の設定値を保存す
る場合に使用する。
TYPE_URL 11 【URL】
外部接続の URL の設定に使用する。
ただし、現状は未使用。
■設定項目オプション
-
- 21 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
default: デフォルト値
TYPE_DATE 8 【日付】
カレンダーによる、日付入力で日時を設定
する。
TYPE_FILE 10 【画像選択】
ライブラリ・バリアブルファイルの選択ウ
ィンドウから画像を選択して設定する。
TYPE_LINK 9 【リンク】
CMS 内のページまたは、任意の URL が設
定できる。設定した値は、a 要素の参照先
(href)などに使用する。
■設定項目オプション
default: デフォルト値
TYPE_THUMBNAIL 12 【モバイル用の画像サムネイル】
モバイルフィルターで、サムネイル画像と
して取り扱うために img 要素に与える属性
を設定する。
TYPE_INPUT_URL 13 【URL】
TYPE_URL と同様だが、外部接続としては
みなさない。
現状は未使用。
TYPE_RSS 14 【RSS】
通常 RSS と動的 RSS を選択する別ウィン
ドウが表示され、選択した RSS のリンクが
設定される。
TYPE_REF_WITH_LABEL 15 【別ウィンドウ呼び出しラベル付き】
別ウィンドウを開き、そのウィンドウで設
定した値を保存する。
■設定項目オプション
width: 別ウィンドウ幅
height: 別ウィンドウ高さ
url: 別ウィンドウで開く URL
TYPE_TEXTAREA 16 【テキストエリア】
■設定項目オプション
default: デフォルト値
TYPE_CHECKBOXES 17 【複数チェックボックス】
-
- 22 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
複数のチェックボックスで、選択値は配列
で送信される。
■設定項目オプション
items: チェックボックスを生成するため
の配列。配列の要素は、label と value を
キーとする連想配列。
TYPE_EXTENDED_LINK 51 【共通・個別設定選択可能なリンク】
TYPE_LINK と同様であるが、共通設定と
個別設定の選択ができるようになる。
TYPE_EXTENDED_RSS 52 【共通・個別設定選択可能な RSS】
TYPE_RSS と同様であるが、共通設定と個
別設定の選択ができるようになる。
TYPE_TEMPLATE
(PLUGIN_Smarty)
101 【テンプレート】
Smarty テンプレートを別ウィンドウで選
択する。また、共通設定と個別設定の選択
ができる。
TYPE_QUERY_PARAMS
(PLUGIN_SmartyExternalData)
102 【外部接続時のリクエストパラメーター】
PLUGIN_SmartyExternalData::$pramN
um により、表示するパラメーター数を設定
できる。
3.1.3.2. プラグインの Javascriptの出力方法
プラグインで Javascript を出力する方法として内部記述(図 3 図 3 内部記述による
Javascript 出力)と外部ファイル参照(図 4)の 2 つある。
内部記述による Javascript の出力
MSM_Block::getJs メソッドをオーバーライドして、返却文字列に出力したい
Javascript を追加する。
-
- 23 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
図 3 内部記述による Javascript 出力
外部ファイル参照による Javascript 出力
まず、Javascript を記述したファイルを CMS のライブラリに登録する。次に
MSM_Block::getHeadHtml メソッドをオーバーライドして、ライブラリに登録した
Javascript ファイルをインクルードするタグを返却文字列に加える。
図 4 外部ファイル参照による Javascript 出力
3.1.3.3. プラグインの CSSの出力方法
プラグインで CSS を出力する方法として、内部記述(
図 5)と外部ファイル参照(図 6)の2つがある。
内部記述による CSS 出力
MSM_Block::getHeadHtml メソッドをオーバーライドして、タグを返却する。
…(省略)…function getJs($db) {
$js = parent::getJs($db);
$js .=
-
- 24 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
図 5 内部記述による CSS 出力
外部ファイル参照による CSS 出力
まず、CSS を記述したファイルを CMS のライブラリに登録する。次に、
MSM_Block::getHeadHtml メソッドをオーバーライドして、ライブラリに登録した
CSS をインクルードするためのタグを返却するようにする。
図 6 外部ファイル参照による CSS 出力
3.1.3.4. バリデーターについて
バリデーターの書式を図 7 に示す。またバリデーターの種類と設定項目を表 8 に示す。
…(省略)…function getHeadHtml(&$db, &$page, $mode=VIEW_MODE) {
$html = parent::getHeadHtml($db, $page, $mode);
$html .=
-
- 25 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
図 7 バリデーターの書式
表 8 バリデーターの種類および設定項目
名称 説明 パラメーター
名称 説明 必須 デフォル
ト
Equal パラメーター
「equalValue」と入
力値が一致するか
チェックする
equalValue 入力値と一致
しているか比
較を行う値 test
Float 入力値が、少数値で
あるかチェックす
る
signMode 符号付きを許
可する場合は
true
TRUE
Integer 入力値が、整数値で
あるかチェックす
る
signMode 符号付きを許
可する場合は
true
TRUE
LessThan パラメーター
「maxValue」より入
力値が小さいかチ
maxValue 入力値が超え
てはならない
数値を指定す
10
protected function registerParameters() {
$this->registerParameter('integer', self::TYPE_TEXT, '整数値', null, array('Integer'=>array('signMode'=>false)));
}
registerParameter() メソッドの第5引数は、バリデータの指定である。
バリデータは、連想配列で指定する。複数のバリデータが設定と共に指定可能である。
【書式】array(
‘(バリデータ名)’ => array( [バリデータの設定key=>value, 複数設定項目がある場合には並べる] ),…複数バリデータが存在する場合は繰り返す…
)
【例】符号指定が可能な整数値で、1000に満たない場合にOKであるバリデータarray(
‘Integer’ => array( ‘signMode’ => false ),
‘LessThan’ => array( ‘maxValue’ => 1000, ‘maxEqualInclude’ => false )
)
-
- 26 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
ェックする る
maxEqualInclude maxValueと等
しい入力値を
許可する場合
には true
TRUE
MoreThan パラメーター
「minValue」より入
力値が大きいかチ
ェックする
minValue 入力値が越え
てなくてはな
らない数値を
指定する
10
minEqualInclude minValueと等
しい入力値を
許可する場合
には true
FALSE
MaxLength 入力値の文字数が
パラメーター
「maxLength」以下
であるかチェック
する
maxLength 入力値が超え
てはならない
文字数を指定
する
50
byteMode 文字数ではな
くてバイト数
でチェックす
る場合は true
FALSE
MinLength 入力値の文字数が
パラメーター
「minLength」以上
であるかチェック
する
minLength 入力値が超え
なくてはなら
ない文字数を
指定する
50
byteMode 文字数ではな
くてバイト数
でチェックを
する場合は
true
FALSE
PgInteger PostgreSQL の
Integer型であるか
チェックする
なし
PgSmallint PostgreSQL の
Smallint型である
なし
-
- 27 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
かチェックする
Range 入力値がパラメー
ター「minValue」
「maxValue」の範囲
内にあるかチェッ
クする。
minValue 最小値。入力値
が超えなけれ
ばならない数
値を指定する。
○
minEqualInclude:
デフォルト false
最小値と等し
い入力値を許
可する場合に
は true,
FALSE
maxValue 最大値。入力値
が超えてはな
らない数値を
指定する。
○
maxEqualInclude 最大値と等し
い入力値を許
可する場合に
は true
FALSE
Required 入力値が設定され
ているかチェック
する
なし
Number 入力値が数字かど
うかチェックする
signMode 符号付きを許
可する場合は
true
FALSE
3.1.3.5. エラー処理について
プラグインフレームワークで、エラーが発生した場合に送出する例外を表 9 に示す。
表 9 例外の種類
例外 説明 対応するエラーの種類
MSM_Exception_ConnectionFailed 接続失敗例外 外部システムとの接続に失敗
MSM_Exception_HttpResponse HTTP レスポンスコ
ードエラー例外
getResponseCode()
メソッドで、レスポン
スコードを取得でき
外部システムからの HTTP レ
スポンスコードが異状
-
- 28 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
る
getBody() メソッド
で、受信したデータを
取得できる
MSM_Exception_InvalidData 不正データエラー例
外
■外部システムから想定外のデ
ータが戻ってくる
■テンプレートの表示処理に失
敗
MSM_Exception_Timeout タイムアウト例外 外部システムとの接続がタイム
アウト
エラー発生後は、例外オブジェクトを引数として getHtmlOnError メソッドが呼ばれる。
しがって、サブクラスで独自のエラー処理を実装したい場合には、getHtmlOnError をオ
ーバーライドする。
-
- 29 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
4. プラグインフレームワークの処理フロー
プラグインフレームワークの処理フローとして、大きく分けて次の 3 つある。
編集中ページのページ出力処理フロー
公開ページのキャッシュ生成時の処理フロー
公開ページのキャッシュ動作時の処理フロー
本章では、これらの 3 つのフローについて解説する。また、本章の図において説明のため
PLUGIN_samplel と書いているが、これは PLUGIN_SmartyExternalXml クラスを継承
して実装するサブクラスである。
4.1. 編集中ページのページ出力処理フロー
編集中ページのページ出力処理フローを図 8 に示す。この処理は、高速化の考慮は一切さ
れていない。したがって、高速なページ出力のボトルネックとなる、データベースへの問
い合わせをすべて実行する。代表的なデータベースへの問い合わせが必要な処理としては、
プラグインの設定情報の読み出し ( MSM_PluginBlock::loadCommonParameters(),
MSM_PluginBlockExt::loadParameters() )がある。
-
- 30 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
図 8 編集中ページのページ出力処理のシーケンス図
4.2. 公開ページのキャッシュ生成時の処理フロー
公開ページのキャッシュ生成時の処理フローを図 9 に示す。編集中ページのページ出力と
の違いは、PLUGIN_sample::getHtml() 内において、取得した HTML に対して、部分動
的処理制御用の HTML コメントタグ(以後、部分動的タグ)を前後に挿入する点である。
このタグには、キャッシュ動作時に用いるパラメーターを付加する。このパラメーターに、
データベースから取得したプラグインの設定情報を含めることで、キャッシュ動作時にデ
ータベース処理を省略して高速化を実現する。
ここで、部分動的タグに付加するパラメーターを生成について述べる。
パラメーターは、getParameters() メソッドで連想配列を生成して返却する
親クラスの getParamters() メソッドでテンプレートや接続先の設定を行っているた
-
- 31 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
め、parent::getParamters() メソッドで取得した連想配列の内容をマージする必要が
ある
getParameters() はキャッシュ動作時には呼ばれないため、リクエストの度に値が変
わる GET パラメーターのような値を返却する連想配列に含めてはならない
getParameters() メソッドで返却する連想配列のキーと値は、文字列でなければなら
ない
図 9 公開ページのキャッシュ生成時の処理のシーケンス図
4.3. 公開ページのキャッシュ動作時の処理フロー
公開ページのキャッシュ動作時の処理フローを図 10 に示す。この処理において注意する点
を次に列挙する。
ページ出力処理の速度劣化を回避するために、データベースアクセスを行わないよう
にする
GET パラメーターを、出力に反映する必要がある場合には、initialize() メソッド内で
適切に処理する必要がある
-
- 32 -
SITE PUBLIS 4.x プラグインフレームワーク仕様書
部分動的処理の共通処理が含まれるため、親クラスの initialize() メソッドは必ず
呼ぶようにする
Smarty テンプレートに対する GET パラメーターから生成する変数のアサイン
共通処理で処理が上書きされないように parent::initialize() メソッドよりも後に
処理する
GET パラメーターにより、接続先 URL が変化する場合の対応
共通処理で、コンポーネントへの接続登録を行うため、parent::initialize() メソッ
ドの引数である連想配列のキーが url の値を変更する必要がある
図 10 公開ページのキャッシュ動作時の処理のシーケンス図