X-Git-Url: https://git.mdrn.pl/redakcja_redmine.git/blobdiff_plain/3cd0bfe5475b72e64c26b534e388f772878a408d..refs/heads/master:/lib/redmine_publications/issue_patch.rb diff --git a/lib/redmine_publications/issue_patch.rb b/lib/redmine_publications/issue_patch.rb index f8a83c4..bd1f73e 100644 --- a/lib/redmine_publications/issue_patch.rb +++ b/lib/redmine_publications/issue_patch.rb @@ -11,14 +11,8 @@ module RedminePublications base.class_eval do unloadable # Send unloadable so it will not be unloaded in development - validate :check_relations + 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 end end @@ -29,55 +23,55 @@ module RedminePublications module InstanceMethods def publication_names - if not @pubnames - self.publications.map { |pub| pub.name } + if not @pubnames + self.publications.map { |pub| pub.name } else - @pubnames - end + @pubnames + end end def publication_names=(value) - @pubnames = value.sort! + @pubnames = value.sort! end def publications Publication.all( - :joins => - "JOIN issue_publications ON (issue_publications.publication_id = publications.id)", - :conditions => - ["issue_publications.issue_id = ? ", self.id] ) + :joins => + "JOIN issue_publications ON (issue_publications.publication_id = publications.id)", + :conditions => + ["issue_publications.issue_id = ? ", self.id] ) end def check_relations - current_names = self.publication_names - non_existant = [] + current_names = self.publication_names + non_existant = [] - pubs = Publication.find_all_by_name(current_names).map {|i| i.name} - missing = current_names.select {|name| not pubs.include?name } + pubs = Publication.find_all_by_name(current_names).map {|i| i.name} + missing = current_names.select {|name| not pubs.include?name } - if not missing.empty? - errors.add("publications", "Missing publication(s): " + missing.join(', ')) - end - end + if not missing.empty? + errors.add("publications", "Missing publication(s): " + missing.join(', ')) + end + end - def update_relations - self.reload - old = self.publications - current_names = self.publication_names + def update_relations + 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)) } - deleted.each do |pub| - IssuePublication.delete_all(["issue_publications.issue_id = ? AND issue_publications.publication_id = ?", self.id, pub.id]) - end + # delete unused relations + deleted = old.select { |v| not (current_names.include?(v.name)) } + deleted.each do |pub| + IssuePublication.delete_all(["issue_publications.issue_id = ? AND issue_publications.publication_id = ?", self.id, pub.id]) + end - current_names.each do |name| - pub = Publication.find_by_name(name) - IssuePublication.find_or_create_by_publication_id_and_issue_id(pub.id, self.id) - end + current_names.each do |name| + pub = Publication.find_by_name(name) + IssuePublication.find_or_create_by_publication_id_and_issue_id(pub.id, self.id) + end return true - end + end end end