Links deletion independently on documents

This commit is contained in:
Karel Picman 2016-02-23 17:37:33 +01:00
parent 42ea32aefa
commit af6aabe2ab
4 changed files with 42 additions and 33 deletions

View File

@ -188,19 +188,22 @@ class DmsfController < ApplicationController
return
end
if selected_dir_links.present?
selected_dir_links.each do |id|
link = DmsfLink.find_by_id id
selected_folders << link.target_id if link && !selected_folders.include?(link.target_id.to_s)
if selected_dir_links.present? &&
(params[:email_entries].present? || params[:download_entries].present?)
selected_dir_links.each do |id|
link = DmsfLink.find_by_id id
selected_folders << link.target_id if link && !selected_folders.include?(link.target_id.to_s)
end
end
if selected_file_links.present?
selected_file_links.each do |id|
link = DmsfLink.find_by_id id
selected_files << link.target_id if link && !selected_files.include?(link.target_id.to_s)
if selected_file_links.present? &&
(params[:email_entries].present? || params[:download_entries].present?)
selected_file_links.each do |id|
link = DmsfLink.find_by_id id
selected_files << link.target_id if link && !selected_files.include?(link.target_id.to_s)
end
end
end
if params[:email_entries].present?
email_entries(selected_folders, selected_files)
elsif params[:restore_entries].present?
@ -503,15 +506,14 @@ class DmsfController < ApplicationController
end
if selected_files && selected_files.is_a?(Array)
selected_files.each do |selected_file_id|
file = DmsfFile.visible.find_by_id selected_file_id
file = DmsfFile.visible.find_by_id selected_file_id
unless file && file.last_revision && File.exists?(file.last_revision.disk_file)
raise FileNotFound
end
unless (file.project == @project) || User.current.allowed_to?(:view_dmsf_files, file.project)
raise DmsfAccessError
end
if file && file.last_revision && File.exists?(file.last_revision.disk_file)
zip.add_file(file, member, (file.folder.dmsf_path_str if file.folder)) if file
else
raise FileNotFound
end
zip.add_file(file, member, (file.folder.dmsf_path_str if file.folder)) if file
end
end
max_files = Setting.plugin_redmine_dmsf['dmsf_max_file_download'].to_i

View File

@ -141,8 +141,7 @@ class DmsfFile < ActiveRecord::Base
end
begin
# Revisions and links of a deleted file SHOULD be deleted too
self.revisions.each { |r| r.delete(commit, true) }
self.referenced_links.each { |l| l.delete(commit) }
self.revisions.each { |r| r.delete(commit, true) }
if commit
self.destroy
else
@ -162,8 +161,7 @@ class DmsfFile < ActiveRecord::Base
errors[:base] << l(:error_parent_folder)
return false
end
self.revisions.each { |r| r.restore }
self.referenced_links.each { |l| l.restore }
self.revisions.each { |r| r.restore }
self.deleted = STATUS_ACTIVE
self.deleted_by_user = nil
save

View File

@ -113,8 +113,7 @@ class DmsfFolder < ActiveRecord::Base
elsif !self.subfolders.visible.empty? || !self.files.visible.empty?
errors[:base] << l(:error_folder_is_not_empty)
return false
end
self.referenced_links.each { |l| l.delete(commit) }
end
if commit
self.destroy
else
@ -132,8 +131,7 @@ class DmsfFolder < ActiveRecord::Base
if self.dmsf_folder_id && (self.folder.nil? || self.folder.deleted?)
errors[:base] << l(:error_parent_folder)
return false
end
self.referenced_links.each { |l| l.restore }
end
self.deleted = STATUS_ACTIVE
self.deleted_by_user = nil
self.save

View File

@ -3,7 +3,7 @@
#
# Redmine plugin for Document Management System "Features"
#
# Copyright (C) 2011-15 Karel Pičman <karel.picman@kontron.com>
# Copyright (C) 2011-16 Karel Pičman <karel.picman@kontron.com>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -38,15 +38,26 @@
</td>
<td class="author"><%= h(file.last_revision.user) %></td>
<td class="buttons">
<% if @file_manipulation_allowed %>
<%= link_to(image_tag('restore.png', :plugin => 'redmine_dmsf'),
restore_dmsf_file_path(:id => file),
:title => l(:title_restore)) %>
<%= link_to(image_tag('rev_delete.png', :plugin => 'redmine_dmsf'),
dmsf_file_path(:id => file, :commit => 'yes'),
:data => {:confirm => l(:text_are_you_sure)},
:method => :delete,
:title => l(:title_delete)) %>
<% if @file_manipulation_allowed %>
<% if link %>
<%= link_to(image_tag('restore.png', :plugin => 'redmine_dmsf'),
restore_dmsf_link_path(:id => link),
:title => l(:title_restore)) %>
<%= link_to(image_tag('rev_delete.png', :plugin => 'redmine_dmsf'),
dmsf_link_path(:id => link, :commit => 'yes'),
:data => {:confirm => l(:text_are_you_sure)},
:method => :delete,
:title => l(:title_delete)) %>
<% else # file %>
<%= link_to(image_tag('restore.png', :plugin => 'redmine_dmsf'),
restore_dmsf_file_path(:id => file),
:title => l(:title_restore)) %>
<%= link_to(image_tag('rev_delete.png', :plugin => 'redmine_dmsf'),
dmsf_file_path(:id => file, :commit => 'yes'),
:data => {:confirm => l(:text_are_you_sure)},
:method => :delete,
:title => l(:title_delete)) %>
<% end %>
<% end %>
</td>
<td class="invisible">1</td>