From 6d01d2b641f612257101d4313e873f2cdf9a4608 Mon Sep 17 00:00:00 2001 From: Lazizbek Ergashev Date: Wed, 9 Sep 2026 11:29:34 +0500 Subject: [PATCH] Don't reset revisions when saving a collection with the field hidden --- .../CP/Collections/CollectionsController.php | 5 ++- .../Collections/UpdateCollectionTest.php | 34 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/Http/Controllers/CP/Collections/CollectionsController.php b/src/Http/Controllers/CP/Collections/CollectionsController.php index aca8ca0ce81..64fb148c7fa 100644 --- a/src/Http/Controllers/CP/Collections/CollectionsController.php +++ b/src/Http/Controllers/CP/Collections/CollectionsController.php @@ -332,7 +332,6 @@ public function update(Request $request, $collection) ->defaultPublishState($values['default_publish_state']) ->sortDirection($values['sort_direction']) ->mount($values['mount'] ?? null) - ->revisionsEnabled($values['revisions'] ?? false) ->taxonomies($values['taxonomies'] ?? []) ->futureDateBehavior(Arr::get($values, 'future_date_behavior')) ->pastDateBehavior(Arr::get($values, 'past_date_behavior')) @@ -342,6 +341,10 @@ public function update(Request $request, $collection) ->requiresSlugs($values['require_slugs']) ->previewTargets($values['preview_targets']); + if (array_key_exists('revisions', $values)) { + $collection->revisionsEnabled($values['revisions']); + } + if ($sites = Arr::get($values, 'sites')) { $collection ->sites($sites) diff --git a/tests/Feature/Collections/UpdateCollectionTest.php b/tests/Feature/Collections/UpdateCollectionTest.php index 025c0efd839..64c7679080c 100644 --- a/tests/Feature/Collections/UpdateCollectionTest.php +++ b/tests/Feature/Collections/UpdateCollectionTest.php @@ -153,6 +153,40 @@ public function settings_links_to_true_will_also_create_the_default_blueprint_if $this->assertEquals(['test', 'link'], $blueprints->map->handle()->values()->all()); } + #[Test] + public function it_updates_revisions() + { + config(['statamic.revisions.enabled' => true]); + + $collection = tap(Collection::make('test')->revisionsEnabled(false))->save(); + + $this + ->actingAs($this->userWithPermission()) + ->update($collection, ['revisions' => true]) + ->assertOk(); + + $this->assertTrue(Collection::findByHandle('test')->revisionsEnabled()); + } + + #[Test] + public function it_doesnt_update_revisions_when_the_field_is_hidden() + { + config(['statamic.revisions.enabled' => true]); + + $collection = tap(Collection::make('test')->revisionsEnabled(true))->save(); + + config(['statamic.revisions.enabled' => false]); + + $this + ->actingAs($this->userWithPermission()) + ->update($collection) + ->assertOk(); + + config(['statamic.revisions.enabled' => true]); + + $this->assertTrue(Collection::findByHandle('test')->revisionsEnabled()); + } + private function userWithoutPermission() { $this->setTestRoles(['test' => ['access cp']]);