MODx資料/ManagerManager(プラグイン)

MODx管理画面のドキュメント作成/編集画面をカスタマイズするプラグインです。
ロール(権限)やテンプレート毎にカスタマイズすることも可能です。

適用例)
  • 「公開する」等、よく使う入力フィールドを、最初に開く「プロフィール」タグで入力できるようにし、逆にあまり使わないような入力フィールドを「ページ設定」タブに移動する。
  • 入力フィールドのラベル(入力項目の名前)を、テンプレート毎にわかりやすいラベルに変更する。
  • ユーザーのリテラシーや適用業務にあわせて、ヘルプをわかりやすいものに変更する。
  • テンプレートによって、使用しないフィールドを非表示にする。
  • 特定のユーザー用に、ロール(権限)単位に入力画面をカスタマイズする。
    たとえば、権限Aのユーザは入力できるが、権限Bのユーザは入力できないように、入力フィールドを非表示にする。権限によってプロフィールタブに出る入力フィールドを変えたり、ラベルを切り替える。
MODx標準のドキュメント作成/編集画面 カスタマイズ後のドキュメント作成/編集画面例
デフォルト画面 カスタマイズ済み画面
※テンプレート変数は、ManagerManagerではなく、MODx標準の機能です。

(注意) この資料は、モジュール同梱のドキュメントやソース、公開されている情報を参考に、独自に作成したものです。


このページの目次
■1.インストール
■2.使い方
■3.入力フィールドのカスタマイズ
■4.タブに関するカスタマイズ
  • タブのラベルを変更する:mm_renameTab
  • 特定のタブを非表示にする:mm_hideTabs
  • 新しくタブを追加する:mm_createTab
  • 入力フィールドを別のタブに移動する:mm_moveFieldsToTab
■5.ウィジェットのカスタマイズ
  • ウィジェットを変更する:mm_widget_tags
  • mm_widget_showimagetvs
  • mm_widget_colors
  • mm_widget_accessdenied
■6.セクションのカスタマイズ
  • セクションのラベルを変更する:mm_renameSection
  • 特定のセクションを非表示にする:mm_hideSections
■7.上級編

■1.インストール

一般的なMODxプラグイン同様に、以下のようにインストールします。
  1. ダウンロード&展開
    MODx公式サイトのこのページからManagerManagerをダウンロードして、展開(解凍)します。
    現在(2009年6月23日時点)の最新バージョンは「0.3.2.1」です。
  2. アップロード
    「v0.3.2/assets/plugins/」の「managermanager」を「assets/plugins/」にFTPでアップロードします。
  3. プラグインの作成
    管理画面(リソース > リソース管理 > プラグイン)からプラグインを作成し、
    「v0.3.2/plugin.txt」の内容をエディタ等で開いて、プラグインコード欄に貼り付けます。
    プラグイン名欄には「ManagerManager」、
    説明には適宜「<strong>0.3.2.1</strong> Manage the ModX Manager」等を入力します。
  4. システムイベントの設定
    「システムイベント」タブを開き、
    「Documents」にある「OnDocFormRender」「OnDocFormPrerender」と、
    「Plugins」にある「OnPluginFormRender」にチェックを入れ、
    「保存」します。

カスタマイズ内容を指定する方法は、以下の2通りあります。

  • チャンクで
  • プラグインコード(「v0.3.2/plugin.txt」から貼り付けたもの)の18行目、
    「$config_chunk = '';」のところで「$config_chunk = 'mm_rules';」 のようにチャンク名を指定し、
    そのチャンク名でチャンクを作成します。
    (チャンクが空でなければ、下記のアップロードファイルより優先されます)
  • FTPで設定ファイルをアップロードして
    「assets/plugins/managermanager/mm_rules.inc.php」を編集してアップロードします。

自サイトで「jquery.js」を用意する方法

ManagerManagerは「jquery.js」(jQuery1.2系)を使用します。
デフォルトで「http://ajax.googleapis.com/ajax/libs/jquery/1.2/jquery.min.js」を使用しますが、
最新のものを入手したり、カスタマイズする等して、自サイトにアップロードし、これを使うようにすることもできます。

注意)
jQuery1.3系を使用する際は注意が必要です。 → jQuery1.3系を利用してパフォーマンスUP

設定例)
http://jquery.com/src/jquery-latest.pack.js」より最新のJavascriptのソースを入手し、
ファイル名を「jquery.js」として「/assets/js/」にアップロードします。
プラグインコード(「v0.3.2/plugin.txt」から貼り付けたもの)の22行目、
「$js_url = '';」のところで「$js_url = 'http://www.yoursite.com/assets/js/jquery.js';」 のように URLを指定することで、これが使用されるようになります。


■2.使い方

前述の通り、チャンクかPHPファイルを使って、下記のようにカスタマイズ内容を設定します。
記法はPHPの文法に従って、各カスタマイズ内容(入力フィールドのラベルを変更、入力フィールドを非表示、…)毎に用意されている、関数を必要なだけ記述します。
その際、テンプレートのIDかロール(権限)のID、もしくは、その両方を指定してカスタマイズする条件を指定します。(条件を省略した場合、全てのドキュメント作成/編集画面がカスタマイズされます)
なお、基本的にパラメータは文字で指定します。(省略する場合は空文字「''」で指定します。)
ちなみに、下記例の「$tpl = '4';」のようにPHPの変数を使うと便利です。

カスタマイズ内容の例


カスタマイズする対象については、必要に応じて下記のフィールド名、タブ名、セクション名を、各関数のパラメータに指定します。

入力フィールド名一覧
フィールド名 デフォルトラベル
pagetitle タイトル
longtitle 長いタイトル
description 説明
alias ドキュメントエイリアス
link_attributes リンク属性
introtext 要約(序説)
template 使用テンプレート
menutitle メニュータイトル
menuindex メニューインデックス
show_in_menu メニューに表示
parent 親ドキュメント
is_folder フォルダ属性
is_richtext リッチテキストで編集
log アクセスログを記録
published 公開する
pub_date 公開開始日時
unpub_date 公開取消日時
searchable 検索対象に含める
cacheable キャッシュを生成
clear_cache 更新時にキャッシュをクリア
content_type コンテントタイプ
content_dispo 内容の配置
keywords キーワード
metatags METAタグ
content 内容
which_editor 使用エディター
タブ名一覧
タブ名 デフォルトラベル
general プロフィール
settings ページ設定
meta META キーワード
preview プレビュー
セクション名一覧
セクション名 デフォルトラベル
docsettings ドキュメント設定
content 内容
tvs テンプレート変数
access アクセス許可

使用する際の注意

ManagerManagerはjQueryを使ってHTMLをダイナミックに操作する特性上、同じ項目を対象にした複数回の処理は原則できないものと考えてください。
(例えば、FフィールドをT1タブに移動してからT2タブに移動するケース、など)


■3.入力フィールドのカスタマイズ

入力フィールドのラベル(見出し)を変更する:mm_renameField

mm_renameField($field, $newlabel, $roles, $templates, $newhelp)
入力フィールドのラベル(見出し)を変更します。

パラメータ 説明
$field カスタマイズする入力フィールド名。一度に複数は指定できない。[必須]
$newlabel 新しいラベル。[必須]
$roles ロール(権限)IDの指定(カンマ区切りで複数指定可能)。[任意]
$templates テンプレートIDの指定(カンマ区切りで複数指定可能)。[任意]
$newhelp ヘルプテキスト(mm_changeFieldHelpと同様)。[任意]

入力フィールドを非表示にする:mm_hideFields

mm_hideFields($fields, $roles, $templates)
入力フィールドを非表示にします。

パラメータ 説明
$fields 非表示にする入力フィールド名(カンマ区切りで複数指定可能)。[必須]
テンプレート変数名の前に「tv」を付けることで、テンプレート変数も日表示することが可能。
$roles ロール(権限)IDの指定(カンマ区切りで複数指定可能)。[任意]
$templates テンプレートIDの指定(カンマ区切りで複数指定可能)。[任意]


以下、工事中です。すみません。



■7.上級編

jQuery1.3系を利用してパフォーマンスUP

ManagerManager(0.3.2)は、jQuery(1.2.6)で動作します。2009年6月時点のjQueryの最新バージョンは 1.3.2ですが、1.2系と比べパフォーマンスが大幅に改善されてます。特に、相性の悪かったIEでの処理時間が大幅に短縮できます。但し、1.3系ではセレクタの命名規則が変更されたため、使用にはManagerManagerのソースを数本修正する必要があります(@を削るだけ)。

jQuery1.3のリポート(性能データ)
http://journal.mycom.co.jp/articles/2009/01/28/jquery/index.html

ManagerManagerの修正方法(英語)
http://modxcms.com/forums/index.php/topic,32084.msg215609.html#msg215609


更新履歴
  • 2009-06-29
    jQuery1.3系を使う際の注意等を追記(special thanks:sama55さん)
  • 2009-06-23
    とりあえず、途中まで公開。