site publis 4.x プラグインフレームワーク仕様書site... · 2008/12/09 1.2 越...

32
SITE PUBLIS 4.x プラグインフレームワーク仕様書 005

Upload: others

Post on 03-Feb-2021

0 views

Category:

Documents


0 download

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 公開ページのキャッシュ動作時の処理のシーケンス図