From e3831b409f949c0a7a8a6e99cd600617b2d00346 Mon Sep 17 00:00:00 2001 From: Daniel Munn Date: Wed, 27 Jun 2012 12:52:19 +0100 Subject: [PATCH] Fix: errors.add_to_base is not Rails3 compliant - changed with errors[:base] << Update: UI updates to better notify of locked status --- app/controllers/dmsf_controller.rb | 2 +- app/controllers/dmsf_files_controller.rb | 2 +- app/models/dmsf_file.rb | 4 ++-- app/models/dmsf_file_revision.rb | 4 ++-- app/models/dmsf_folder.rb | 8 +++++++- app/views/dmsf/show.html.erb | 20 ++++++++++++++------ lib/tasks/dmsf_convert_documents.rake | 6 +++--- 7 files changed, 30 insertions(+), 16 deletions(-) diff --git a/app/controllers/dmsf_controller.rb b/app/controllers/dmsf_controller.rb index fd1f6edd..579ca759 100644 --- a/app/controllers/dmsf_controller.rb +++ b/app/controllers/dmsf_controller.rb @@ -185,7 +185,7 @@ class DmsfController < ApplicationController if @delete_folder.delete flash[:notice] = l(:notice_folder_deleted) else - flash[:error] = l(:error_folder_is_not_empty) + flash[:error] = @delete_folder.errors[:base][0] end end redirect_to :controller => "dmsf", :action => "show", :id => @project, :folder_id => @folder diff --git a/app/controllers/dmsf_files_controller.rb b/app/controllers/dmsf_files_controller.rb index a13c7979..c8d7d8ea 100644 --- a/app/controllers/dmsf_files_controller.rb +++ b/app/controllers/dmsf_files_controller.rb @@ -152,7 +152,7 @@ class DmsfFilesController < ApplicationController log_activity("deleted") else # TODO: check this error handling - @revision.errors.each {|e| flash[:error] = e[1]} + @revision.errors.each {|e,msg| flash[:error] = msg} end end redirect_to :action => "show", :id => @file diff --git a/app/models/dmsf_file.rb b/app/models/dmsf_file.rb index d6c7e875..b37e6d82 100644 --- a/app/models/dmsf_file.rb +++ b/app/models/dmsf_file.rb @@ -103,7 +103,7 @@ class DmsfFile < ActiveRecord::Base def delete if locked_for_user? - errors.add_to_base(l(:error_file_is_locked)) + errors[:base] << l(:error_file_is_locked) return false end if Setting.plugin_redmine_dmsf["dmsf_really_delete_files"] @@ -204,7 +204,7 @@ class DmsfFile < ActiveRecord::Base def move_to(project, folder) if self.locked_for_user? - errors.add_to_base(l(:error_file_is_locked)) + errors[:base] << l(:error_file_is_locked) return false end diff --git a/app/models/dmsf_file_revision.rb b/app/models/dmsf_file_revision.rb index 549db976..9e8c56c0 100644 --- a/app/models/dmsf_file_revision.rb +++ b/app/models/dmsf_file_revision.rb @@ -63,11 +63,11 @@ class DmsfFileRevision < ActiveRecord::Base def delete(delete_all = false) if self.file.locked_for_user? - errors.add_to_base(l(:error_file_is_locked)) + errors[:base] << l(:error_file_is_locked) return false end if !delete_all && self.file.revisions.length <= 1 - errors.add_to_base(l(:error_at_least_one_revision_must_be_present)) + errors[:base] << l(:error_at_least_one_revision_must_be_present) return false end dependent = DmsfFileRevision.find(:all, :conditions => diff --git a/app/models/dmsf_folder.rb b/app/models/dmsf_folder.rb index 2b8cf299..d4b4ff0b 100644 --- a/app/models/dmsf_folder.rb +++ b/app/models/dmsf_folder.rb @@ -86,7 +86,13 @@ class DmsfFolder < ActiveRecord::Base end def delete - return false if !self.subfolders.visible.empty? || !self.files.visible.empty? + 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 destroy end diff --git a/app/views/dmsf/show.html.erb b/app/views/dmsf/show.html.erb index 6d9487d7..68651a4d 100644 --- a/app/views/dmsf/show.html.erb +++ b/app/views/dmsf/show.html.erb @@ -49,7 +49,7 @@
<%= submit_tag(l(:submit_download), :title => l(:title_download_checked), :name => "download_entries") %> <%= submit_tag(l(:submit_email), :title => l(:title_send_checked_by_email), :name => "email_entries") %> - <% if User.current.allowed_to?(:file_manipulation, @project) %> + <% if User.current.allowed_to?(:file_manipulation, @project) && (!@folder.nil? && !@folder.locked_for_user?) %> <% end %>
@@ -81,7 +81,15 @@ <%= render "custom_fields", :object => subfolder %> <%= number_to_human_size(subfolder.deep_size) %> - <%= subfolder.updated_at.strftime("%Y-%m-%d %H:%M") %> + <%= subfolder.updated_at.strftime("%Y-%m-%d %H:%M") %> + <% if subfolder.locked_for_user? %> + <%= link_to(image_tag("locked.png", :plugin => :redmine_dmsf), + {:controller => "users", :action => "show", :id => subfolder.lock.reverse[0].user }, + :title => l(:title_locked_by_user, :user => subfolder.lock.reverse[0].user.to_s)) %> + <% elsif subfolder.locked? %> + <%= image_tag("lockedbycurrent.png", :title => l(:title_locked_by_you), :plugin => :redmine_dmsf) %> + <% end %> + <%= h(subfolder.user) %> @@ -103,7 +111,7 @@
<%= link_to(image_tag("edit.png", :class =>"detail_icon"), {:action => "edit", :id => @project, :folder_id => subfolder }, - :title => l(:link_edit, :title => h(subfolder.title))) %> + :title => l(:link_edit, :title => h(subfolder.title))) unless subfolder.locked_for_user? %>
<% end %>
@@ -115,7 +123,7 @@ :id => @project, :folder_id => subfolder)}')", :title => l(:title_unlock_file))%> <% else %> - <%= image_tag("locked.png", :plugin => :redmine_dmsf, :title => l(:title_folder_parent_locked, :name => subfolder.folder.lock.reverse[0].folder.title)) %> + <%= image_tag("locked.png", :plugin => :redmine_dmsf, :title => l(:title_folder_parent_locked, :name => subfolder.lock.reverse[0].folder.title)) %> <% end %> <% else %> <%= link_to_function(image_tag("lock.png", :plugin => :redmine_dmsf), @@ -127,7 +135,7 @@ <% end %> <%= link_to_function(image_tag("delete.png", :plugin => :redmine_dmsf), "confirmation_link('#{url_for(:action => 'delete', :id => @project, :folder_id => @folder, :delete_folder_id => subfolder)}')", - :title => l(:title_delete))%> + :title => l(:title_delete)) unless (subfolder.locked_for_user?)%>

@@ -307,5 +315,5 @@ sUrl = "jquery.dataTables/#{I18n.locale.to_s.downcase}.json" if I18n.locale && ! <% end %> -<%= render(:partial => "multi_upload") if User.current.allowed_to?(:file_manipulation, @project) %> +<%= render(:partial => "multi_upload") if (User.current.allowed_to?(:file_manipulation, @project) && (!@folder.nil? && !@folder.locked_for_user?)) %>
diff --git a/lib/tasks/dmsf_convert_documents.rake b/lib/tasks/dmsf_convert_documents.rake index e2e9653b..4a430eb3 100644 --- a/lib/tasks/dmsf_convert_documents.rake +++ b/lib/tasks/dmsf_convert_documents.rake @@ -75,7 +75,7 @@ class DmsfConvertDocuments if dry puts "Dry check folder: " + folder.title if folder.invalid? - folder.errors.each {|e| puts "#{e[0]}: #{e[1]}"} + folder.errors.each {|e,msg| puts "#{e}: #{msg}"} end else begin @@ -120,7 +120,7 @@ class DmsfConvertDocuments if dry puts "Dry check file: " + file.name if file.invalid? - file.errors.each {|e| puts "#{e[0]}: #{e[1]}"} + file.errors.each {|e.msg| puts "#{e}: #{msg}"} end else file.save! @@ -158,7 +158,7 @@ class DmsfConvertDocuments if dry puts "Dry check revision: " + revision.title if revision.invalid? - revision.errors.each {|e| puts "#{e[0]}: #{e[1]}"} + revision.errors.each {|e,msg| puts "#{e}: #{msg}"} end else revision.save!