diff --git a/init.rb b/init.rb index f92a083..6f08650 100644 --- a/init.rb +++ b/init.rb @@ -1,5 +1,8 @@ require 'redmine' +# Patches to the Redmine core. Will not work in development mode +require_dependency 'query_patch' + RAILS_DEFAULT_LOGGER.info 'Starting Budget plugin for RedMine' Redmine::Plugin.register :budget_plugin do @@ -22,3 +25,5 @@ Redmine::Plugin.register :budget_plugin do menu :project_menu, :budget, :controller => "deliverables", :action => 'index' end + + diff --git a/lang/en.yml b/lang/en.yml index 68b3207..26af03f 100644 --- a/lang/en.yml +++ b/lang/en.yml @@ -7,3 +7,4 @@ field_budget: Total Budget field_fixed_cost: Fixed Bid field_project_manager_signoff: Project Manager Signoff field_client_signoff: Client Signoff +field_deliverable: Deliverable diff --git a/lib/query_patch.rb b/lib/query_patch.rb new file mode 100644 index 0000000..f2effa8 --- /dev/null +++ b/lib/query_patch.rb @@ -0,0 +1,53 @@ +require_dependency 'query' + +module QueryPatch + def self.included(base) + 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 + base.add_available_column(QueryColumn.new(:deliverable, :sortable => "#{Deliverable.table_name}.name")) + + alias_method :redmine_available_filters, :available_filters + alias_method :available_filters, :budget_available_filters + end + + end + + module ClassMethods + def hello + puts 'hello' + end + + def available_columns=(v) + self.available_columns = (v) + end + + def add_available_column(column) + self.available_columns << (column) + end + end + + module InstanceMethods + def budget_available_filters + @available_filters = redmine_available_filters + + if project + budget_filters = { "deliverable_id" => { :type => :list, :order => 14, + :values => Deliverable.find(:all, :conditions => ["project_id IN (?)", project]).collect { |d| [d.subject, d.id.to_s]} + }} + else + budget_filters = { } + end + return @available_filters.merge(budget_filters) + end + end +end + +# Add module to Query +Query.send(:include, QueryPatch) + +