X-Git-Url: https://git.mdrn.pl/redakcja_redmine.git/blobdiff_plain/3cd0bfe5475b72e64c26b534e388f772878a408d..refs/heads/master:/lib/issue_publication_hook.rb
diff --git a/lib/issue_publication_hook.rb b/lib/issue_publication_hook.rb
index 9c97233..788a72f 100644
--- a/lib/issue_publication_hook.rb
+++ b/lib/issue_publication_hook.rb
@@ -1,22 +1,55 @@
# Provides a link to the document on the platform
class IssuesPublicationHook < Redmine::Hook::ViewListener
- def view_issues_show_details_bottom(context)
- # TODO: zÅapaÄ wyjÄ
tek konwersji
- if context[:issue].tracker_id == Setting.plugin_redmine_publications['tracker'].to_i
- result = "
Publication(s): | "
- names = context[:issue].publication_names {|name| "" + name + ""}
- result << names.join(', ')
- result << " |
"
- end
+ 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)
- if context[:issue].tracker_id == Setting.plugin_redmine_publications['tracker'].to_i
- pub_field = context[:params][:publications]
- context[:issue].publication_names = pub_field.split(',').map { |n| n.strip }
- end
+ 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