X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/4b33f145c7966710e537531261e04d2596159049..012e3cc4c4abe370e7ccddde61c1faa05db53803:/redmine/redmine_publications/lib/issue_publication_hook.rb
diff --git a/redmine/redmine_publications/lib/issue_publication_hook.rb b/redmine/redmine_publications/lib/issue_publication_hook.rb
index 4cfc3ba5..788a72f4 100644
--- a/redmine/redmine_publications/lib/issue_publication_hook.rb
+++ b/redmine/redmine_publications/lib/issue_publication_hook.rb
@@ -1,16 +1,55 @@
# Provides a link to the document on the platform
class IssuesPublicationHook < Redmine::Hook::ViewListener
- def view_issues_show_details_bottom(context)
- result = "
Source File(s): | "
- names = context[:issue].source_files.map {|name| "" + name + ""}
- result << names.join(', ')
- result + " |
"
+
+ def self.render_on(hook, options={})
+ define_method hook do |context|
+ if !options.include?(:if) || evaluate_if_option(options[:if], context)
+ context[:controller].send(:render_to_string, {:locals => context}.merge(options))
+ end
+ end
+ end
+
+ private
+
+ def evaluate_if_option(if_option, context)
+ case if_option
+ when Symbol
+ send(if_option, context)
+ when Method, Proc
+ if_option.call(context)
+ end
+ end
+
+ def is_pticket?(context)
+ context[:issue].project_id == Setting.plugin_redmine_publications[:project].to_i
end
+ public
+
+ render_on :view_issues_show_details_bottom, :partial => 'issue_view_pub', :if => :is_pticket?
+ render_on :view_issues_form_details_bottom, :partial => 'issue_form_pub', :if => :is_pticket?
+
+ # names = context[:issue].publication_names {|name| "" + name + ""}
+ # result << names.join(', ')
+
def controller_issues_edit_before_save(context)
- pub_field = context[:params][:issue_source_files]
- context[:issue].source_files = pub_field
+ if is_pticket?context
+ old_value = context[:issue].publication_names
+ new_value = context[:params][:publications].split(',').map { |n| n.strip }
+ context[:journal].details << JournalDetail.new(
+ :property => 'attr', :prop_key => "publications",
+ :old_value => old_value.join(', '),
+ :value => new_value.join(', ') ) unless new_value==old_value
+ context[:issue].publication_names = new_value
+ end
end
- render_on :view_issues_form_details_bottom, :partial => 'issue_form_pub'
+
+ def controller_issues_new_after_save(context)
+ if is_pticket?context
+ value = context[:params][:publications].split(',').map { |n| n.strip }
+ context[:issue].publication_names = value
+ context[:issue].save
+ end
+ end
end