オブジェクト共通の管理機能の利用方法の変更
PowerCMS にはオブジェクトの追加・変更・閲覧・削除を行うための共通の管理機能が用意されています。 この機能はプラグインから追加した独自のオブジェクトでも利用可能で、以下のパラメータを持つ管理画面のURLを指定することで利用できます。
_mode | view、save、delete のいずれか |
---|---|
_type | オブジェクトの識別子 |
PowerCMS 5 ではこの機能は追加の設定無しに利用することが可能でしたが、PowerCMS 6 ではデフォルトの状態が利用禁止に変わりました。 オブジェクト共通の管理機能を利用する場合は以下のようにレジストリに enable_object_methods を記述します。
applications: cms: enable_object_methods: <オブジェクトの識別子>: edit: 1 save: 1 delete: 1
※YAML フォーマットで定義する場合の記述サンプルです。
edit、save、delete は以下の操作に対応し、1 を指定することで操作を許可することができます。
edit | 新規作成、編集および閲覧画面の表示 |
---|---|
save | 新規作成および保存の実行 |
delete | 削除 |
enable_object_methods を指定しない状態で共通の管理機能を使用した場合は以下のエラーメッセージが表示されます。
- PowerCMS 6.011 以上で表示されるエラーメッセージの内容
-
この操作は許可されていません。この操作を行うには、enable_object_methods で [オブジェクト識別子] に対する [操作] の定義が必要です。
- PowerCMS 6.01 以下で表示されるエラーメッセージの内容
-
不正な要求です。
また、PowerCMS 5 では管理画面を利用可能なユーザーが前述の URL を直接ブラウザに指定することで該当機能を利用できることを防ぐために レジストリに disable_object_methods を記述することでその機能を禁止できるようになっています。
applications: cms: disable_object_methods: <オブジェクトの識別子>: edit: 1 save: 1 delete: 1
従って、プラグインが以下の条件に当てはまった場合はプラグインの修正が必要になります。
- レジストリ object_types で独自のオブジェクトを追加している
- 追加している独自のオブジェクトの中に disable_object_methods が指定されていないものがある
- 下記のいずれかに該当し、オブジェクト共通の管理機能を使用している
- レジストリの管理画面メニュー、リストアクションの定義で以下のような指定が存在する
- mode: view、save、delete のいずれか
- args:
- _type: 独自のオブジェクトの識別子
- リスト項目やテンプレート等などのHTMLを出力している箇所で以下のパラメータを持つ URL を生成している
- _mode: view、save、delete のいずれか
- _type: 独自のオブジェクトの識別子
修正内容は以下になります。
- _type に指定されている全てのオブジェクトに対して enable_object_methods の記述を追加する
- disable_object_methods がある場合は削除せずそのまま残す
たとえば obj_foo と obj_bar のふたつの独自オブジェクトがある場合に、obj_foo は全ての操作が可能、obj_bar は閲覧と削除だけ可能とする場合は以下のように記述します。
object_types: obj_foo: MT::ObjFoo obj_bar: MT::ObjBar applications: cms: enable_object_methods: obj_foo: edit: 1 save: 1 delete: 1 obj_bar: edit: 1 delete: 1
- 一覧へ