Files
old-holivud2/app/controllers/directories_controller.rb
2020-05-31 22:38:19 +02:00

90 lines
2.0 KiB
Ruby

class DirectoriesController < ApplicationController
before_action :set_project
before_action :build_directory, only: [:new, :create]
before_action :set_directory, except: [:new, :create]
layout "project"
breadcrumb -> { t("shared.files") }, -> { @project }, match: :exact
breadcrumb -> { @directory.name.titleize }, -> { [@project, @directory] }, match: :exact, except: [:new, :create]
def new
end
def create
@directory.attributes = directory_params_with_user
if @directory.save
log_create_analytics
redirect_to [@project, @directory], notice: "The folder has been created"
else
render :new
end
end
def show
@files = filtered_files.paginate(page: params[:page])
end
def edit
end
def update
if @directory.update(directory_params)
redirect_to [@project, @directory], notice: t(".notice")
else
render :edit
end
end
def destroy
@directory.destroy
redirect_to @project, alert: t(".alert")
end
def new_file
end
def destroy_file
file = ActiveStorage::Attachment.find(params[:file_id])
file.purge
redirect_to [@project, @directory], alert: t(".alert")
end
private
def filtered_files
results = @directory.files
if params[:query].present?
results = @directory.search_files(params[:query])
end
results
end
def set_project
@project = policy_scope(Project).find(params[:project_id])
end
def set_directory
@directory = authorize policy_scope(Directory).find(params[:id])
end
def build_directory
@directory = authorize @project.directories.build
end
def directory_params_with_user
directory_params.merge(user: current_user)
end
def directory_params
params.require(:directory).permit(:name, :category, :permissions, files: [])
end
def log_create_analytics
TrackAnalyticsJob.perform_later(Current.user, Current.account, :track_create_custom_folder, user_agent: request.user_agent, user_ip: request.remote_ip)
end
end