refs #136585 issue copying
This commit is contained in:
parent
a57031957a
commit
89bd771f0d
@ -268,8 +268,8 @@ class DmsfFile < ActiveRecord::Base
|
||||
self.save && new_revision.save
|
||||
end
|
||||
|
||||
def copy_to(project, folder)
|
||||
|
||||
def copy_to(container, folder = nil)
|
||||
project = container.is_a?(Project) ? container : container.project
|
||||
# If the target project differs from the source project we must physically move the disk files
|
||||
if self.project != project
|
||||
self.dmsf_file_revisions.all.each do |rev|
|
||||
@ -278,27 +278,22 @@ class DmsfFile < ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
file = DmsfFile.new
|
||||
file.dmsf_folder = folder
|
||||
file.container_type = self.container_type
|
||||
file.container_id = project.id
|
||||
file.container_id = container.id
|
||||
file.name = self.name
|
||||
file.notification = Setting.plugin_redmine_dmsf['dmsf_default_notifications'].present?
|
||||
|
||||
if file.save && self.last_revision
|
||||
new_revision = self.last_revision.clone
|
||||
new_revision.dmsf_file = file
|
||||
new_revision.comment = l(:comment_copied_from, :source => "#{self.project.identifier}: #{self.dmsf_path_str}")
|
||||
|
||||
new_revision.comment = l(:comment_copied_from, :source => "#{project.identifier}: #{self.dmsf_path_str}")
|
||||
new_revision.custom_values = []
|
||||
self.last_revision.custom_values.each do |cv|
|
||||
new_revision.custom_values << CustomValue.new({:custom_field => cv.custom_field, :value => cv.value})
|
||||
end
|
||||
|
||||
file.delete(true) unless new_revision.save
|
||||
end
|
||||
|
||||
return file
|
||||
end
|
||||
|
||||
|
||||
@ -24,29 +24,31 @@
|
||||
<hr/>
|
||||
<div class="attachments">
|
||||
<% for dmsf_file in dmsf_files %>
|
||||
<p>
|
||||
<% file_view_url = url_for({:controller => :dmsf_files, :action => 'view', :id => dmsf_file}) %>
|
||||
<%= link_to(h(dmsf_file.title),
|
||||
file_view_url,
|
||||
:target => '_blank',
|
||||
:class => "icon icon-file #{DmsfHelper.filetype_css(dmsf_file.name)}",
|
||||
:title => h(dmsf_file.last_revision.try(:tooltip)),
|
||||
'data-downloadurl' => "#{dmsf_file.last_revision.detect_content_type}:#{h(dmsf_file.name)}:#{file_view_url}") %>
|
||||
<% if dmsf_file.text? || dmsf_file.image? %>
|
||||
<%= link_to l(:button_view),
|
||||
file_view_url,
|
||||
:class => 'icon-only icon-magnifier',
|
||||
:title => l(:button_view) %>
|
||||
<% end %>
|
||||
<%= " - #{dmsf_file.description}" unless dmsf_file.description.blank? %>
|
||||
<span class="size">(<%= number_to_human_size dmsf_file.last_revision.size %>)</span>
|
||||
<%= link_to(image_tag('delete.png'),
|
||||
dmsf_file_path(:id => dmsf_file, :commit => 'yes'),
|
||||
:data => {:confirm => l(:text_are_you_sure)},
|
||||
:method => :delete,
|
||||
:title => l(:title_delete)) %>
|
||||
<span class="author"><%= dmsf_file.last_revision.user %>, <%= format_time(dmsf_file.last_revision.updated_at) %></span>
|
||||
</p>
|
||||
<% if dmsf_file.last_revision %>
|
||||
<p>
|
||||
<% file_view_url = url_for({:controller => :dmsf_files, :action => 'view', :id => dmsf_file}) %>
|
||||
<%= link_to(h(dmsf_file.title),
|
||||
file_view_url,
|
||||
:target => '_blank',
|
||||
:class => "icon icon-file #{DmsfHelper.filetype_css(dmsf_file.name)}",
|
||||
:title => h(dmsf_file.last_revision.try(:tooltip)),
|
||||
'data-downloadurl' => "#{dmsf_file.last_revision.detect_content_type}:#{h(dmsf_file.name)}:#{file_view_url}") %>
|
||||
<% if dmsf_file.text? || dmsf_file.image? %>
|
||||
<%= link_to l(:button_view),
|
||||
file_view_url,
|
||||
:class => 'icon-only icon-magnifier',
|
||||
:title => l(:button_view) %>
|
||||
<% end %>
|
||||
<%= " - #{dmsf_file.description}" unless dmsf_file.description.blank? %>
|
||||
<span class="size">(<%= number_to_human_size dmsf_file.last_revision.size %>)</span>
|
||||
<%= link_to(image_tag('delete.png'),
|
||||
dmsf_file_path(:id => dmsf_file, :commit => 'yes'),
|
||||
:data => {:confirm => l(:text_are_you_sure)},
|
||||
:method => :delete,
|
||||
:title => l(:title_delete)) %>
|
||||
<span class="author"><%= dmsf_file.last_revision.user %>, <%= format_time(dmsf_file.last_revision.updated_at) %></span>
|
||||
</p>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% if defined?(thumbnails) && thumbnails %>
|
||||
<% images = dmsf_files.select(&:image?) %>
|
||||
@ -63,4 +65,4 @@
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
@ -23,9 +23,21 @@ module RedmineDmsf
|
||||
include Redmine::Hook
|
||||
|
||||
class ControllerIssuesHook < RedmineDmsf::Hooks::Listener
|
||||
|
||||
|
||||
def controller_issues_new_after_save(context={})
|
||||
controller_issues_after_save(context)
|
||||
# Copy documents from the source issue
|
||||
if context.is_a?(Hash)
|
||||
issue = context[:issue]
|
||||
params = context[:params]
|
||||
copied_from = Issue.find_by_id(params[:copy_from]) if params[:copy_from].present?
|
||||
# Save documents
|
||||
if copied_from
|
||||
issue.dmsf_files = copied_from.dmsf_files.map do |dmsf_file|
|
||||
dmsf_file.copy_to(issue)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def controller_issues_edit_after_save(context={})
|
||||
@ -35,6 +47,7 @@ module RedmineDmsf
|
||||
private
|
||||
|
||||
def controller_issues_after_save(context)
|
||||
# Create attached documents
|
||||
if context.is_a?(Hash)
|
||||
issue = context[:issue]
|
||||
params = context[:params]
|
||||
|
||||
@ -28,12 +28,22 @@ module RedmineDmsf
|
||||
base.send(:include, InstanceMethods)
|
||||
base.class_eval do
|
||||
unloadable
|
||||
alias_method_chain :copy_from, :dmsf_copy_from
|
||||
has_many :dmsf_files, -> { where(dmsf_folder_id: nil, container_type: 'Issue').order(:name) },
|
||||
:class_name => 'DmsfFile', :foreign_key => 'container_id', :dependent => :destroy
|
||||
end
|
||||
end
|
||||
|
||||
module InstanceMethods
|
||||
|
||||
def copy_from_with_dmsf_copy_from(arg, options={})
|
||||
copy_from_without_dmsf_copy_from(arg, options)
|
||||
# issue = @copied_from
|
||||
# self.dmsf_files = issue.dmsf_files.map do |dmsf_file|
|
||||
# dmsf_file.copy_to(self)
|
||||
# end
|
||||
end
|
||||
|
||||
def dmsf_file_added(dmsf_file)
|
||||
unless dmsf_file.new_record?
|
||||
self.journalize_dmsf_file(dmsf_file, :added)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user