#218 Recycle bin

This commit is contained in:
Karel Pičman 2014-05-27 10:04:06 +02:00
parent 3e8b141cf6
commit 8c98c23ed8
2 changed files with 23 additions and 12 deletions

View File

@ -114,10 +114,10 @@ class DmsfController < ApplicationController
@folder_manipulation_allowed = User.current.allowed_to? :folder_manipulation, @project
@file_manipulation_allowed = User.current.allowed_to? :file_manipulation, @project
@file_delete_allowed = User.current.allowed_to? :file_delete, @project
@subfolders = @project.dmsf_folders.deleted
@files = @project.dmsf_files.deleted
@dir_links = @project.folder_links.deleted
@file_links = @project.file_links.deleted
@subfolders = DmsfFolder.deleted.where(:project_id => @project.id)
@files = DmsfFile.deleted.where(:project_id => @project.id)
@dir_links = DmsfLink.deleted.where(:project_id => @project.id, :target_type => DmsfFolder.model_name)
@file_links = DmsfLink.deleted.where(:project_id => @project.id, :target_type => DmsfFile.model_name)
end
def download_email_entries
@ -329,12 +329,17 @@ class DmsfController < ApplicationController
end
def delete
if @folder.delete
commit = params[:commit] == 'yes'
if @folder.delete(commit)
flash[:notice] = l(:notice_folder_deleted)
else
flash[:error] = folder.errors[:base][0]
end
redirect_to dmsf_folder_path(:id => @project, :folder_id => @folder)
end
if commit
redirect_to :back
else
redirect_to dmsf_folder_path(:id => @project, :folder_id => @folder.folder)
end
end
def restore

View File

@ -85,20 +85,26 @@ class DmsfFolder < ActiveRecord::Base
end
end
def delete
def delete(commit)
if self.locked?
errors[:base] << l(:error_folder_is_locked)
return false
elsif !self.subfolders.visible.empty? || !self.files.visible.empty?
errors[:base] << l(:error_folder_is_not_empty)
return false
end
self.deleted = true
self.deleted_by_user = User.current
self.save
end
self.referenced_links.each { |l| l.delete(commit) }
if commit
self.destroy
else
self.deleted = true
self.deleted_by_user = User.current
self.save
end
end
def restore
self.referenced_links.each { |l| l.restore }
self.deleted = false
self.deleted_by_user = nil
self.save