Links deletion independently on documents
This commit is contained in:
parent
42ea32aefa
commit
af6aabe2ab
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user