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' %>