From bab58a84a0ab903949d7fb5414058ee463d4c043 Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Mon, 23 Sep 2024 10:24:53 +0100 Subject: [PATCH 1/3] Allow filtering/sorting/paginating with the `form:submissions` tag --- src/Forms/Tags.php | 21 ++++++++++++++++++--- src/Stache/Query/SubmissionQueryBuilder.php | 3 ++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/Forms/Tags.php b/src/Forms/Tags.php index a541abcc2fe..e236ba7e4f9 100644 --- a/src/Forms/Tags.php +++ b/src/Forms/Tags.php @@ -20,7 +20,11 @@ class Tags extends BaseTags use Concerns\GetsFormSession, Concerns\GetsRedirects, Concerns\OutputsItems, - Concerns\RendersForms; + Concerns\RendersForms, + Concerns\GetsQueryResults, + Concerns\QueriesConditions, + Concerns\QueriesOrderBys, + Concerns\QueriesScopes; const HANDLE_PARAM = ['handle', 'is', 'in', 'form', 'formset']; @@ -184,9 +188,20 @@ public function submission() */ public function submissions() { - $submissions = $this->form()->submissions(); + $query = $this->submissionsQuery(); - return $this->output($submissions); + return $this->output($this->results($query)); + } + + protected function submissionsQuery() + { + $query = $this->form()->querySubmissions(); + + $this->queryConditions($query); + $this->queryScopes($query); + $this->queryOrderBys($query); + + return $query; } /** diff --git a/src/Stache/Query/SubmissionQueryBuilder.php b/src/Stache/Query/SubmissionQueryBuilder.php index 305b9d0af4e..8b4aeb61e6f 100644 --- a/src/Stache/Query/SubmissionQueryBuilder.php +++ b/src/Stache/Query/SubmissionQueryBuilder.php @@ -4,6 +4,7 @@ use Illuminate\Support\Collection; use Statamic\Contracts\Forms\SubmissionQueryBuilder as QueryBuilderContract; +use Statamic\Data\DataCollection; use Statamic\Facades; use Statamic\Query\OrderBy; @@ -46,7 +47,7 @@ public function orderBy($column, $direction = 'asc') protected function collect($items = []) { - return Collection::make($items); + return DataCollection::make($items); } protected function getFilteredKeys() From b18a0e2a8ce957c71be95ad9c52b287ffcb18fa9 Mon Sep 17 00:00:00 2001 From: Duncan McClean Date: Mon, 23 Sep 2024 10:25:34 +0100 Subject: [PATCH 2/3] Simplify --- src/Forms/Tags.php | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/Forms/Tags.php b/src/Forms/Tags.php index e236ba7e4f9..6cf2b721509 100644 --- a/src/Forms/Tags.php +++ b/src/Forms/Tags.php @@ -187,13 +187,6 @@ public function submission() * @return array */ public function submissions() - { - $query = $this->submissionsQuery(); - - return $this->output($this->results($query)); - } - - protected function submissionsQuery() { $query = $this->form()->querySubmissions(); @@ -201,7 +194,7 @@ protected function submissionsQuery() $this->queryScopes($query); $this->queryOrderBys($query); - return $query; + return $this->output($this->results($query)); } /** From f7783827e2f0a1d7960afc9eda73524e6d0e96d2 Mon Sep 17 00:00:00 2001 From: duncanmcclean Date: Mon, 23 Sep 2024 09:27:18 +0000 Subject: [PATCH 3/3] Fix styling --- src/Forms/Tags.php | 6 +++--- src/Stache/Query/SubmissionQueryBuilder.php | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Forms/Tags.php b/src/Forms/Tags.php index 6cf2b721509..aeab4fdd242 100644 --- a/src/Forms/Tags.php +++ b/src/Forms/Tags.php @@ -18,13 +18,13 @@ class Tags extends BaseTags { use Concerns\GetsFormSession, + Concerns\GetsQueryResults, Concerns\GetsRedirects, Concerns\OutputsItems, - Concerns\RendersForms, - Concerns\GetsQueryResults, Concerns\QueriesConditions, Concerns\QueriesOrderBys, - Concerns\QueriesScopes; + Concerns\QueriesScopes, + Concerns\RendersForms; const HANDLE_PARAM = ['handle', 'is', 'in', 'form', 'formset']; diff --git a/src/Stache/Query/SubmissionQueryBuilder.php b/src/Stache/Query/SubmissionQueryBuilder.php index 8b4aeb61e6f..0505fa56830 100644 --- a/src/Stache/Query/SubmissionQueryBuilder.php +++ b/src/Stache/Query/SubmissionQueryBuilder.php @@ -2,7 +2,6 @@ namespace Statamic\Stache\Query; -use Illuminate\Support\Collection; use Statamic\Contracts\Forms\SubmissionQueryBuilder as QueryBuilderContract; use Statamic\Data\DataCollection; use Statamic\Facades;