annotate plugins/redmine_checkout/lib/checkout/settings_controller_patch.rb @ 1519:afce8026aaeb redmine-2.4-integration

Merge from branch "live"
author Chris Cannam
date Tue, 09 Sep 2014 09:34:53 +0100
parents b4b72f1eb644
children
rev   line source
Chris@16 1 require_dependency 'settings_controller'
Chris@16 2
Chris@16 3 module Checkout
Chris@16 4 module SettingsControllerPatch
Chris@16 5 def self.included(base) # :nodoc:
Chris@16 6 base.send(:include, InstanceMethods)
Chris@16 7
Chris@16 8 base.class_eval do
Chris@16 9 unloadable
Chris@16 10
Chris@16 11 alias_method_chain :edit, :checkout
Chris@16 12 end
Chris@16 13 end
Chris@16 14
Chris@16 15 module InstanceMethods
Chris@16 16 def edit_with_checkout
Chris@16 17 if request.post? && params['tab'] == 'checkout'
Chris@16 18 if params[:settings] && params[:settings].is_a?(Hash)
Chris@16 19 settings = HashWithIndifferentAccess.new
Chris@16 20 (params[:settings] || {}).each do |name, value|
Chris@16 21 if name = name.to_s.slice(/checkout_(.+)/, 1)
Chris@16 22 case value
Chris@16 23 when Array
Chris@16 24 # remove blank values in array settings
Chris@16 25 value.delete_if {|v| v.blank? }
Chris@16 26 when Hash
Chris@16 27 # change protocols hash to array.
Chris@16 28 value = value.sort{|(ak,av),(bk,bv)|ak<=>bk}.collect{|id,protocol| protocol} if name.start_with? "protocols_"
Chris@16 29 end
Chris@16 30 settings[name.to_sym] = value
Chris@16 31 end
Chris@16 32 end
Chris@16 33
Chris@16 34 Setting.plugin_redmine_checkout = settings
Chris@16 35 params[:settings] = {}
Chris@16 36 end
Chris@16 37 end
Chris@16 38 edit_without_checkout
Chris@16 39 end
Chris@16 40 end
Chris@16 41 end
Chris@16 42 end
Chris@16 43
Chris@16 44 SettingsController.send(:include, Checkout::SettingsControllerPatch)