リソース編集画面で保存、削除、等を非表示にしたい

質問全般・改善要望
返信する
aru
メンバー
メンバー
記事: 16
登録日時: 2012年12月05日(水) 15:53

リソース編集画面で保存、削除、等を非表示にしたい

投稿記事 by aru »

いつもお世話になっております。

管理画面で、ログインユーザーのロール及びリソース別に、
リソースの編集画面に表示される保存、複製、削除、等を個別に非表示にしたいと
考えております。

また同様に、管理画面上部メニューにある「メイン→検索」や「レポート」を、
ログインユーザーのロール別に非表示にしたいと考えております。

これらはどうすれば実現できますでしょうか。
ManagerManagerで非表示にできないかとも思いましたが、自分で調べた限りでは実現方法がわかりませんでした。

なお、管理画面上部メニューについては、以下の記事で対応できるかと思いましたが、
実際に設定しても非表示にできませんでした。
http://forum.modx.jp/viewtopic.php?f=16 ... ager#p4232

ManagerManagerのバージョン: 0.3.11

お知恵を貸して頂けないでしょうか、よろしくお願い致します。

-----
ご利用のサーバ:ロリポップ
MODXのバージョン:1.0.6J-r4
PHPのバージョン:5.2.17
MySQLのバージョン:5.1.59-community-log
ブラウザ:Firefox 17.0.1
-----
アバター
yama
管理人
記事: 3251
登録日時: 2009年7月29日(水) 02:50

Re: リソース編集画面で保存、削除、等を非表示にしたい

投稿記事 by yama »

aru さんが書きました:管理画面で、ログインユーザーのロール及びリソース別に、
リソースの編集画面に表示される保存、複製、削除、等を個別に非表示にしたいと
考えております。
設定方法としては少し分かりにくいかもしれませんが、ロール設定で保存・複製・削除の権限を制限すれば、それらのボタンも表示されなくなります。リソースごとにコントロールするのは、動的に権限を書き換えると可能かもしれません。明日になりますが、もしよければ説明いたします。あるいは、グループ管理機能を使うとよいかもしれません。
aru さんが書きました:また同様に、管理画面上部メニューにある「メイン→検索」や「レポート」を、
ログインユーザーのロール別に非表示にしたいと考えております。
これらはどうすれば実現できますでしょうか。
ManagerManagerで非表示にできないかとも思いましたが、自分で調べた限りでは実現方法がわかりませんでした。
同梱されているManagerManagerウィジェットでは、管理画面のトップメニュー構成を操作することはできないです。それ以前に、割り込むシステムイベントが存在しないためプラグインでは対応できません。
※システムイベントの実装は特に難しくなく、検討中です。

コアファイルを少し改造する方法でよければ、対応は可能です。この部分も近いうちにプラグイン対応できるようにする予定です。
aru
メンバー
メンバー
記事: 16
登録日時: 2012年12月05日(水) 15:53

Re: リソース編集画面で保存、削除、等を非表示にしたい

投稿記事 by aru »

yamaさん、いつもありがとうございます。
yama さんが書きました:リソースごとにコントロールするのは、動的に権限を書き換えると可能かもしれません。明日になりますが、もしよければ説明いたします。あるいは、グループ管理機能を使うとよいかもしれません。
教えて頂けると嬉しいです。よろしくお願いします。
yama さんが書きました:同梱されているManagerManagerウィジェットでは、管理画面のトップメニュー構成を操作することはできないです。それ以前に、割り込むシステムイベントが存在しないためプラグインでは対応できません。
※システムイベントの実装は特に難しくなく、検討中です。

コアファイルを少し改造する方法でよければ、対応は可能です。この部分も近いうちにプラグイン対応できるようにする予定です。
コアファイルを改造する方法について、お時間のある時で結構ですのでお願いできればと思います。

大変お手数かと思いますが、よろしくお願い致します。
アバター
yama
管理人
記事: 3251
登録日時: 2009年7月29日(水) 02:50

Re: リソース編集画面で保存、削除、等を非表示にしたい

投稿記事 by yama »

今日説明するつもりでしたが、時間がとれなかったので簡単なサンプルを作りました。また後日、トップメニューなど残りの件を見てみます

コード: 全て選択

if(!isset($_GET['a'])) return;
if($_GET['a']==27 && isset($_GET['id'])) {
   switch($_GET['id']) {
      case '12':
         $_SESSION['mgrPermissions']['new_document']    = '0';
         $_SESSION['mgrPermissions']['delete_document'] = '0';
         $_SESSION['mgrPermissions']['save_document']   = '0';
         $_SESSION['ChangedPermissions'] = '1';
         break;
   }
}
elseif(isset($_SESSION['ChangedPermissions']) && $_SESSION['ChangedPermissions']==='1')
{
   $role = $_SESSION['mgrRole'];
   $tbl_user_roles = $modx->getFullTableName('user_roles');
   $rs = $modx->db->select('*',$tbl_user_roles,"id='{$role}'");
   $row = $modx->db->getRow($rs);
   $_SESSION['mgrPermissions'] = $row;
   $_SESSION['ChangedPermissions'] = '0';
}
上記のコードをプラグイン新規作成画面に貼り付けて、OnManagerPageInitにチェックを入れて保存します。
case '12':と書いてあるところの12は任意のリソースIDです。
(PHPは多少分かりますでしょうか?)
aru
メンバー
メンバー
記事: 16
登録日時: 2012年12月05日(水) 15:53

Re: リソース編集画面で保存、削除、等を非表示にしたい

投稿記事 by aru »

yamaさん

サンプルをありがとうございます。
返事が遅くなって申し訳ありません。

早速コードをプラグインに張り付けて、指定リソースの保存、複製、削除、等が表示されない
事を確認しました。
yama さんが書きました: (PHPは多少分かりますでしょうか?)
条件判定などについては調べつつ見ておりますので、簡単な内容は理解できてると思います。
ただ変数の意味が分からず、変数の名称から処理の内容を想像している状態です。

コード: 全て選択

$_SESSION['mgrPermissions']['delete_document'] 
・・・ リソース削除権限

コード: 全て選択

$_SESSION['ChangedPermissions']
・・・ 修正権限?
この辺りの一覧とそれが何を意味するか分るようなサイトなどは無いでしょうか。

以下の部分などは、何をしているのかよく分かっていません。

コード: 全て選択

elseif(isset($_SESSION['ChangedPermissions']) && $_SESSION['ChangedPermissions']==='1')
{
   $role = $_SESSION['mgrRole'];
   $tbl_user_roles = $modx->getFullTableName('user_roles');
   $rs = $modx->db->select('*',$tbl_user_roles,"id='{$role}'");
   $row = $modx->db->getRow($rs);
   $_SESSION['mgrPermissions'] = $row;
   $_SESSION['ChangedPermissions'] = '0';
}
なお、特定のロールでのみ非表示にしたいと思っていますので、コードを変えて色々試してみようと思います。

yama さんが書きました:また後日、トップメニューなど残りの件を見てみます
お手数をおかけしてすみません。お時間のあるときに見て頂ければ幸いです。
アバター
yama
管理人
記事: 3251
登録日時: 2009年7月29日(水) 02:50

Re: リソース編集画面で保存、削除、等を非表示にしたい

投稿記事 by yama »

もしかするとjQueryを使うほうが簡単で応用範囲も広くてよいかも?あとで考えてみますね

可能であればMODXを最新版にできれば、管理画面内でjQueryを簡単に使えます。

http://modx.jp/news/148.html
1.0.6J-r5で大幅な変更が入ってますので、アップデートする場合は上記ページ内容に目を通していただければと思います。
aru
メンバー
メンバー
記事: 16
登録日時: 2012年12月05日(水) 15:53

Re: リソース編集画面で保存、削除、等を非表示にしたい

投稿記事 by aru »

お返事ありがとうございます。

なお、MODXのバージョンアップについては、既存部分への影響が大きいと思われますので
出来れば避けたいと考えています。
申し訳ありません。
アバター
yama
管理人
記事: 3251
登録日時: 2009年7月29日(水) 02:50

Re: リソース編集画面で保存、削除、等を非表示にしたい

投稿記事 by yama »

aru さんが書きました: 以下の部分などは、何をしているのかよく分かっていません。

コード: 全て選択

elseif(isset($_SESSION['ChangedPermissions']) && $_SESSION['ChangedPermissions']==='1')
{
   $role = $_SESSION['mgrRole'];
   $tbl_user_roles = $modx->getFullTableName('user_roles');
   $rs = $modx->db->select('*',$tbl_user_roles,"id='{$role}'");
   $row = $modx->db->getRow($rs);
   $_SESSION['mgrPermissions'] = $row;
   $_SESSION['ChangedPermissions'] = '0';
}
元の権限設定に戻すという処理なので、ここはこのまま使っていただくのがよいかも?
(明日から週明けまでお返事が滞るかもしれません)
aru
メンバー
メンバー
記事: 16
登録日時: 2012年12月05日(水) 15:53

Re: リソース編集画面で保存、削除、等を非表示にしたい

投稿記事 by aru »

yama さんが書きました:元の権限設定に戻すという処理なので、ここはこのまま使っていただくのがよいかも?
了解しました。ありがとうございます。
yama さんが書きました:(明日から週明けまでお返事が滞るかもしれません)
お忙しいところ時間を割いていただき、ありがとうございました。
トップメニューの件につきましては、週明け以降等お時間がある時に見て頂けたら幸いです。
返信する