From 97197ef0580d996d7188263ac63deec7d68667cf Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Fri, 28 Aug 2026 11:42:54 +0100 Subject: [PATCH 1/6] rename pages to `submissions/Index` and `submissions/Show` --- .../js/pages/forms/{Submissions.vue => submissions/Index.vue} | 0 .../js/pages/forms/{Submission.vue => submissions/Show.vue} | 0 src/Http/Controllers/CP/Forms/FormSubmissionsController.php | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) rename resources/js/pages/forms/{Submissions.vue => submissions/Index.vue} (100%) rename resources/js/pages/forms/{Submission.vue => submissions/Show.vue} (100%) diff --git a/resources/js/pages/forms/Submissions.vue b/resources/js/pages/forms/submissions/Index.vue similarity index 100% rename from resources/js/pages/forms/Submissions.vue rename to resources/js/pages/forms/submissions/Index.vue diff --git a/resources/js/pages/forms/Submission.vue b/resources/js/pages/forms/submissions/Show.vue similarity index 100% rename from resources/js/pages/forms/Submission.vue rename to resources/js/pages/forms/submissions/Show.vue diff --git a/src/Http/Controllers/CP/Forms/FormSubmissionsController.php b/src/Http/Controllers/CP/Forms/FormSubmissionsController.php index 321ed4730b5..d02c5f0f3d9 100644 --- a/src/Http/Controllers/CP/Forms/FormSubmissionsController.php +++ b/src/Http/Controllers/CP/Forms/FormSubmissionsController.php @@ -44,7 +44,7 @@ public function index(FilteredRequest $request, $form) $can = $this->formAbilities($form); - return Inertia::render('forms/Submissions', [ + return Inertia::render('forms/submissions/Index', [ 'form' => [ 'title' => __($form->title()), 'handle' => $form->handle(), @@ -129,7 +129,7 @@ public function show($form, $submission) $blueprint = $form->blueprint(); $fields = $blueprint->fields()->addValues($submission->data()->all())->preProcess(); - return Inertia::render('forms/Submission', [ + return Inertia::render('forms/submissions/Show', [ 'form' => $form, 'can' => $this->formAbilities($form), 'id' => $submission->id(), From 6204221dd6f5396821880c61faf057fdb2c0a2cf Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Fri, 28 Aug 2026 11:43:20 +0100 Subject: [PATCH 2/6] reorder methods in controller --- .../CP/Forms/FormSubmissionsController.php | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Http/Controllers/CP/Forms/FormSubmissionsController.php b/src/Http/Controllers/CP/Forms/FormSubmissionsController.php index d02c5f0f3d9..7214dd51fc5 100644 --- a/src/Http/Controllers/CP/Forms/FormSubmissionsController.php +++ b/src/Http/Controllers/CP/Forms/FormSubmissionsController.php @@ -107,17 +107,6 @@ protected function indexQuery($form) return $query; } - public function destroy($form, $id) - { - $submission = $form->submission($id); - - $this->authorize('delete', $submission); - - $submission->delete(); - - return response('', 204); - } - public function show($form, $submission) { if (! $submission = $form->submission($submission)) { @@ -142,6 +131,17 @@ public function show($form, $submission) ]); } + public function destroy($form, $id) + { + $submission = $form->submission($id); + + $this->authorize('delete', $submission); + + $submission->delete(); + + return response('', 204); + } + public function generateFake(Request $request, $form, FakeSubmissionGenerator $generator) { $this->authorize('generateFakeSubmissions', $form); From f14f8899b7007c4e1c19467efcb04e19d7ab2be7 Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Fri, 28 Aug 2026 11:45:41 +0100 Subject: [PATCH 3/6] extract fake submission generation into an invokable controller --- routes/cp.php | 3 +- .../CP/Forms/FormSubmissionsController.php | 43 -------------- .../GenerateFakeSubmissionController.php | 57 +++++++++++++++++++ 3 files changed, 59 insertions(+), 44 deletions(-) create mode 100644 src/Http/Controllers/CP/Forms/GenerateFakeSubmissionController.php diff --git a/routes/cp.php b/routes/cp.php index 010ff625555..9469da9b92e 100644 --- a/routes/cp.php +++ b/routes/cp.php @@ -72,6 +72,7 @@ use Statamic\Http\Controllers\CP\Forms\FormLogicController; use Statamic\Http\Controllers\CP\Forms\FormsController; use Statamic\Http\Controllers\CP\Forms\FormSubmissionsController; +use Statamic\Http\Controllers\CP\Forms\GenerateFakeSubmissionController; use Statamic\Http\Controllers\CP\Forms\SubmissionActionController; use Statamic\Http\Controllers\CP\Globals\GlobalsBlueprintController; use Statamic\Http\Controllers\CP\Globals\GlobalsController; @@ -347,7 +348,7 @@ Route::post('forms/actions/list', [FormActionController::class, 'bulkActions'])->name('forms.actions.bulk'); Route::post('forms/{form}/submissions/actions', [SubmissionActionController::class, 'run'])->name('forms.submissions.actions.run'); Route::post('forms/{form}/submissions/actions/list', [SubmissionActionController::class, 'bulkActions'])->name('forms.submissions.actions.bulk'); - Route::post('forms/{form}/submissions/generate-fake', [FormSubmissionsController::class, 'generateFake'])->name('forms.submissions.generate-fake'); + Route::post('forms/{form}/submissions/generate-fake', GenerateFakeSubmissionController::class)->name('forms.submissions.generate-fake'); Route::resource('forms', FormsController::class); Route::get('forms/{form}/submissions', [FormSubmissionsController::class, 'index'])->name('forms.submissions.index'); Route::get('forms/{form}/submissions/{submission}', [FormSubmissionsController::class, 'show'])->name('forms.submissions.show'); diff --git a/src/Http/Controllers/CP/Forms/FormSubmissionsController.php b/src/Http/Controllers/CP/Forms/FormSubmissionsController.php index 7214dd51fc5..50f6e420d6d 100644 --- a/src/Http/Controllers/CP/Forms/FormSubmissionsController.php +++ b/src/Http/Controllers/CP/Forms/FormSubmissionsController.php @@ -141,47 +141,4 @@ public function destroy($form, $id) return response('', 204); } - - public function generateFake(Request $request, $form, FakeSubmissionGenerator $generator) - { - $this->authorize('generateFakeSubmissions', $form); - - if (! $form->get('generate_fake_submissions', true)) { - return response([ - 'message' => __('statamic::messages.form_fake_submission_generation_disabled'), - ], 403); - } - - $validated = $request->validate([ - 'mode' => ['required', 'in:cp_only,full_pipeline'], - ]); - - $values = $generator->generate($form); - $fields = $form->blueprint()->fields()->addValues($values); - $submission = $form->makeSubmission(); - $submission->data( - $fields->process()->values()->merge([ - '_fake' => true, - ]) - ); - - if ($validated['mode'] === 'full_pipeline') { - if (FormSubmitted::dispatch($submission) === false) { - return response([ - 'message' => __('statamic::messages.form_fake_submission_cancelled'), - ], 422); - } - } - - $submission->save(); - - if ($validated['mode'] === 'full_pipeline') { - SendEmails::dispatch($submission, Site::default()); - } - - return response([ - 'id' => $submission->id(), - 'message' => __('statamic::messages.form_fake_submission_generated'), - ]); - } } diff --git a/src/Http/Controllers/CP/Forms/GenerateFakeSubmissionController.php b/src/Http/Controllers/CP/Forms/GenerateFakeSubmissionController.php new file mode 100644 index 00000000000..1a3827a0832 --- /dev/null +++ b/src/Http/Controllers/CP/Forms/GenerateFakeSubmissionController.php @@ -0,0 +1,57 @@ +authorize('generateFakeSubmissions', $form); + + if (! $form->get('generate_fake_submissions', true)) { + return response([ + 'message' => __('statamic::messages.form_fake_submission_generation_disabled'), + ], 403); + } + + $validated = $request->validate([ + 'mode' => ['required', 'in:cp_only,full_pipeline'], + ]); + + $values = $generator->generate($form); + $fields = $form->blueprint()->fields()->addValues($values); + $submission = $form->makeSubmission(); + $submission->data( + $fields->process()->values()->merge([ + '_fake' => true, + ]) + ); + + if ($validated['mode'] === 'full_pipeline') { + if (FormSubmitted::dispatch($submission) === false) { + return response([ + 'message' => __('statamic::messages.form_fake_submission_cancelled'), + ], 422); + } + } + + $submission->save(); + + if ($validated['mode'] === 'full_pipeline') { + SendEmails::dispatch($submission, Site::default()); + } + + return response([ + 'id' => $submission->id(), + 'message' => __('statamic::messages.form_fake_submission_generated'), + ]); + } +} From b023a5021d68f6cb00b666765a764927f8176f8c Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Fri, 28 Aug 2026 11:54:24 +0100 Subject: [PATCH 4/6] fix import --- resources/js/pages/forms/submissions/Index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/js/pages/forms/submissions/Index.vue b/resources/js/pages/forms/submissions/Index.vue index 043b0b6a210..71dcda38e12 100644 --- a/resources/js/pages/forms/submissions/Index.vue +++ b/resources/js/pages/forms/submissions/Index.vue @@ -8,7 +8,7 @@ import ResourceDeleter from '@/components/ResourceDeleter.vue'; import FormSubmissionListing from '@/components/forms/SubmissionListing.vue'; import Layout from '@/pages/layout/Layout.vue'; import PanelLayout from '@/pages/layout/PanelLayout.vue'; -import FormsLayout from './Layout.vue'; +import FormsLayout from '@/pages/forms/Layout.vue'; defineOptions({ layout: [Layout, PanelLayout, FormsLayout] }); From 9466781431891c71362253b0768d3bdc735a37be Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Fri, 28 Aug 2026 11:55:20 +0100 Subject: [PATCH 5/6] formatting --- src/Http/Controllers/CP/Forms/FormSubmissionsController.php | 5 ----- .../CP/Forms/GenerateFakeSubmissionController.php | 1 + 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/Http/Controllers/CP/Forms/FormSubmissionsController.php b/src/Http/Controllers/CP/Forms/FormSubmissionsController.php index 50f6e420d6d..5cf37133f99 100644 --- a/src/Http/Controllers/CP/Forms/FormSubmissionsController.php +++ b/src/Http/Controllers/CP/Forms/FormSubmissionsController.php @@ -2,14 +2,9 @@ namespace Statamic\Http\Controllers\CP\Forms; -use Illuminate\Http\Request; use Inertia\Inertia; use Statamic\CP\Column; -use Statamic\Events\FormSubmitted; use Statamic\Facades\Scope; -use Statamic\Facades\Site; -use Statamic\Forms\FakeSubmissionGenerator; -use Statamic\Forms\SendEmails; use Statamic\Http\Controllers\CP\CpController; use Statamic\Http\Controllers\CP\Forms\Concerns\ProvidesFormAbilities; use Statamic\Http\Controllers\CP\Forms\Concerns\QueriesFormSubmissionSearch; diff --git a/src/Http/Controllers/CP/Forms/GenerateFakeSubmissionController.php b/src/Http/Controllers/CP/Forms/GenerateFakeSubmissionController.php index 1a3827a0832..5e490fc3aa7 100644 --- a/src/Http/Controllers/CP/Forms/GenerateFakeSubmissionController.php +++ b/src/Http/Controllers/CP/Forms/GenerateFakeSubmissionController.php @@ -8,6 +8,7 @@ use Statamic\Forms\FakeSubmissionGenerator; use Statamic\Forms\SendEmails; use Statamic\Http\Controllers\CP\CpController; + use function Statamic\trans as __; class GenerateFakeSubmissionController extends CpController From aee42412abb47e2bca04c864a5236013673f0c9e Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Fri, 28 Aug 2026 11:58:33 +0100 Subject: [PATCH 6/6] update assertions --- tests/Feature/Forms/ViewSubmissionsListingTest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Feature/Forms/ViewSubmissionsListingTest.php b/tests/Feature/Forms/ViewSubmissionsListingTest.php index f6f486bd897..4392a4e7d73 100644 --- a/tests/Feature/Forms/ViewSubmissionsListingTest.php +++ b/tests/Feature/Forms/ViewSubmissionsListingTest.php @@ -33,7 +33,7 @@ public function it_shows_the_listing_with_the_view_form_submissions_permission() ->actingAs($user) ->get(cp_route('forms.submissions.index', $form->handle())) ->assertSuccessful() - ->assertInertia(fn ($page) => $page->component('forms/Submissions')); + ->assertInertia(fn ($page) => $page->component('forms/submissions/Index')); } #[Test] @@ -47,7 +47,7 @@ public function it_shows_the_listing_with_the_per_form_view_submissions_permissi ->actingAs($user) ->get(cp_route('forms.submissions.index', $form->handle())) ->assertSuccessful() - ->assertInertia(fn ($page) => $page->component('forms/Submissions')); + ->assertInertia(fn ($page) => $page->component('forms/submissions/Index')); } #[Test]