MODX管理画面でフォルダ(コンテナ)内だけを編集可能にする
MODXの管理画面で、ユーザの権限(投稿者等)によっては、
・特定のフォルダ(コンテナ)以下は編集可能にしたいが、
・フォルダ(コンテナ)自体は編集できないようにしたい。
という場合、
・グローバル設定/インターフェースとその他の機能で、
「権限のないリソースの表示」を「はい」にして、
・フォルダ(コンテナ)の所属グループを設定する。
という方法がありますが、
これだと、ツリーで見せたくないリソースやフォルダ(コンテナ)等があっても、ユーザに見えてしまいますね。
そこで、
編集させたくないフォルダ(コンテナ)の所属グループは設定せず(制限なし)にしておいて、
MODXプラグインManagerManagerの「mm_widget_accessdenied」を使って、 画面上の表示で編集不可にするという方法があります。
http://modx.jp/docs/extras/plugins/mm/widgets.html
使い方は、リソースIDとメッセージとロールを指定するだけです。
他のManagerManagerの機能を使ったことがある人なら問題なく使えると思いますので、 以下、「mm_widget_accessdenied」応用編ということで…
そこで、以下のような感じで、該当のページが指定のテンプレートを使用していたら「mm_widget_accessdenied」を呼び出すという関数を定義して使うという方法があります。
ドキュメントルート(例:http;//hogehoge.com/)にMODXをインストールした場合、 「mm_widget_accessdenied」は、警告アイコン(三角形に「!」マーク)とメッセージを表示しますが、
ドキュメントルート以外の場所(例:http;//hogehoge.com/fugafuga/)にMODXをインストールした場合、そのままでは警告アイコンが出ません。(メッセージは出ます)
それは「assets/plugins/managermanager/widgets/accessdenied/accessdenied.css」内に警告アイコンのパスが「/assets/plugins/managermanager/widgets/accessdenied/alert.png」と設定されているからです。
ですので、この部分をサイトにあわせて(例:「/fugafuga/assets/plugins/managermanager/widgets/accessdenied/alert.png」に)変更すれば、警告アイコンも出るようになります。
・特定のフォルダ(コンテナ)以下は編集可能にしたいが、
・フォルダ(コンテナ)自体は編集できないようにしたい。
という場合、
・グローバル設定/インターフェースとその他の機能で、
「権限のないリソースの表示」を「はい」にして、
・フォルダ(コンテナ)の所属グループを設定する。
という方法がありますが、
これだと、ツリーで見せたくないリソースやフォルダ(コンテナ)等があっても、ユーザに見えてしまいますね。
そこで、
編集させたくないフォルダ(コンテナ)の所属グループは設定せず(制限なし)にしておいて、
MODXプラグインManagerManagerの「mm_widget_accessdenied」を使って、 画面上の表示で編集不可にするという方法があります。
http://modx.jp/docs/extras/plugins/mm/widgets.html
使い方は、リソースIDとメッセージとロールを指定するだけです。
他のManagerManagerの機能を使ったことがある人なら問題なく使えると思いますので、 以下、「mm_widget_accessdenied」応用編ということで…
1)テンプレート単位でアクセス不可にする。
「mm_widget_accessdenied」の指定がリソース単位(リソースIDによる指定)ですので、そのままでは、テンプレートによって編集不可にするということができません。そこで、以下のような感じで、該当のページが指定のテンプレートを使用していたら「mm_widget_accessdenied」を呼び出すという関数を定義して使うという方法があります。
// テンプレートID指定でアクセス不可を設定する関数 if (! function_exists("mm_deny_templates")) { function mm_deny_templates($role_users, $tpl, $denied_message) { global $mm_current_page; $templates = makeArray($tpl); if (in_array($mm_current_page['template'], $templates)) { $docid = (int)$_GET[id]; mm_widget_accessdenied($docid, $denied_message, $role_users); } } } $role = '!1'; // 管理者(ロールID:1)以外のユーザに対して $tpl = '1,2'; // テンプレートIDが1,2の場合、ユーザは編集不可にする。 $msg = 'このフォルダ自体は編集できません。子リソースを作成・編集して下さい。'; mm_deny_templates($role, $tpl, $msg);
2)ドキュメントルート以外にMODXをインストールした場合
※この問題は、MODX 1.0.5J-r6で修正されました。ドキュメントルート(例:http;//hogehoge.com/)にMODXをインストールした場合、 「mm_widget_accessdenied」は、警告アイコン(三角形に「!」マーク)とメッセージを表示しますが、
それは「assets/plugins/managermanager/widgets/accessdenied/accessdenied.css」内に警告アイコンのパスが「/assets/plugins/managermanager/widgets/accessdenied/alert.png」と設定されているからです。
ですので、この部分をサイトにあわせて(例:「/fugafuga/assets/plugins/managermanager/widgets/accessdenied/alert.png」に)変更すれば、警告アイコンも出るようになります。