X-Git-Url: https://git.mdrn.pl/redakcja_redmine.git/blobdiff_plain/2119dcd48d7637772372f542358259b0cc384e35..e41ebde0b4ec4203e00e3ba906a3eadcd5edd10e:/lib/redmine_publications/change_patch.rb 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