Initial commit
This commit is contained in:
89
app/controllers/directories_controller.rb
Normal file
89
app/controllers/directories_controller.rb
Normal file
@@ -0,0 +1,89 @@
|
||||
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
|
||||
Reference in New Issue
Block a user