From feb6f87f50711c10e5c74ed585a883bc2d78b658 Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 24 Mar 2026 11:23:19 +0100 Subject: [PATCH 1/2] Make actions available in a collection tree view --- resources/js/pages/collections/Show.vue | 18 ++++++++++++++++++ src/Structures/TreeBuilder.php | 23 +++++++++++++++++------ 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/resources/js/pages/collections/Show.vue b/resources/js/pages/collections/Show.vue index 66eb27b2647..d40eca538ff 100644 --- a/resources/js/pages/collections/Show.vue +++ b/resources/js/pages/collections/Show.vue @@ -153,6 +153,24 @@ variant="destructive" @click="deleteTreeBranch(branch, removeBranch)" /> + diff --git a/src/Structures/TreeBuilder.php b/src/Structures/TreeBuilder.php index c6ebac6b2a8..6cc81d4d16b 100644 --- a/src/Structures/TreeBuilder.php +++ b/src/Structures/TreeBuilder.php @@ -3,6 +3,7 @@ namespace Statamic\Structures; use Statamic\Contracts\Structures\Nav; +use Statamic\Facades\Action; use Statamic\Facades\Entry; use Statamic\Facades\Structure; use Statamic\Facades\User; @@ -91,22 +92,32 @@ protected function transformTreeForController($tree) $page = $item['page']; $collection = $page->mountedCollection(); $referenceExists = $page->referenceExists(); + $entry = $referenceExists ? $page->entry() : null; + + $actionContext = ['view' => 'tree']; + if ($collection) { + $actionContext['collection'] = $collection->handle(); + } + if ($entry) { + $actionContext['site'] = $entry->locale(); + } return [ 'id' => $page->id(), 'entry' => $page->reference(), 'title' => $page->hasCustomTitle() ? $page->title() : null, - 'entry_title' => $referenceExists ? $page->entry()->value('title') : null, - 'entry_blueprint' => $referenceExists ? [ - 'handle' => $page->entry()->blueprint()->handle(), - 'title' => $page->entry()->blueprint()->title(), + 'entry_title' => $entry ? $entry->value('title') : null, + 'entry_blueprint' => $entry ? [ + 'handle' => $entry->blueprint()->handle(), + 'title' => $entry->blueprint()->title(), ] : null, 'url' => $page->url(), 'edit_url' => $page->editUrl(), - 'can_delete' => $referenceExists ? User::current()->can('delete', $page->entry()) : true, + 'can_delete' => $entry ? User::current()->can('delete', $entry) : true, 'slug' => $page->slug(), 'status' => $referenceExists ? $page->status() : null, - 'redirect' => $referenceExists ? $page->entry()->get('redirect') : null, + 'redirect' => $entry ? $entry->get('redirect') : null, + 'actions' => $entry ? Action::for($entry, $actionContext) : [], 'collection' => ! $collection ? null : [ 'handle' => $collection->handle(), 'title' => $collection->title(), From 6dc714129a04351edc239ea54167ebf2de93a8e8 Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 24 Mar 2026 12:15:18 +0100 Subject: [PATCH 2/2] fix: duplicate deletion removed --- resources/js/pages/collections/Show.vue | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/resources/js/pages/collections/Show.vue b/resources/js/pages/collections/Show.vue index d40eca538ff..65cefc54c50 100644 --- a/resources/js/pages/collections/Show.vue +++ b/resources/js/pages/collections/Show.vue @@ -153,11 +153,11 @@ variant="destructive" @click="deleteTreeBranch(branch, removeBranch)" /> -