From dc1c386d7e84eee1ec18afba348874cb0cb6f947 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Thu, 25 Jun 2026 09:27:59 +0300 Subject: [PATCH] adjust search --- .../template_folders_controller.rb | 16 ++++++----- .../templates_archived_controller.rb | 14 +++++++--- .../templates_dashboard_controller.rb | 28 ++++++++++--------- .../templates_shared_controller.rb | 25 +++++++++++++++++ app/views/template_folders/show.html.erb | 2 +- app/views/templates_dashboard/index.html.erb | 2 +- app/views/templates_shared/index.html.erb | 13 +++++++-- 7 files changed, 72 insertions(+), 28 deletions(-) diff --git a/app/controllers/template_folders_controller.rb b/app/controllers/template_folders_controller.rb index 03f58bf5..0a369a5b 100644 --- a/app/controllers/template_folders_controller.rb +++ b/app/controllers/template_folders_controller.rb @@ -32,7 +32,9 @@ class TemplateFoldersController < ApplicationController @pagy, @templates = pagy_auto(@templates, limit:) - load_related_submissions if params[:q].present? && @templates.blank? + if params[:q].present? && @templates.blank? + @related_submissions_pagy, @related_submissions = load_related_submissions(@template_folder) + end else @pagy, @template_folders = pagy(@template_folders, limit: FOLDERS_PER_PAGE) @@ -66,20 +68,20 @@ class TemplateFoldersController < ApplicationController params.require(:template_folder).permit(:name) end - def load_related_submissions - @related_submissions = + def load_related_submissions(template_folder) + related_submissions = Submission.accessible_by(current_ability) .where(archived_at: nil) .where(template_id: current_account.templates.active - .where(folder: [@template_folder, *@template_folder.subfolders]) + .where(folder: [template_folder, *template_folder.subfolders]) .select(:id)) .preload(:template_accesses, :created_by_user, template: :author, submitters: :start_form_submission_events) - @related_submissions = Submissions.search(current_user, @related_submissions, params[:q]) - .order(id: :desc) + related_submissions = Submissions.search(current_user, related_submissions, params[:q]) + .order(id: :desc) - @related_submissions_pagy, @related_submissions = pagy_auto(@related_submissions, limit: 5) + pagy_auto(related_submissions, limit: 5) end end diff --git a/app/controllers/templates_archived_controller.rb b/app/controllers/templates_archived_controller.rb index 69b16936..ac05e6f3 100644 --- a/app/controllers/templates_archived_controller.rb +++ b/app/controllers/templates_archived_controller.rb @@ -14,7 +14,13 @@ class TemplatesArchivedController < ApplicationController return unless params[:q].present? && @templates.blank? - @related_submissions = + @related_submissions_pagy, @related_submissions = load_related_submissions + end + + private + + def load_related_submissions + related_submissions = Submission.accessible_by(current_ability) .joins(:template) .where.not(templates: { archived_at: nil }) @@ -22,9 +28,9 @@ class TemplatesArchivedController < ApplicationController template: :author, submitters: :start_form_submission_events) - @related_submissions = Submissions.search(current_user, @related_submissions, params[:q]) - .order(id: :desc) + related_submissions = Submissions.search(current_user, related_submissions, params[:q]) + .order(id: :desc) - @related_submissions_pagy, @related_submissions = pagy_auto(@related_submissions, limit: 5) + pagy_auto(related_submissions, limit: 5) end end diff --git a/app/controllers/templates_dashboard_controller.rb b/app/controllers/templates_dashboard_controller.rb index 787d3a24..d7e7554d 100644 --- a/app/controllers/templates_dashboard_controller.rb +++ b/app/controllers/templates_dashboard_controller.rb @@ -38,7 +38,9 @@ class TemplatesDashboardController < ApplicationController @pagy, @templates = load_templates(@templates, @pagy.count) - load_related_submissions if params[:q].present? && @templates.blank? + if params[:q].present? && @templates.blank? + @related_submissions_pagy, @related_submissions = load_related_submissions + end end end @@ -110,17 +112,17 @@ class TemplatesDashboardController < ApplicationController end def load_related_submissions - @related_submissions = Submission.accessible_by(current_ability) - .left_joins(:template) - .where(archived_at: nil) - .where(templates: { archived_at: nil }) - .preload(:template_accesses, :created_by_user, - template: :author, - submitters: :start_form_submission_events) - - @related_submissions = Submissions.search(current_user, @related_submissions, params[:q]) - .order(id: :desc) - - @related_submissions_pagy, @related_submissions = pagy_auto(@related_submissions, limit: 5) + related_submissions = Submission.accessible_by(current_ability) + .left_joins(:template) + .where(archived_at: nil) + .where(templates: { archived_at: nil }) + .preload(:template_accesses, :created_by_user, + template: :author, + submitters: :start_form_submission_events) + + related_submissions = Submissions.search(current_user, related_submissions, params[:q]) + .order(id: :desc) + + pagy_auto(related_submissions, limit: 5) end end diff --git a/app/controllers/templates_shared_controller.rb b/app/controllers/templates_shared_controller.rb index 90b5d159..4487c56f 100644 --- a/app/controllers/templates_shared_controller.rb +++ b/app/controllers/templates_shared_controller.rb @@ -18,5 +18,30 @@ class TemplatesSharedController < ApplicationController @templates = Templates.search(current_user, @templates, params[:q]) @pagy, @templates = pagy_auto(@templates, limit: 12) + + return unless params[:q].present? && @templates.blank? + + @related_submissions_pagy, @related_submissions = load_related_submissions(is_archived: @is_archived) + end + + private + + def load_related_submissions(is_archived:) + shared_templates = Templates.shared(current_user) + shared_templates = is_archived ? shared_templates.archived : shared_templates.active + + related_submissions = + Submission.accessible_by(current_ability) + .where(template_id: shared_templates.select(:id)) + .preload(:template_accesses, :created_by_user, + template: :author, + submitters: :start_form_submission_events) + + related_submissions = related_submissions.where(archived_at: nil) unless is_archived + + related_submissions = Submissions.search(current_user, related_submissions, params[:q]) + .order(id: :desc) + + pagy_auto(related_submissions, limit: 5) end end diff --git a/app/views/template_folders/show.html.erb b/app/views/template_folders/show.html.erb index 527af6ca..57fdb18c 100644 --- a/app/views/template_folders/show.html.erb +++ b/app/views/template_folders/show.html.erb @@ -30,7 +30,7 @@ <% end %>
- <% if params[:q].present? || @pagy.pages > 1 || @template_folders.present? %> + <% if params[:q].present? || @pagy.count.nil? || @pagy.count > 0 || @template_folders.present? %> <%= render 'shared/search_input' %> <% end %> <% if can?(:create, ::Template) %> diff --git a/app/views/templates_dashboard/index.html.erb b/app/views/templates_dashboard/index.html.erb index b09f077d..752e42fb 100644 --- a/app/views/templates_dashboard/index.html.erb +++ b/app/views/templates_dashboard/index.html.erb @@ -23,7 +23,7 @@
- <% if params[:q].present? || @pagy.pages > 1 || @template_folders.present? %> + <% if params[:q].present? || @pagy.count.nil? || @pagy.count > 1 || @template_folders.present? %> <%= render 'shared/search_input' %> <% end %> <% if can?(:create, ::Template) %> diff --git a/app/views/templates_shared/index.html.erb b/app/views/templates_shared/index.html.erb index 5320558b..24e26f8f 100644 --- a/app/views/templates_shared/index.html.erb +++ b/app/views/templates_shared/index.html.erb @@ -13,13 +13,13 @@ <% end %>
- <% if params[:q].present? || @pagy.pages > 1 %> + <% if params[:q].present? || @pagy.count.nil? || @pagy.count > 1 %> <%= render 'shared/search_input' %> <% end %>
<% view_archived_html = capture do %> - <% if @has_archived %> + <% if @has_archived && params[:q].blank? %>
<%= t('view_archived') %>
@@ -35,6 +35,15 @@ <%= t('templates_not_found') %> + <% if @related_submissions.present? %> +

+ <%= t('submissions') %> +

+
+ <%= render partial: 'templates/submission', collection: @related_submissions, locals: { with_template: true } %> +
+ <%= render 'shared/pagination', pagy: @related_submissions_pagy, items_name: 'submissions' %> + <% end %> <% end %> <% if @pagy.pages > 1 %> <%= render 'shared/pagination', pagy: @pagy, items_name: 'templates', left_additional_html: view_archived_html %>