管理者ダッシュボード>「最近の動き」の表示内容をユーザーグループで分岐したい
funi > 管理者ダッシュボード>「最近の動き」の表示内容をユーザーグループで分岐したい @ 2015/4/18 20:07 |
---|
いつもお世話になっております。
複数で管理を行うサイトを作成中で、ユーザーグループ毎に管理ダッシュボードを切り替え表示させるために試行錯誤しています。 ユーザーグループ毎のランチャーについては、以下のryuringさまのコメントを参考にエレメントを作成し実装することが出来ました。 http://forum.basercms.net/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=1013&forum=4 << baserCMSバージョン 3.0.6.1 を使用中 >> /app/webroot/theme/***/Dashboard/admin/index.php 内の分岐表示させたい箇所で
とすることで実装できました。ありがとうございました。 次に、「最近の動き」の表示について上位権限者( operators から見ると admins )の作業については表示されないようにしたいと思っているのですが 作業した人 $this->BcBaser->getUserName($record['User']) のユーザー名からユーザーグループを取得判別する方法がわかりません。 判別方法がわかれば、 /app/webroot/theme/***/Elements/admin/dashboard/index_dblog_list.php
の後で、ログインユーザーのユーザーグループ以下のログのみ表示させれば良いかと思うのですが、いかがでしょうか。 最近の動きそのものを外すのは簡単ですが、更新状況やミスなどを把握するためにも表示は残したいと思っています。 お手数かとは存じますが、アドバイス頂ければと思います。何卒よろしくお願いします。 公式サイト・フォーラム・wikiなど検索し尽くしたつもりですが、どこかに仕様などの記載があればご指摘頂ければ幸いです。 ■ BaserCMS Ver:3.0.6.1 〜 4.1.0.1 |
n1215 > Re: 管理者ダッシュボード>「最近の動き」の表示内容をユーザーグループで分岐したい @ 2015/4/20 21:56 |
---|
funi 様
ページネ―ションの都合もあるので、テンプレートだけで処理するのは無駄が多いです。 コントローラでビュー変数の$viewDblogsに設定されている配列をあらかじめフィルタリングするのが良いでしょう。 1. lib/Baser/Controller/DashboardController.phpをapp/Controller/DashboardController.phpにコピー 2. 下記2つのメソッドを上書きし、それら2つから共通で利用する1つのメソッドを追加 ※ユーザーグループ名の設定は適宜調整してください。
Twitter: @n_1215 |
funi > Re: 管理者ダッシュボード>「最近の動き」の表示内容をユーザーグループで分岐したい @ 2015/4/21 14:08 |
---|
n1215さま
丁寧なご回答をありがとうございました。 アドバイス頂いた通りに記述を行ってみたところ下位権限者でログインした場合は上位の「最近の動き」が表示されなくなりました。 ただ、operators グループのアカウントで新着情報を追加したところ admins operators の双方の「最近の動き」に下記のようなエラーが出るようになりました。
上述頂いた以外に何かを行う(テンプレート側でも判別を行うなど)必要があるのでしょうか。 お手間をおかけしてしまい申し訳ありませんが、ご教授頂けると幸いです。 何卒よろしくお願いします。 ■ BaserCMS Ver:3.0.6.1 〜 4.1.0.1 |
n1215 > Re: 管理者ダッシュボード>「最近の動き」の表示内容をユーザーグループで分岐したい @ 2015/4/21 19:53 |
---|
funi 様 3.0.6.1で試していますがこちらでは再現しませんね。 baserCMSを独自に改造していく場合は、PHPのエラーの読み方を覚えると楽になります。 [quote}Notice (8): Undefined index: Dblog [APP/webroot/theme/***/Elements/admin/dashboard/index_dblog_list.php, line 52]Code Contextinclude - APP/webroot/theme/***/Elements/admin/dashboard/index_dblog_list.php, line 提示していただいたエラーの一行目を読むだけでも相当な情報が得られます。 ・Dblogというインデックス(index)が定義されていない(Undefined) ・エラーはapp/webroot/theme/***/Elements/admin/dashboard/index_dblog_list.phpの52行目で発生している。 もしこのファイルがbaserコアのテンプレートそのままであるとすると(独自に変更を加えていた場合は別ですが) https://github.com/baserproject/basercms/blob/dev-3/lib/Baser/View/Elements/admin/dashboard/index_dblog_list.php#L52 この部分ですね。
$recordという配列には'Dblog'というインデックスを持つはずですが、そうなっていないので値が取れないようです。 52行目の上にデバッグ用のコードを挿入し、$recordの中身を確認してみましょう。
参考までに手元ではこうなってます。
Twitter: @n_1215 |
funi > Re: 管理者ダッシュボード>「最近の動き」の表示内容をユーザーグループで分岐したい @ 2015/4/22 15:53 |
---|
n1215さま
度々ご回答頂きありがとうございます。 引用: ・Dblogというインデックス(index)が定義されていない(Undefined) ここまでは理解していたのですが、原因がわからず質問させて頂きました。 お教え頂いたデバッグ用コードを挿入して確認したところ以下のような結果になりました。 最近の動き エラー時:1個目
n1215さま の参考例と同様かとは思いますが、元は以下のようになっています。 最近の動き エラーなし:1個目(DashboardController.php コアのまま)
エラーの場合も、ユーザーグループ名などの値は格納されているようですが、Dblogを含めキーがセットされていない形です。 どこでそうなったのか、DashboardController.php を見比べてみるものの私には、到底理解できそうにありません。 これを見ると、投稿者の user_group_id はオリジナルでも参照出来るようですので、ユーザーグループ名ではなくユーザーグループIDでテンプレートにて判別することが出来るのではないかと考え app/webroot/theme/***/Elements/admin/dashboard/index_dblog_list.php にて
としてみたのですが、先にご指摘頂いた通りページネーションが上手くいかない問題が残ってしまいます。 同じバージョンで試して頂いてもエラーが出ないとのことで、これ以上お手数をおかけするのも申し訳ないので、もう少し試行錯誤してみて駄目なようでしたら operators 以下はページネーションを外しても良いかと思っています。 色々とお手数をおかけした上に解決も出来ず申し訳ありませんが、n1215さまには心より感謝申し上げます。 ■ BaserCMS Ver:3.0.6.1 〜 4.1.0.1 |
n1215 > Re: 管理者ダッシュボード>「最近の動き」の表示内容をユーザーグループで分岐したい @ 2015/4/22 18:22 |
---|
funi 様
お手数ですがあと一つ試していただいても良いですか? 以前の返信で提示したコードの下記の'fields' => '*', の行を削除したらどうなります?
Twitter: @n_1215 |
funi > Re: 管理者ダッシュボード>「最近の動き」の表示内容をユーザーグループで分岐したい @ 2015/4/22 19:07 |
---|
n1215さま
ご回答頂きありがとうございます。 引用:
上手くいきました。 ありがとうございました。 色々と自分でも試して、同じようにfieldsも消してみたりしたはずなのですが、他でミスがあったのかエラーが出ていました。 今回は、以前にご提示頂いた DashboardController.php と コアのindex_dblog_list.php のままで試したところ、上手く表示されました。 本当に最後までご回答頂きありがとうございました。 すっきりと解決出来たこと、心より感謝いたします。 <(_ _)> ■ BaserCMS Ver:3.0.6.1 〜 4.1.0.1 |