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!
|