From 60cbc011c369a4e9139fed7f5385702875a977f9 Mon Sep 17 00:00:00 2001 From: "vit.jonas@gmail.com" Date: Sun, 12 Jun 2011 21:42:16 +0000 Subject: [PATCH] * work on Issue 54: Choose if deleted Documents remains in storage git-svn-id: http://redmine-dmsf.googlecode.com/svn/trunk/redmine_dmsf@148 5e329b0b-a2ee-ea63-e329-299493fc886d --- app/controllers/dmsf_files_controller.rb | 20 +++++++------------- app/models/dmsf_file_revision.rb | 19 +++++++++++++++++++ 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/app/controllers/dmsf_files_controller.rb b/app/controllers/dmsf_files_controller.rb index 39de51c7..b2eadb64 100644 --- a/app/controllers/dmsf_files_controller.rb +++ b/app/controllers/dmsf_files_controller.rb @@ -140,19 +140,13 @@ class DmsfFilesController < ApplicationController end def delete_revision - if @revision.file.locked_for_user? - flash[:error] = l(:error_file_is_locked) - else - if !@revision.nil? && !@revision.deleted - if @revision.file.revisions.size <= 1 - flash[:error] = l(:error_at_least_one_revision_must_be_present) - else - @revision.deleted = true - @revision.deleted_by_user = User.current - @revision.save - flash[:notice] = l(:notice_revision_deleted) - Rails.logger.info "#{Time.now} from #{request.remote_ip}/#{request.env["HTTP_X_FORWARDED_FOR"]}: #{User.current.login} deleted revision #{@project.identifier}://#{@revision.file.dmsf_path_str}/#{@revision.id}" - end + if !@revision.nil? && !@revision.deleted + if @revision.delete + flash[:notice] = l(:notice_revision_deleted) + Rails.logger.info "#{Time.now} from #{request.remote_ip}/#{request.env["HTTP_X_FORWARDED_FOR"]}: #{User.current.login} deleted revision #{@project.identifier}://#{@revision.file.dmsf_path_str}/#{@revision.id}" + else + # TODO: check this error handling + @revision.errors.each {|e| flash[:error] = e[1]} end end redirect_to :action => "show", :id => @file diff --git a/app/models/dmsf_file_revision.rb b/app/models/dmsf_file_revision.rb index 750fe3ca..3fade85e 100644 --- a/app/models/dmsf_file_revision.rb +++ b/app/models/dmsf_file_revision.rb @@ -55,6 +55,25 @@ class DmsfFileRevision < ActiveRecord::Base remove_extension(filename).gsub(/_+/, " "); end + def delete + if self.file.locked_for_user? + errors.add_to_base(l(:error_file_is_locked)) + return false + end + if self.file.revisions.size <= 1 + errors.add_to_base(l(:error_at_least_one_revision_must_be_present)) + return false + end + if Setting.plugin_redmine_dmsf["dmsf_really_delete_files"] + File.delete(self.disk_file) + self.destroy + else + self.deleted = true + self.deleted_by_user = User.current + save + end + end + def version "#{self.major_version}.#{self.minor_version}" end