From 2cfa6c710ad10a9e472a04475dfe5b92ffd91311 Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Wed, 25 Mar 2026 10:22:16 +0000 Subject: [PATCH 1/7] remove revision code from the controller --- resources/views/terms/edit.blade.php | 2 -- .../CP/Taxonomies/TermsController.php | 31 ++----------------- 2 files changed, 3 insertions(+), 30 deletions(-) diff --git a/resources/views/terms/edit.blade.php b/resources/views/terms/edit.blade.php index 4df02548924..86a85dfd899 100644 --- a/resources/views/terms/edit.blade.php +++ b/resources/views/terms/edit.blade.php @@ -26,9 +26,7 @@ :initial-origin-values="{{ json_encode($originValues) }}" :initial-origin-meta="{{ json_encode($originMeta) }}" initial-site="{{ $locale }}" - :initial-is-working-copy="{{ $str::bool($hasWorkingCopy) }}" :initial-is-root="{{ $str::bool($isRoot) }}" - :revisions-enabled="{{ $str::bool($revisionsEnabled) }}" :initial-read-only="{{ $str::bool($readOnly) }}" :preloaded-assets="{{ json_encode($preloadedAssets) }}" :breadcrumbs="{{ $breadcrumbs->toJson() }}" diff --git a/src/Http/Controllers/CP/Taxonomies/TermsController.php b/src/Http/Controllers/CP/Taxonomies/TermsController.php index 5dc382080a3..056fa98a792 100644 --- a/src/Http/Controllers/CP/Taxonomies/TermsController.php +++ b/src/Http/Controllers/CP/Taxonomies/TermsController.php @@ -87,8 +87,6 @@ public function edit(Request $request, $taxonomy, $term) { $this->authorize('view', $term); - $term = $term->fromWorkingCopy(); - $blueprint = $term->blueprint(); [$values, $meta] = $this->extractFromFields($term, $blueprint); @@ -105,9 +103,6 @@ public function edit(Request $request, $taxonomy, $term) 'save' => $term->updateUrl(), 'publish' => $term->publishUrl(), 'unpublish' => $term->unpublishUrl(), - 'revisions' => $term->revisionsUrl(), - 'restore' => $term->restoreRevisionUrl(), - 'createRevision' => $term->createRevisionUrl(), 'editBlueprint' => cp_route('taxonomies.blueprints.edit', [$taxonomy, $blueprint]), ], 'values' => array_merge($values, ['id' => $term->id()]), @@ -138,9 +133,7 @@ public function edit(Request $request, $taxonomy, $term) 'livePreviewUrl' => $localized->livePreviewUrl(), ]; })->all(), - 'hasWorkingCopy' => $term->hasWorkingCopy(), 'preloadedAssets' => $this->extractAssetsFromValues($values), - 'revisionsEnabled' => $term->revisionsEnabled(), 'breadcrumbs' => $this->breadcrumbs($taxonomy), 'previewTargets' => $taxonomy->previewTargets()->all(), 'itemActions' => Action::for($term, ['taxonomy' => $taxonomy->handle(), 'view' => 'form']), @@ -166,8 +159,6 @@ public function update(Request $request, $taxonomy, $term, $site) $this->authorize('update', $term); - $term = $term->fromWorkingCopy(); - $term->term()->syncOriginal(); $fields = $term->blueprint()->fields()->addValues($request->except('id')); @@ -197,18 +188,9 @@ public function update(Request $request, $taxonomy, $term, $site) $term->slug($request->slug); - if ($term->revisionsEnabled() && $term->published()) { - $term - ->makeWorkingCopy() - ->user(User::current()) - ->save(); - } else { - if (! $term->revisionsEnabled()) { - $term->published($request->published); - } + $term->published($request->published); - $saved = $term->updateLastModified(User::current())->save(); - } + $saved = $term->updateLastModified(User::current())->save(); [$values] = $this->extractFromFields($term, $term->blueprint()); @@ -315,14 +297,7 @@ public function store(Request $request, $taxonomy, $site) ->data($values) ->slug($slug); - if ($term->revisionsEnabled()) { - $term->store([ - 'message' => $request->message, - 'user' => User::current(), - ]); - } else { - $saved = $term->updateLastModified(User::current())->save(); - } + $saved = $term->updateLastModified(User::current())->save(); return (new TermResource($term)) ->additional(['saved' => $saved]); From d8e2c98ecd68375d6c04effcb37e1e017df67b38 Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Wed, 25 Mar 2026 10:25:28 +0000 Subject: [PATCH 2/7] deprecate revision methods on classes --- src/Taxonomies/LocalizedTerm.php | 43 +++++++------------------------- src/Taxonomies/Taxonomy.php | 1 + src/Taxonomies/Term.php | 1 + 3 files changed, 11 insertions(+), 34 deletions(-) diff --git a/src/Taxonomies/LocalizedTerm.php b/src/Taxonomies/LocalizedTerm.php index c42aa34bc4f..4ea95edc9b3 100644 --- a/src/Taxonomies/LocalizedTerm.php +++ b/src/Taxonomies/LocalizedTerm.php @@ -235,39 +235,10 @@ public function entriesCount() }); } - protected function revisionKey() - { - return vsprintf('taxonomies/%s/%s/%s', [ - $this->taxonomyHandle(), - $this->locale(), - $this->slug(), - ]); - } - - protected function revisionAttributes() - { - return [ - 'id' => $this->id(), - 'slug' => $this->slug(), - 'published' => $this->published(), - 'data' => $this->data()->except(['updated_by', 'updated_at'])->all(), - ]; - } - + /** @deprecated */ public function makeFromRevision($revision) { - $entry = clone $this; - - if (! $revision) { - return $entry; - } - - $attrs = $revision->attributes(); - - return $entry - ->published($attrs['published']) - ->data($attrs['data']) - ->slug($attrs['slug']); + // } public function origin() @@ -289,6 +260,7 @@ public function locale($locale = null) return $this->locale; } + /** @deprecated */ public function revisionsEnabled($enabled = null) { if (func_num_args() === 0) { @@ -320,19 +292,22 @@ public function unpublishUrl() return $this->cpUrl('taxonomies.terms.published.destroy'); } + /** @deprecated */ public function revisionsUrl() { - return $this->cpUrl('taxonomies.terms.revisions.index'); + return null; } + /** @deprecated */ public function createRevisionUrl() { - return $this->cpUrl('taxonomies.terms.revisions.store'); + return null; } + /** @deprecated */ public function restoreRevisionUrl() { - return $this->cpUrl('taxonomies.terms.restore-revision'); + return null; } public function livePreviewUrl() diff --git a/src/Taxonomies/Taxonomy.php b/src/Taxonomies/Taxonomy.php index ae1a078698a..477761008c4 100644 --- a/src/Taxonomies/Taxonomy.php +++ b/src/Taxonomies/Taxonomy.php @@ -322,6 +322,7 @@ public function sites($sites = null) ->args(func_get_args()); } + /** @deprecated */ public function revisionsEnabled($enabled = null) { return $this diff --git a/src/Taxonomies/Term.php b/src/Taxonomies/Term.php index 45438958ac1..7321076bdf6 100644 --- a/src/Taxonomies/Term.php +++ b/src/Taxonomies/Term.php @@ -278,6 +278,7 @@ public function reference() return "term::{$this->id()}"; } + /** @deprecated */ public function revisionsEnabled() { return $this->taxonomy()->revisionsEnabled(); From 5076d7f79f610b982e57f13b7f68398f201b92fe Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Wed, 25 Mar 2026 11:03:48 +0000 Subject: [PATCH 3/7] Empty commit From 48481809af0a6d032cbd144837feb5d30ae4d7bd Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Wed, 25 Mar 2026 11:08:21 +0000 Subject: [PATCH 4/7] add back necessary methods --- src/Taxonomies/LocalizedTerm.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Taxonomies/LocalizedTerm.php b/src/Taxonomies/LocalizedTerm.php index 4ea95edc9b3..d49b2372c7c 100644 --- a/src/Taxonomies/LocalizedTerm.php +++ b/src/Taxonomies/LocalizedTerm.php @@ -235,6 +235,18 @@ public function entriesCount() }); } + /** @deprecated */ + protected function revisionKey() + { + // + } + + /** @deprecated */ + protected function revisionAttributes() + { + // + } + /** @deprecated */ public function makeFromRevision($revision) { From 4b97c1252b603d95665c59b453f8c1a91549eac1 Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Wed, 25 Mar 2026 11:28:29 +0000 Subject: [PATCH 5/7] remove term revisions from route bindings --- src/Providers/RouteServiceProvider.php | 2 -- tests/Routing/RouteBindingTest.php | 33 +------------------------- 2 files changed, 1 insertion(+), 34 deletions(-) diff --git a/src/Providers/RouteServiceProvider.php b/src/Providers/RouteServiceProvider.php index ed0899f4dec..f344c0f7d22 100644 --- a/src/Providers/RouteServiceProvider.php +++ b/src/Providers/RouteServiceProvider.php @@ -361,8 +361,6 @@ protected function bindRevisions() if ($route->hasParameter('entry')) { $content = $route->parameter('entry'); - } elseif ($route->hasParameter('term')) { - $content = $route->parameter('term'); } else { throw new NotFoundHttpException; } diff --git a/tests/Routing/RouteBindingTest.php b/tests/Routing/RouteBindingTest.php index 0d1b8dbd958..c2442f54d1d 100644 --- a/tests/Routing/RouteBindingTest.php +++ b/tests/Routing/RouteBindingTest.php @@ -206,9 +206,7 @@ private function setupContent() Facades\Revision::shouldReceive('whereKey')->with('collections/blog/en/123')->andReturn(collect(['1' => $entryRevision])); Facades\Taxonomy::make('tags')->title('Product Tags')->save(); - $term = tap(Facades\Term::make()->taxonomy('tags')->inDefaultLocale()->slug('bravo')->data([]))->save(); - $termRevision = $term->inDefaultLocale()->makeRevision()->id('2'); - Facades\Revision::shouldReceive('whereKey')->with('taxonomies/tags/en/bravo')->andReturn(collect(['2' => $termRevision])); + Facades\Term::make()->taxonomy('tags')->inDefaultLocale()->slug('bravo')->data([])->save(); Facades\AssetContainer::make('files')->disk('files')->title('The Files')->save(); Storage::fake('files'); @@ -456,17 +454,6 @@ function (Collection $collection, Entry $entry, Revision $revision) { 'cp/custom/entries/blog/123/revisions/invalid', ], - 'cp term revision' => [ - 'cp/custom/terms/tags/bravo/revisions/2', - function (Taxonomy $taxonomy, Term $term, Revision $revision) { - return $taxonomy->handle() === 'tags' && $term->id() === 'tags::bravo' && $revision->id() === '2'; - }, - ], - - 'cp term missing revision' => [ - 'cp/custom/terms/tags/bravo/revisions/invalid', - ], - 'cp invalid content revision' => [ 'cp/custom/revisions/1', ], @@ -851,24 +838,6 @@ function (string $collection, string $entry, string $revision) { }, ], - 'term revision' => [ - 'custom/terms/tags/bravo/revisions/2', - function (Taxonomy $taxonomy, Term $term, Revision $revision) { - return $taxonomy->handle() === 'tags' && $term->id() === 'tags::bravo' && $revision->id() === '2'; - }, - function (string $taxonomy, string $term, string $revision) { - return $taxonomy === 'tags' && $term === 'bravo' && $revision === '2'; - }, - ], - - 'term missing revision' => [ - 'custom/terms/tags/bravo/revisions/invalid', - null, - function (string $taxonomy, string $term, string $revision) { - return $taxonomy === 'tags' && $term === 'bravo' && $revision === 'invalid'; - }, - ], - 'invalid content revision' => [ 'custom/revisions/1', null, From abe5ab2f8f9d89afea07dad0d94ec995abfe46b8 Mon Sep 17 00:00:00 2001 From: Jason Varga Date: Wed, 25 Mar 2026 10:22:54 -0400 Subject: [PATCH 6/7] remove revisable trait and revision related methods. leave/simplify revisionsEnabled method. --- src/Stache/Stores/TaxonomiesStore.php | 1 - src/Taxonomies/LocalizedTerm.php | 47 ++------------------------- src/Taxonomies/Taxonomy.php | 14 +------- src/Taxonomies/Term.php | 2 +- 4 files changed, 4 insertions(+), 60 deletions(-) diff --git a/src/Stache/Stores/TaxonomiesStore.php b/src/Stache/Stores/TaxonomiesStore.php index 4978d9993b5..365f7438be9 100644 --- a/src/Stache/Stores/TaxonomiesStore.php +++ b/src/Stache/Stores/TaxonomiesStore.php @@ -43,7 +43,6 @@ public function makeItemFromFile($path, $contents) return Taxonomy::make($handle) ->title(Arr::get($data, 'title')) ->cascade(Arr::get($data, 'inject', [])) - ->revisionsEnabled(Arr::get($data, 'revisions', false)) ->searchIndex(Arr::get($data, 'search_index')) ->defaultPublishState($this->getDefaultPublishState($data)) ->sites($sites) diff --git a/src/Taxonomies/LocalizedTerm.php b/src/Taxonomies/LocalizedTerm.php index d49b2372c7c..c4ca9b0c04f 100644 --- a/src/Taxonomies/LocalizedTerm.php +++ b/src/Taxonomies/LocalizedTerm.php @@ -31,7 +31,6 @@ use Statamic\Facades\Site; use Statamic\GraphQL\ResolvesValues; use Statamic\Http\Responses\DataResponse; -use Statamic\Revisions\Revisable; use Statamic\Routing\Routable; use Statamic\Search\Searchable; use Statamic\Statamic; @@ -39,7 +38,7 @@ class LocalizedTerm implements Arrayable, ArrayAccess, Augmentable, BulkAugmentable, ContainsQueryableValues, Localization, Protectable, ResolvesValuesContract, Responsable, SearchableContract, Term { - use ContainsSupplementalData, HasAugmentedInstance, Publishable, ResolvesValues, Revisable, Routable, Searchable, TracksLastModified, TracksQueriedColumns, TracksQueriedRelations; + use ContainsSupplementalData, HasAugmentedInstance, Publishable, ResolvesValues, Routable, Searchable, TracksLastModified, TracksQueriedColumns, TracksQueriedRelations; protected $locale; protected $term; @@ -235,24 +234,6 @@ public function entriesCount() }); } - /** @deprecated */ - protected function revisionKey() - { - // - } - - /** @deprecated */ - protected function revisionAttributes() - { - // - } - - /** @deprecated */ - public function makeFromRevision($revision) - { - // - } - public function origin() { return $this->inDefaultLocale(); @@ -275,13 +256,7 @@ public function locale($locale = null) /** @deprecated */ public function revisionsEnabled($enabled = null) { - if (func_num_args() === 0) { - return $this->term->revisionsEnabled(); - } - - $this->term->revisionsEnabled($enabled); - - return $this; + return func_num_args() === 0 ? false : $this; } public function editUrl() @@ -304,24 +279,6 @@ public function unpublishUrl() return $this->cpUrl('taxonomies.terms.published.destroy'); } - /** @deprecated */ - public function revisionsUrl() - { - return null; - } - - /** @deprecated */ - public function createRevisionUrl() - { - return null; - } - - /** @deprecated */ - public function restoreRevisionUrl() - { - return null; - } - public function livePreviewUrl() { return $this->cpUrl('taxonomies.terms.preview.edit'); diff --git a/src/Taxonomies/Taxonomy.php b/src/Taxonomies/Taxonomy.php index 477761008c4..e3e2a4f200b 100644 --- a/src/Taxonomies/Taxonomy.php +++ b/src/Taxonomies/Taxonomy.php @@ -27,7 +27,6 @@ use Statamic\Facades\Site; use Statamic\Facades\Stache; use Statamic\Facades\URL; -use Statamic\Statamic; use Statamic\Support\Str; use Statamic\Support\Traits\FluentlyGetsAndSets; @@ -325,18 +324,7 @@ public function sites($sites = null) /** @deprecated */ public function revisionsEnabled($enabled = null) { - return $this - ->fluentlyGetOrSet('revisions') - ->getter(function ($enabled) { - if (! config('statamic.revisions.enabled') || ! Statamic::pro()) { - return false; - } - - return false; // TODO - - return $enabled; - }) - ->args(func_get_args()); + return func_num_args() === 0 ? false : $this; } public function url() diff --git a/src/Taxonomies/Term.php b/src/Taxonomies/Term.php index 7321076bdf6..800261b1477 100644 --- a/src/Taxonomies/Term.php +++ b/src/Taxonomies/Term.php @@ -281,7 +281,7 @@ public function reference() /** @deprecated */ public function revisionsEnabled() { - return $this->taxonomy()->revisionsEnabled(); + return false; } public function dataForLocale($locale, $data = null) From a57bc87ddb062ea72927926b922a4b34587974ba Mon Sep 17 00:00:00 2001 From: Jason Varga Date: Wed, 25 Mar 2026 10:30:52 -0400 Subject: [PATCH 7/7] this too --- src/Taxonomies/Taxonomy.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Taxonomies/Taxonomy.php b/src/Taxonomies/Taxonomy.php index e3e2a4f200b..597fcf79fc0 100644 --- a/src/Taxonomies/Taxonomy.php +++ b/src/Taxonomies/Taxonomy.php @@ -42,7 +42,6 @@ class Taxonomy implements Arrayable, ArrayAccess, AugmentableContract, Contract, protected $sites = []; protected $collection; protected $defaultPublishState = true; - protected $revisions = false; protected $searchIndex; protected $previewTargets = []; protected $template;