From e41ebde0b4ec4203e00e3ba906a3eadcd5edd10e Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C5=81ukasz=20Rekucki?= Date: Thu, 24 Sep 2009 17:30:21 +0200 Subject: [PATCH] Redmine locale fix. Some RAL tweaks. Added line numbers to code-mirror. --- app/controllers/publications_controller.rb | 40 ++++++------- app/views/issues/_issue_form_pub.html.erb | 2 +- app/views/issues/_issue_view_pub.erb | 2 +- init.rb | 4 ++ lib/redmine_publications/change_patch.rb | 38 +++++++++++++ lib/redmine_publications/issue_patch.rb | 66 +++++++++++----------- locales/en.yml | 3 + locales/pl.yml | 3 + 8 files changed, 103 insertions(+), 55 deletions(-) create mode 100644 lib/redmine_publications/change_patch.rb create mode 100644 locales/en.yml create mode 100644 locales/pl.yml diff --git a/app/controllers/publications_controller.rb b/app/controllers/publications_controller.rb index 6c1e734..ebf735b 100644 --- a/app/controllers/publications_controller.rb +++ b/app/controllers/publications_controller.rb @@ -19,28 +19,28 @@ class PublicationsController < ApplicationController Publication.delete_all() repos = Repository.all if repos - repos.each do |repo| - repo_status = [] - if repo.entries - repo.entries.each do |entry| - match = entry.path.match(regexp) - if match - Publication.find_or_create_by_name(:name => match[1], - :source_file => entry.path, :repository_id => repo.id) - repo_status += [{:path => entry.path, :match => match[1], :matched => true}] - else - repo_status += [{:path => entry.path, :match =>nil, :matched => false}] + repos.each do |repo| + repo_status = [] + if repo.entries + repo.entries.each do |entry| + match = entry.path.match(regexp) + if match + Publication.find_or_create_by_name(:name => match[1], + :source_file => entry.path, :repository_id => repo.id) + repo_status += [{:path => entry.path, :match => match[1], :matched => true}] + else + repo_status += [{:path => entry.path, :match =>nil, :matched => false}] + end + end + @match_status += [{:repo => repo, :status => repo_status}] end end - @match_status += [{:repo => repo, :status => repo_status}] - end - end - respond_to do |format| - format.html - format.xml { render :xml => @match_status} - format.json { render :json => @match_status } - end + respond_to do |format| + format.html + format.xml { render :xml => @match_status} + format.json { render :json => @match_status } + end end end @@ -52,7 +52,7 @@ class PublicationsController < ApplicationController @issues = Issue.all(:joins => joins, :conditions => conditions) respond_to do |fmt| - fmt.json { render :json => @issues, :callback => params[:callback] } + fmt.json { render :json => @issues, :callback => params[:callback] } end end diff --git a/app/views/issues/_issue_form_pub.html.erb b/app/views/issues/_issue_form_pub.html.erb index f0f7a1a..ebb903c 100644 --- a/app/views/issues/_issue_form_pub.html.erb +++ b/app/views/issues/_issue_form_pub.html.erb @@ -1,5 +1,5 @@
-

+

' />

diff --git a/app/views/issues/_issue_view_pub.erb b/app/views/issues/_issue_view_pub.erb index 26ce997..a22c78b 100644 --- a/app/views/issues/_issue_view_pub.erb +++ b/app/views/issues/_issue_view_pub.erb @@ -1,5 +1,5 @@ - Publication(s) + <%= l(:field_publications) %>: <% @issue.publication_names.each do |pub| %> <%= pub %>
diff --git a/init.rb b/init.rb index 0aa6f07..4298f60 100644 --- a/init.rb +++ b/init.rb @@ -11,6 +11,10 @@ Dispatcher.to_prepare :redmine_publications do unless Issue.included_modules.include? RedminePublications::IssuePatch Issue.send(:include, RedminePublications::IssuePatch) end + + unless Change.included_modules.include? RedminePublications::ChangePatch + Change.send(:include, RedminePublications::ChangePatch) + end end require_dependency 'issue_publication_hook' diff --git a/lib/redmine_publications/change_patch.rb b/lib/redmine_publications/change_patch.rb new file mode 100644 index 0000000..41ea959 --- /dev/null +++ b/lib/redmine_publications/change_patch.rb @@ -0,0 +1,38 @@ +module RedminePublications + # Patches Redmine's Issues dynamically. Adds a +after_save+ filter. + + module ChangePatch + def self.included(base) # :nodoc: + base.extend(ClassMethods) + + base.send(:include, InstanceMethods) + + # Same as typing in the class + base.class_eval do + unloadable # Send unloadable so it will not be unloaded in development + after_save :update_publication + end + + end + + module ClassMethods + end + + module InstanceMethods + + def update_publication + if self.action == 'A' + regexp = Regexp.new(Setting.plugin_redmine_publications[:pattern]) + match = self.path.match(regexp) + Rails.logger.info('[INFO] Adding publication: "' << match[1]) + Publication.find_or_create_by_name(:name => match[1], + :source_file => self.path, :repository_id => self.changeset.repository.id ) + end + end + + end + + end + + +end diff --git a/lib/redmine_publications/issue_patch.rb b/lib/redmine_publications/issue_patch.rb index c108799..bd1f73e 100644 --- a/lib/redmine_publications/issue_patch.rb +++ b/lib/redmine_publications/issue_patch.rb @@ -11,8 +11,8 @@ module RedminePublications base.class_eval do unloadable # Send unloadable so it will not be unloaded in development - validate :check_relations - after_save :update_relations + validate :check_relations + after_save :update_relations end end @@ -23,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 - old = self.publications - current_names = self.publication_names - Rails.logger.info('[INFO] Updating relations: old= ' << old.inspect << ' current=' << current_names.inspect) + 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 diff --git a/locales/en.yml b/locales/en.yml new file mode 100644 index 0000000..3932ef2 --- /dev/null +++ b/locales/en.yml @@ -0,0 +1,3 @@ +## YAML Template. +en: + field_publications: Publications diff --git a/locales/pl.yml b/locales/pl.yml new file mode 100644 index 0000000..2bf0783 --- /dev/null +++ b/locales/pl.yml @@ -0,0 +1,3 @@ +## YAML Template. +pl: + field_publications: Publikacje -- 2.20.1