# Patches to the Redmine core.
require 'dispatcher'
-
+
Dispatcher.to_prepare :redmine_publications do
require_dependency 'issue'
- # Guards against including the module multiple time (like in tests)
+
+ #Guards against including the module multiple time (like in tests)
# and registering multiple callbacks
unless Issue.included_modules.include? RedminePublications::IssuePatch
Issue.send(:include, RedminePublications::IssuePatch)
menu :application_menu, :publications, { :controller => 'publications', :action => 'index' }, :caption => 'Publikacje'
- requires_redmine :version_or_higher => '0.8.0'
+# requires_redmine :version_or_higher => '0.8.0'
end
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
+ if context[:issue].tracker_id == Setting.plugin_redmine_publications[:tracker].to_i
result = "<tr><td><b>Publication(s):</b></td><td>"
names = context[:issue].publication_names {|name| "<span>" + name + "</span>"}
result << names.join(', ')
end
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 }
+ 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
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
+ end
+
render_on :view_issues_form_details_bottom, :partial => 'issue_form_pub'
end
unloadable # Send unloadable so it will not be unloaded in development
validate :check_relations
- after_save :update_relations
-
- # Add visible to Redmine 0.8.x
- unless respond_to?(:visible)
- named_scope :visible, lambda {|*args| { :include => :project,
- :conditions => Project.allowed_to_condition(args.first || User.current, :view_issues) } }
- end
+ after_save :update_relations
end
end
end
def update_relations
- self.reload
old = self.publications
current_names = self.publication_names
+ Rails.logger.info('[INFO] Updating relations: old= ' << old.inspect << ' current=' << current_names.inspect)
# delete unused relations
deleted = old.select { |v| not (current_names.include?(v.name)) }