From 0fc372f7fdddf428f58f3f5cafb3367743fa0d8f Mon Sep 17 00:00:00 2001 From: Jason Varga Date: Thu, 2 Oct 2025 18:04:11 -0400 Subject: [PATCH 01/15] addon list --- resources/js/bootstrap/components.js | 2 - resources/js/pages/addons/Index.vue | 41 +++++++++++++++++++ resources/views/addons/index.blade.php | 29 ------------- .../CP/Addons/AddonsController.php | 3 +- 4 files changed, 43 insertions(+), 32 deletions(-) create mode 100644 resources/js/pages/addons/Index.vue delete mode 100644 resources/views/addons/index.blade.php diff --git a/resources/js/bootstrap/components.js b/resources/js/bootstrap/components.js index 5294c65d614..5f8d063a7f7 100644 --- a/resources/js/bootstrap/components.js +++ b/resources/js/bootstrap/components.js @@ -9,7 +9,6 @@ import UserPublishForm from '../components/users/PublishForm.vue'; import EntryListing from '../components/entries/Listing.vue'; import TaxonomyListing from '../components/taxonomies/Listing.vue'; import TermListing from '../components/terms/Listing.vue'; -import AddonListing from '../components/addons/Listing.vue'; import CollectionWidget from '../components/entries/CollectionWidget.vue'; import FormWidget from '../components/forms/FormWidget.vue'; import FileIcon from '../components/FileIcon.vue'; @@ -75,7 +74,6 @@ export default function registerGlobalComponents(app) { app.component('entry-list', EntryListing); app.component('taxonomy-list', TaxonomyListing); app.component('term-list', TermListing); - app.component('addon-list', AddonListing); // Widgets app.component('collection-widget', CollectionWidget); diff --git a/resources/js/pages/addons/Index.vue b/resources/js/pages/addons/Index.vue new file mode 100644 index 00000000000..d68e67ff552 --- /dev/null +++ b/resources/js/pages/addons/Index.vue @@ -0,0 +1,41 @@ + + + diff --git a/resources/views/addons/index.blade.php b/resources/views/addons/index.blade.php deleted file mode 100644 index bf1f9356cdb..00000000000 --- a/resources/views/addons/index.blade.php +++ /dev/null @@ -1,29 +0,0 @@ -@php - use function Statamic\trans as __; -@endphp - -@extends('statamic::layout') -@section('title', __('Addons')) - -@section('content') - - - - - - - - - -@endsection diff --git a/src/Http/Controllers/CP/Addons/AddonsController.php b/src/Http/Controllers/CP/Addons/AddonsController.php index 661712985bb..45620809364 100644 --- a/src/Http/Controllers/CP/Addons/AddonsController.php +++ b/src/Http/Controllers/CP/Addons/AddonsController.php @@ -2,6 +2,7 @@ namespace Statamic\Http\Controllers\CP\Addons; +use Inertia\Inertia; use Statamic\Addons\Addon; use Statamic\CP\Column; use Statamic\Facades; @@ -13,7 +14,7 @@ public function index() { $this->authorize('index', Addon::class); - return view('statamic::addons.index', [ + return Inertia::render('addons/Index', [ 'addons' => Facades\Addon::all()->map(fn (Addon $addon) => [ 'name' => $addon->name(), 'version' => $addon->version(), From e1fba7465280110a634eadec7af6eb67429a7173 Mon Sep 17 00:00:00 2001 From: Jason Varga Date: Thu, 2 Oct 2025 18:09:14 -0400 Subject: [PATCH 02/15] consolidate listing and page components --- resources/js/components/addons/Listing.vue | 49 ---------------------- resources/js/pages/addons/Index.vue | 46 ++++++++++++++++---- 2 files changed, 39 insertions(+), 56 deletions(-) delete mode 100644 resources/js/components/addons/Listing.vue diff --git a/resources/js/components/addons/Listing.vue b/resources/js/components/addons/Listing.vue deleted file mode 100644 index 4080b2fb688..00000000000 --- a/resources/js/components/addons/Listing.vue +++ /dev/null @@ -1,49 +0,0 @@ - - - diff --git a/resources/js/pages/addons/Index.vue b/resources/js/pages/addons/Index.vue index d68e67ff552..16a4ce67236 100644 --- a/resources/js/pages/addons/Index.vue +++ b/resources/js/pages/addons/Index.vue @@ -1,12 +1,26 @@ From b6ef2f444d5bbc6ea9ad93e27299b097403deae7 Mon Sep 17 00:00:00 2001 From: Jason Varga Date: Thu, 2 Oct 2025 18:38:56 -0400 Subject: [PATCH 03/15] updates index --- resources/js/pages/updater/Index.vue | 79 +++++++++++++++++ resources/views/updater/index.blade.php | 87 ------------------- .../CP/Updater/UpdaterController.php | 17 +++- 3 files changed, 93 insertions(+), 90 deletions(-) create mode 100644 resources/js/pages/updater/Index.vue delete mode 100644 resources/views/updater/index.blade.php diff --git a/resources/js/pages/updater/Index.vue b/resources/js/pages/updater/Index.vue new file mode 100644 index 00000000000..1d6f9dc0af0 --- /dev/null +++ b/resources/js/pages/updater/Index.vue @@ -0,0 +1,79 @@ + + + \ No newline at end of file diff --git a/resources/views/updater/index.blade.php b/resources/views/updater/index.blade.php deleted file mode 100644 index d86a7decc7e..00000000000 --- a/resources/views/updater/index.blade.php +++ /dev/null @@ -1,87 +0,0 @@ -@php - use function Statamic\trans as __; -@endphp - -@extends('statamic::layout') -@section('title', __('Updates')) - -@section('content') - - - @if ($requestError) - - - - {{ __('Try Again') }} - - - @else -
- - - - - - - {{ __('Statamic') }} - - - {{ $statamic->currentVersion() }} - @if ($count = $statamic->availableUpdatesCount()) - - {{ trans_choice('1 update|:count updates', $count) }} - - @else - {{ __('Up to date') }} - @endif - - - - - - @if ($addons->count()) - - - - @foreach ($addons as $addon) - - - - {{ $addon->name() }} - - - {{ $addon->version() }} - @if ($count = $addon->changelog()->availableUpdatesCount()) - - {{ trans_choice('1 update|:count updates', $count) }} - - @else - {{ __('Up to date') }} - @endif - - @endforeach - - - - @endif -
- - - @endif -@endsection diff --git a/src/Http/Controllers/CP/Updater/UpdaterController.php b/src/Http/Controllers/CP/Updater/UpdaterController.php index 0771d0cec5a..c517c161de8 100644 --- a/src/Http/Controllers/CP/Updater/UpdaterController.php +++ b/src/Http/Controllers/CP/Updater/UpdaterController.php @@ -5,6 +5,7 @@ use Facades\Statamic\Marketplace\Marketplace; use Facades\Statamic\Updater\UpdatesOverview; use Illuminate\Http\Request; +use Inertia\Inertia; use Statamic\Facades\Addon; use Statamic\Http\Controllers\CP\CpController; use Statamic\Licensing\LicenseManager as Licenses; @@ -25,10 +26,20 @@ public function index(Licenses $licenses) return redirect()->route('statamic.cp.updater.product', Statamic::CORE_SLUG); } - return view('statamic::updater.index', [ + $changelog = Marketplace::statamic()->changelog(); + + return Inertia::render('updater/Index', [ 'requestError' => $licenses->requestFailed(), - 'statamic' => Marketplace::statamic()->changelog(), - 'addons' => $addons->filter->existsOnMarketplace(), + 'statamic' => [ + 'currentVersion' => $changelog->currentVersion(), + 'availableUpdatesCount' => $changelog->availableUpdatesCount(), + ], + 'addons' => $addons->filter->existsOnMarketplace()->map(fn ($addon) => [ + 'name' => $addon->name(), + 'slug' => $addon->slug(), + 'version' => $addon->version(), + 'availableUpdatesCount' => $addon->changelog()->availableUpdatesCount(), + ])->values()->all(), ]); } From 071bb6cbc72c73eb43f03523cc65bb0a7d9ffe60 Mon Sep 17 00:00:00 2001 From: Jason Varga Date: Thu, 2 Oct 2025 18:39:10 -0400 Subject: [PATCH 04/15] expose inertia link and use it in updates nav item --- resources/js/bootstrap/components.js | 2 ++ resources/views/nav/updates.blade.php | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/resources/js/bootstrap/components.js b/resources/js/bootstrap/components.js index 5f8d063a7f7..9c6cf1f17d8 100644 --- a/resources/js/bootstrap/components.js +++ b/resources/js/bootstrap/components.js @@ -55,12 +55,14 @@ import ItemActions from '../components/actions/ItemActions.vue'; import BulkActions from '../components/actions/BulkActions.vue'; import { defineAsyncComponent } from 'vue'; +import { Link } from '@inertiajs/vue3'; export default function registerGlobalComponents(app) { // Core app.component('asset-manager', AssetManager); app.component('asset-browser', Browser); app.component('updates-badge', UpdatesBadge); + app.component('inertia-link', Link); // Publish app.component('publish-field-meta', FieldMeta); diff --git a/resources/views/nav/updates.blade.php b/resources/views/nav/updates.blade.php index 038726c0a1f..9d66d1d33e2 100644 --- a/resources/views/nav/updates.blade.php +++ b/resources/views/nav/updates.blade.php @@ -1,7 +1,7 @@
  • - + @cp_svg('icons/updates', 'size-4 shrink-0') {{ __($item->name()) }} - +
  • From c5519631348fe79d39be393a08cf93fe4436cd51 Mon Sep 17 00:00:00 2001 From: Jason Varga Date: Thu, 2 Oct 2025 18:52:38 -0400 Subject: [PATCH 05/15] simplify --- resources/js/pages/updater/Index.vue | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/resources/js/pages/updater/Index.vue b/resources/js/pages/updater/Index.vue index 1d6f9dc0af0..88fd784c427 100644 --- a/resources/js/pages/updater/Index.vue +++ b/resources/js/pages/updater/Index.vue @@ -3,11 +3,7 @@ import { Link } from '@inertiajs/vue3'; import Head from '@/pages/layout/Head.vue'; import { Header, Card, Panel, Table, TableRow, TableCell, Badge, Heading, Button, DocsCallout, CommandPaletteItem } from '@ui'; -defineProps({ - requestError: Boolean, - statamic: Object, - addons: Array, -}); +defineProps(['requestError', 'statamic', 'addons']);