From 8fd9af3a6ad540c8fa3809a2d3f7b334b0d904cd Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Mon, 30 Jun 2025 13:11:21 +0300 Subject: [PATCH 01/16] fix ci --- app/views/templates_preferences/_recipients.html.erb | 2 +- config/brakeman.ignore | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/templates_preferences/_recipients.html.erb b/app/views/templates_preferences/_recipients.html.erb index 0ca918ab..4f278fd1 100644 --- a/app/views/templates_preferences/_recipients.html.erb +++ b/app/views/templates_preferences/_recipients.html.erb @@ -15,7 +15,7 @@ <%= tag.input name: ff.field_name(:email), value: ff.object.email, type: :email, class: 'base-input', multiple: true, autocomplete: 'off', placeholder: t('default_email'), disabled: ff.object.is_requester || ff.object.invite_by_uuid.present? || ff.object.optional_invite_by_uuid.present?, id: field_uuid = SecureRandom.uuid %> <% else %> - <%= ff.select :option, [[t('not_specified'), 'not_set'], (local_assigns[:with_submission_requester] != false ? [t('submission_requester'), 'is_requester'] : nil), [t('specified_email'), 'email'], *(template.submitters - [submitter]).flat_map { |e| [[t('invite_by_name', name: e['name']), "invite_by_#{e['uuid']}"], [t('invite_by_name', name: e['name']) + " (#{t(:optional).capitalize})", "optional_invite_by_#{e['uuid']}"]] }, *(template.submitters - [submitter]).map { |e| [t('same_as_name', name: e['name']), "linked_to_#{e['uuid']}"] }].compact, {}, class: 'base-select mb-3' %> + <%= ff.select :option, [[t('not_specified'), 'not_set'], (local_assigns[:with_submission_requester] == false ? nil : [t('submission_requester'), 'is_requester']), [t('specified_email'), 'email'], *(template.submitters - [submitter]).flat_map { |e| [[t('invite_by_name', name: e['name']), "invite_by_#{e['uuid']}"], [t('invite_by_name', name: e['name']) + " (#{t(:optional).capitalize})", "optional_invite_by_#{e['uuid']}"]] }, *(template.submitters - [submitter]).map { |e| [t('same_as_name', name: e['name']), "linked_to_#{e['uuid']}"] }].compact, {}, class: 'base-select mb-3' %> <%= tag.input name: ff.field_name(:email), type: :email, value: ff.object.email, multiple: true, class: "base-input #{'hidden' if item.option != 'email'}", autocomplete: 'off', placeholder: t('default_email'), id: email_field_uuid %> <% end %> diff --git a/config/brakeman.ignore b/config/brakeman.ignore index 6c8ef943..0c19ca5c 100644 --- a/config/brakeman.ignore +++ b/config/brakeman.ignore @@ -1,7 +1,7 @@ { "ignored_warnings": [ { - "fingerprint": "25f4ce5fee1e1180fa1919dc4ee78db3ab3457a956e4679503aa745771a43836", + "fingerprint": "bbd1bdad94998e53a48921859065e06cd1595502d4dc40362afcaa90307b591a", "note": "Permitted parameters are necessary for creating submitters via API" }, { From d3236ae4a10c784814712ccd3f23d287e5c6c5a4 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Mon, 30 Jun 2025 23:57:49 +0300 Subject: [PATCH 02/16] adjust sort order --- app/controllers/template_folders_controller.rb | 14 +++++++++++++- .../templates_dashboard_controller.rb | 17 ++++++++++++++--- .../shared/_templates_order_select.html.erb | 7 +++---- app/views/template_folders/show.html.erb | 2 +- app/views/templates_dashboard/index.html.erb | 2 +- 5 files changed, 32 insertions(+), 10 deletions(-) diff --git a/app/controllers/template_folders_controller.rb b/app/controllers/template_folders_controller.rb index 25dad2c1..850a9046 100644 --- a/app/controllers/template_folders_controller.rb +++ b/app/controllers/template_folders_controller.rb @@ -3,11 +3,13 @@ class TemplateFoldersController < ApplicationController load_and_authorize_resource :template_folder + helper_method :selected_order + def show @templates = @template_folder.templates.active.accessible_by(current_ability) .preload(:author, :template_accesses) @templates = Templates.search(current_user, @templates, params[:q]) - @templates = Templates::Order.call(@templates, current_user, cookies.permanent[:dashboard_templates_order]) + @templates = Templates::Order.call(@templates, current_user, selected_order) @pagy, @templates = pagy_auto(@templates, limit: 12) end @@ -25,6 +27,16 @@ class TemplateFoldersController < ApplicationController private + def selected_order + @selected_order ||= + if cookies.permanent[:dashboard_templates_order].blank? || + (cookies.permanent[:dashboard_templates_order] == 'used_at' && can?(:manage, :countless)) + 'created_at' + else + cookies.permanent[:dashboard_templates_order] + end + end + def template_folder_params params.require(:template_folder).permit(:name) end diff --git a/app/controllers/templates_dashboard_controller.rb b/app/controllers/templates_dashboard_controller.rb index 69843d15..26592a10 100644 --- a/app/controllers/templates_dashboard_controller.rb +++ b/app/controllers/templates_dashboard_controller.rb @@ -8,12 +8,13 @@ class TemplatesDashboardController < ApplicationController TEMPLATES_PER_PAGE = 12 FOLDERS_PER_PAGE = 18 + helper_method :selected_order + def index @template_folders = @template_folders.where(id: @templates.active.select(:folder_id)) @template_folders = TemplateFolders.search(@template_folders, params[:q]) - @template_folders = sort_template_folders(@template_folders, current_user, - cookies.permanent[:dashboard_templates_order]) + @template_folders = sort_template_folders(@template_folders, current_user, selected_order) @pagy, @template_folders = pagy( @template_folders, @@ -26,7 +27,7 @@ class TemplatesDashboardController < ApplicationController else @template_folders = @template_folders.reject { |e| e.name == TemplateFolder::DEFAULT_NAME } @templates = filter_templates(@templates).preload(:author, :template_accesses) - @templates = Templates::Order.call(@templates, current_user, cookies.permanent[:dashboard_templates_order]) + @templates = Templates::Order.call(@templates, current_user, selected_order) limit = if @template_folders.size < 4 @@ -101,6 +102,16 @@ class TemplatesDashboardController < ApplicationController end end + def selected_order + @selected_order ||= + if cookies.permanent[:dashboard_templates_order].blank? || + (cookies.permanent[:dashboard_templates_order] == 'used_at' && can?(:manage, :countless)) + 'created_at' + else + cookies.permanent[:dashboard_templates_order] + end + end + def load_related_submissions @related_submissions = Submission.accessible_by(current_ability) .left_joins(:template) diff --git a/app/views/shared/_templates_order_select.html.erb b/app/views/shared/_templates_order_select.html.erb index b4a9a930..2924b6af 100644 --- a/app/views/shared/_templates_order_select.html.erb +++ b/app/views/shared/_templates_order_select.html.erb @@ -1,4 +1,3 @@ -<% dashboard_templates_order = cookies.permanent[:dashboard_templates_order] || 'created_at' %>