From 5001dcd0b7503ddb38d3b276570a4c1f58805b15 Mon Sep 17 00:00:00 2001 From: gakigaki Date: Mon, 22 Sep 2025 20:06:31 +0900 Subject: [PATCH] feat(slideshows): allow moderator and editor content edits --- .../User/Slideshows/SlideshowsPlugin.php | 43 ++- .../slideshows/default/slideshows.blade.php | 9 + .../default/slideshows_edit.blade.php | 361 +++++++++--------- .../slideshows_error_messages.blade.php | 25 +- .../slideshows_frame_edit_tab.blade.php | 4 +- .../SlideshowsEditPermissionFeatureTest.php | 320 ++++++++++++++++ 6 files changed, 552 insertions(+), 210 deletions(-) create mode 100644 tests/Feature/Plugins/User/Slideshows/SlideshowsEditPermissionFeatureTest.php diff --git a/app/Plugins/User/Slideshows/SlideshowsPlugin.php b/app/Plugins/User/Slideshows/SlideshowsPlugin.php index d9c47eb98..cea889f35 100644 --- a/app/Plugins/User/Slideshows/SlideshowsPlugin.php +++ b/app/Plugins/User/Slideshows/SlideshowsPlugin.php @@ -74,11 +74,12 @@ public function declareRole() { // 権限チェックテーブル $role_check_table = []; - $role_check_table["addItem"] = ['buckets.addColumn']; - $role_check_table["editItem"] = ['buckets.editColumn']; - $role_check_table["updateItems"] = ['buckets.saveColumn']; - $role_check_table["deleteItem"] = ['buckets.deleteColumn']; - $role_check_table["updateItemSequence"] = ['buckets.upColumnSequence', 'buckets.downColumnSequence']; + $role_check_table["addItem"] = ['posts.create']; + $role_check_table["addPdf"] = ['posts.create']; + $role_check_table["editItem"] = ['posts.update']; + $role_check_table["updateItems"] = ['posts.update']; + $role_check_table["updateItemSequence"] = ['posts.update']; + $role_check_table["deleteItem"] = ['posts.delete']; return $role_check_table; } @@ -143,11 +144,6 @@ public function index($request, $page_id, $frame_id, $errors = null) $setting_error_messages[] = 'フレームの設定画面から、使用するスライドショーを選択するか、作成してください。'; } - if ($slideshows_items->count() == 0) { - // フレームに紐づくスライドショー子データがない場合 - $setting_error_messages[] = 'フレームの設定画面から、使用するスライドショーの項目を定義してください。'; - } - if (empty($setting_error_messages)) { // 表示テンプレートを呼び出す。 return $this->view('slideshows', [ @@ -744,11 +740,6 @@ public function updateItems($request, $page_id, $frame_id) */ public function editItem($request, $page_id, $frame_id, $id = null, $message = null, $errors = null) { - // 権限チェック - if ($this->can('role_article_admin')) { - return $this->viewError(403); - } - // フレームに紐づくスライドショーを取得 $slideshow = $this->getSlideshows($frame_id); @@ -842,4 +833,26 @@ public function updateItemSequence($request, $page_id, $frame_id) // リダイレクト設定はフォーム側で設定している為、return処理は省略 } + + /** + * 権限設定 変更画面を表示する + * + * @see UserPluginBase::editBucketsRoles() + */ + public function editBucketsRoles($request, $page_id, $frame_id, $id = null, $use_approval = false) + { + // 承認機能は使わない + return parent::editBucketsRoles($request, $page_id, $frame_id, $id, $use_approval); + } + + /** + * 権限設定を保存する + * + * @see UserPluginBase::saveBucketsRoles() + */ + public function saveBucketsRoles($request, $page_id, $frame_id, $id = null, $use_approval = false) + { + // 承認機能は使わない + return parent::saveBucketsRoles($request, $page_id, $frame_id, $id, $use_approval); + } } diff --git a/resources/views/plugins/user/slideshows/default/slideshows.blade.php b/resources/views/plugins/user/slideshows/default/slideshows.blade.php index ec6cd6b78..8991b53f6 100644 --- a/resources/views/plugins/user/slideshows/default/slideshows.blade.php +++ b/resources/views/plugins/user/slideshows/default/slideshows.blade.php @@ -12,6 +12,15 @@ {{-- 未設定エラーメッセージの表示等 --}} @include('plugins.common.errors_form_line') + {{-- 編集ボタン --}} + @can('posts.update', [[null, $frame->plugin_name, $buckets, $frame]]) +
+ + 編集 + +
+ @endcan + @if ($slideshows_items->count() > 0) {{-- インジケータの形状は標準だとクリックしづらいので、とりあえず丸型にしておきます。後々の改修でインジケータ形状のデザイン機能も入れられるといいと考えてます。 --}}