adjust sort order
This commit is contained in:
@@ -3,11 +3,13 @@
|
|||||||
class TemplateFoldersController < ApplicationController
|
class TemplateFoldersController < ApplicationController
|
||||||
load_and_authorize_resource :template_folder
|
load_and_authorize_resource :template_folder
|
||||||
|
|
||||||
|
helper_method :selected_order
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@templates = @template_folder.templates.active.accessible_by(current_ability)
|
@templates = @template_folder.templates.active.accessible_by(current_ability)
|
||||||
.preload(:author, :template_accesses)
|
.preload(:author, :template_accesses)
|
||||||
@templates = Templates.search(current_user, @templates, params[:q])
|
@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)
|
@pagy, @templates = pagy_auto(@templates, limit: 12)
|
||||||
end
|
end
|
||||||
@@ -25,6 +27,16 @@ class TemplateFoldersController < ApplicationController
|
|||||||
|
|
||||||
private
|
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
|
def template_folder_params
|
||||||
params.require(:template_folder).permit(:name)
|
params.require(:template_folder).permit(:name)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -8,12 +8,13 @@ class TemplatesDashboardController < ApplicationController
|
|||||||
TEMPLATES_PER_PAGE = 12
|
TEMPLATES_PER_PAGE = 12
|
||||||
FOLDERS_PER_PAGE = 18
|
FOLDERS_PER_PAGE = 18
|
||||||
|
|
||||||
|
helper_method :selected_order
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@template_folders = @template_folders.where(id: @templates.active.select(:folder_id))
|
@template_folders = @template_folders.where(id: @templates.active.select(:folder_id))
|
||||||
|
|
||||||
@template_folders = TemplateFolders.search(@template_folders, params[:q])
|
@template_folders = TemplateFolders.search(@template_folders, params[:q])
|
||||||
@template_folders = sort_template_folders(@template_folders, current_user,
|
@template_folders = sort_template_folders(@template_folders, current_user, selected_order)
|
||||||
cookies.permanent[:dashboard_templates_order])
|
|
||||||
|
|
||||||
@pagy, @template_folders = pagy(
|
@pagy, @template_folders = pagy(
|
||||||
@template_folders,
|
@template_folders,
|
||||||
@@ -26,7 +27,7 @@ class TemplatesDashboardController < ApplicationController
|
|||||||
else
|
else
|
||||||
@template_folders = @template_folders.reject { |e| e.name == TemplateFolder::DEFAULT_NAME }
|
@template_folders = @template_folders.reject { |e| e.name == TemplateFolder::DEFAULT_NAME }
|
||||||
@templates = filter_templates(@templates).preload(:author, :template_accesses)
|
@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 =
|
limit =
|
||||||
if @template_folders.size < 4
|
if @template_folders.size < 4
|
||||||
@@ -101,6 +102,16 @@ class TemplatesDashboardController < ApplicationController
|
|||||||
end
|
end
|
||||||
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
|
def load_related_submissions
|
||||||
@related_submissions = Submission.accessible_by(current_ability)
|
@related_submissions = Submission.accessible_by(current_ability)
|
||||||
.left_joins(:template)
|
.left_joins(:template)
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
<% dashboard_templates_order = cookies.permanent[:dashboard_templates_order] || 'created_at' %>
|
|
||||||
<form action="<%= url_for %>" method="get" class="dropdown dropdown-top hidden md:inline">
|
<form action="<%= url_for %>" method="get" class="dropdown dropdown-top hidden md:inline">
|
||||||
<label tabindex="0" class="btn btn-sm h-10">
|
<label tabindex="0" class="btn btn-sm h-10">
|
||||||
<%= svg_icon('arrow_sort', class: 'w-5 h-5') %>
|
<%= svg_icon('arrow_sort', class: 'w-5 h-5') %>
|
||||||
@@ -6,7 +5,7 @@
|
|||||||
<ul tabindex="0" class="dropdown-content z-[10] menu p-2 shadow bg-base-100 rounded-box mb-1 min-w-48">
|
<ul tabindex="0" class="dropdown-content z-[10] menu p-2 shadow bg-base-100 rounded-box mb-1 min-w-48">
|
||||||
<toggle-cookies data-value="created_at" data-key="dashboard_templates_order">
|
<toggle-cookies data-value="created_at" data-key="dashboard_templates_order">
|
||||||
<li>
|
<li>
|
||||||
<button class="<%= 'bg-base-200' if dashboard_templates_order == 'created_at' %>">
|
<button class="<%= 'bg-base-200' if selected_order == 'created_at' %>">
|
||||||
<%= svg_icon('sort_descending_numbers', class: 'w-4 h-4') %>
|
<%= svg_icon('sort_descending_numbers', class: 'w-4 h-4') %>
|
||||||
<span class="whitespace-nowrap"><%= t('newest_first') %></span>
|
<span class="whitespace-nowrap"><%= t('newest_first') %></span>
|
||||||
</button>
|
</button>
|
||||||
@@ -15,7 +14,7 @@
|
|||||||
<% if local_assigns[:with_recently_used] != false %>
|
<% if local_assigns[:with_recently_used] != false %>
|
||||||
<toggle-cookies data-value="used_at" data-key="dashboard_templates_order">
|
<toggle-cookies data-value="used_at" data-key="dashboard_templates_order">
|
||||||
<li>
|
<li>
|
||||||
<button class="<%= 'bg-base-200' if dashboard_templates_order == 'used_at' %>">
|
<button class="<%= 'bg-base-200' if selected_order == 'used_at' %>">
|
||||||
<%= svg_icon('sort_descending_small_big', class: 'w-4 h-4') %>
|
<%= svg_icon('sort_descending_small_big', class: 'w-4 h-4') %>
|
||||||
<span class="whitespace-nowrap"><%= t('recently_used') %></span>
|
<span class="whitespace-nowrap"><%= t('recently_used') %></span>
|
||||||
</button>
|
</button>
|
||||||
@@ -24,7 +23,7 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
<toggle-cookies data-value="name" data-key="dashboard_templates_order">
|
<toggle-cookies data-value="name" data-key="dashboard_templates_order">
|
||||||
<li>
|
<li>
|
||||||
<button class="<%= 'bg-base-200' if dashboard_templates_order == 'name' %>">
|
<button class="<%= 'bg-base-200' if selected_order == 'name' %>">
|
||||||
<%= svg_icon('sort_ascending_letters', class: 'w-4 h-4') %>
|
<%= svg_icon('sort_ascending_letters', class: 'w-4 h-4') %>
|
||||||
<span class="whitespace-nowrap"><%= t('name_a_z') %></span>
|
<span class="whitespace-nowrap"><%= t('name_a_z') %></span>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<% templates_order_select_html = capture do %>
|
<% templates_order_select_html = capture do %>
|
||||||
<% if params[:q].blank? && @pagy.pages > 1 %>
|
<% if params[:q].blank? && @pagy.pages > 1 %>
|
||||||
<%= render('shared/templates_order_select', with_recently_used: @pagy.count.present? && @pagy.count < 10_000) %>
|
<%= render 'shared/templates_order_select', with_recently_used: @pagy.count.present? && @pagy.count < 10_000 && !can?(:manage, :countless), selected_order: %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= render 'shared/pagination', pagy: @pagy, items_name: 'templates', right_additional_html: templates_order_select_html %>
|
<%= render 'shared/pagination', pagy: @pagy, items_name: 'templates', right_additional_html: templates_order_select_html %>
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
<% end %>
|
<% end %>
|
||||||
<% templates_order_select_html = capture do %>
|
<% templates_order_select_html = capture do %>
|
||||||
<% if params[:q].blank? && @pagy.pages > 1 %>
|
<% if params[:q].blank? && @pagy.pages > 1 %>
|
||||||
<%= render('shared/templates_order_select', with_recently_used: @pagy.count.present? && @pagy.count < 10_000) %>
|
<%= render 'shared/templates_order_select', with_recently_used: @pagy.count.present? && @pagy.count < 10_000 && !can?(:manage, :countless), selected_order: %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if @template_folders.present? %>
|
<% if @template_folders.present? %>
|
||||||
|
|||||||
Reference in New Issue
Block a user