X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/7a3192417060241aa0956762a5e101b5b893d22b..afdb8fd05511c5280e8ee251389cb893786eb810:/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 77fa215e..788a72f4 100644
--- a/redmine/redmine_publications/lib/issue_publication_hook.rb
+++ b/redmine/redmine_publications/lib/issue_publication_hook.rb
@@ -1,36 +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
- 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
+ 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
def controller_issues_new_after_save(context)
- if context[:issue].tracker.id == Setting.plugin_redmine_publications[:tracker].to_i
- value = context[:params][:publications].split(',').map { |n| n.strip }
- context[:issue].publication_names = value
- context[:issue].save
- end
+ if is_pticket?context
+ value = context[:params][:publications].split(',').map { |n| n.strip }
+ context[:issue].publication_names = value
+ context[:issue].save
+ end
end
-
- render_on :view_issues_form_details_bottom, :partial => 'issue_form_pub'
end