Files
docuseal/app/controllers/template_folders_controller.rb
T

88 lines
2.9 KiB
Ruby
Raw Normal View History

2023-09-22 02:20:38 +03:00
# frozen_string_literal: true
class TemplateFoldersController < ApplicationController
load_and_authorize_resource :template_folder
2025-06-30 23:57:49 +03:00
helper_method :selected_order
2025-07-20 08:28:19 +03:00
TEMPLATES_PER_PAGE = 12
FOLDERS_PER_PAGE = 18
2023-09-22 02:20:38 +03:00
def show
2025-07-20 08:28:19 +03:00
@templates = Template.active.accessible_by(current_ability)
.where(folder: [@template_folder, *(params[:q].present? ? @template_folder.subfolders : [])])
.preload(:author, :template_accesses)
@template_folders =
@template_folder.subfolders.where(id: Template.accessible_by(current_ability).active.select(:folder_id))
@template_folders = TemplateFolders.search(@template_folders, params[:q])
@template_folders = TemplateFolders.sort(@template_folders, current_user, selected_order)
if @templates.exists?
@templates = Templates.search(current_user, @templates, params[:q])
@templates = Templates::Order.call(@templates, current_user, selected_order)
2023-09-22 02:20:38 +03:00
2025-07-20 08:28:19 +03:00
limit =
if @template_folders.size < 4
TEMPLATES_PER_PAGE
else
(@template_folders.size < 7 ? 9 : 6)
end
@pagy, @templates = pagy_auto(@templates, limit:)
2026-06-25 09:27:59 +03:00
if params[:q].present? && @templates.blank?
@related_submissions_pagy, @related_submissions = load_related_submissions(@template_folder)
end
2025-07-20 08:28:19 +03:00
else
@pagy, @template_folders = pagy(@template_folders, limit: FOLDERS_PER_PAGE)
@templates = @templates.none
end
2023-09-22 02:20:38 +03:00
end
def edit; end
def update
if @template_folder != current_account.default_template_folder &&
@template_folder.update(template_folder_params)
2024-09-18 19:47:47 +03:00
redirect_to folder_path(@template_folder), notice: I18n.t('folder_name_has_been_updated')
2023-09-22 02:20:38 +03:00
else
2024-09-18 19:47:47 +03:00
redirect_to folder_path(@template_folder), alert: I18n.t('unable_to_rename_folder')
2023-09-22 02:20:38 +03:00
end
end
private
2025-06-30 23:57:49 +03:00
def selected_order
@selected_order ||=
2026-06-24 22:39:58 +03:00
if can?(:manage, :countless)
2025-06-30 23:57:49 +03:00
'created_at'
else
2026-06-24 22:39:58 +03:00
cookies.permanent[:dashboard_templates_order].presence || 'created_at'
2025-06-30 23:57:49 +03:00
end
end
2023-09-22 02:20:38 +03:00
def template_folder_params
params.require(:template_folder).permit(:name)
end
2025-07-20 08:28:19 +03:00
2026-06-25 09:27:59 +03:00
def load_related_submissions(template_folder)
related_submissions =
2025-07-20 08:28:19 +03:00
Submission.accessible_by(current_ability)
.where(archived_at: nil)
.where(template_id: current_account.templates.active
2026-06-25 09:27:59 +03:00
.where(folder: [template_folder, *template_folder.subfolders])
2025-07-20 08:28:19 +03:00
.select(:id))
.preload(:template_accesses, :created_by_user,
template: :author,
submitters: :start_form_submission_events)
2026-06-25 09:27:59 +03:00
related_submissions = Submissions.search(current_user, related_submissions, params[:q])
.order(id: :desc)
2025-07-20 08:28:19 +03:00
2026-06-25 09:27:59 +03:00
pagy_auto(related_submissions, limit: 5)
2025-07-20 08:28:19 +03:00
end
2023-09-22 02:20:38 +03:00
end