From 226652f5dbca1e6710ff7108c56c2c198ddc616e Mon Sep 17 00:00:00 2001 From: Roman Blanco Date: Mon, 20 Mar 2017 13:23:23 +0100 Subject: [PATCH] Review response: Mixin moved to presenter --- app/controllers/mixins/custom_buttons.rb | 29 ----------------- app/presenters/custom_buttons_mixin.rb | 31 +++++++++++++++++++ app/presenters/tree_builder_buttons.rb | 2 +- app/presenters/tree_builder_catalogs_class.rb | 2 +- 4 files changed, 33 insertions(+), 31 deletions(-) create mode 100644 app/presenters/custom_buttons_mixin.rb diff --git a/app/controllers/mixins/custom_buttons.rb b/app/controllers/mixins/custom_buttons.rb index 0e1ffa6c8c6..14f56816beb 100644 --- a/app/controllers/mixins/custom_buttons.rb +++ b/app/controllers/mixins/custom_buttons.rb @@ -1,35 +1,6 @@ module Mixins::CustomButtons extend ActiveSupport::Concern - def get_tree_aset_kids_for_nil_id(object, count_only) - count_only ? get_custom_buttons(object).count : get_custom_buttons(object).sort_by { |a| a.name.downcase } - end - - def buttons_ordered?(object) - !!(object[:set_data] && object[:set_data][:button_order]) - end - - def x_get_tree_aset_kids(object, count_only) - if object.id.nil? - get_tree_aset_kids_for_nil_id(object, count_only) - elsif count_only - object.members.count - else - button_order = buttons_ordered?(object) ? object[:set_data][:button_order] : nil - Array(button_order).each_with_object([]) do |bidx, arr| - object.members.each { |b| arr.push(b) if bidx == b.id && !arr.include?(b) } - end - end - end - - def get_custom_buttons(object) - # FIXME: don't we have a method for the splits? - # FIXME: cannot we ask for the null parent using Arel? - CustomButton.buttons_for(object.name.split('|').last.split('-').last).select do |uri| - uri.parent.nil? - end - end - def custom_toolbar? return nil unless self.class.instance_eval { @custom_buttons } diff --git a/app/presenters/custom_buttons_mixin.rb b/app/presenters/custom_buttons_mixin.rb new file mode 100644 index 00000000000..3ded4ba0761 --- /dev/null +++ b/app/presenters/custom_buttons_mixin.rb @@ -0,0 +1,31 @@ +module CustomButtonsMixin + extend ActiveSupport::Concern + def get_tree_aset_kids_for_nil_id(object, count_only) + count_only ? get_custom_buttons(object).count : get_custom_buttons(object).sort_by { |a| a.name.downcase } + end + + def buttons_ordered?(object) + !!(object[:set_data] && object[:set_data][:button_order]) + end + + def get_custom_buttons(object) + # FIXME: don't we have a method for the splits? + # FIXME: cannot we ask for the null parent using Arel? + CustomButton.buttons_for(object.name.split('|').last.split('-').last).select do |uri| + uri.parent.nil? + end + end + + def x_get_tree_aset_kids(object, count_only) + if object.id.nil? + get_tree_aset_kids_for_nil_id(object, count_only) + elsif count_only + object.members.count + else + button_order = buttons_ordered?(object) ? object[:set_data][:button_order] : nil + Array(button_order).each_with_object([]) do |bidx, arr| + object.members.each { |b| arr.push(b) if bidx == b.id && !arr.include?(b) } + end + end + end +end diff --git a/app/presenters/tree_builder_buttons.rb b/app/presenters/tree_builder_buttons.rb index 67ddd64cecb..f27b73b307e 100644 --- a/app/presenters/tree_builder_buttons.rb +++ b/app/presenters/tree_builder_buttons.rb @@ -1,5 +1,5 @@ class TreeBuilderButtons < TreeBuilderAeCustomization - include Mixins::CustomButtons + include CustomButtonsMixin has_kids_for CustomButtonSet, [:x_get_tree_aset_kids] private diff --git a/app/presenters/tree_builder_catalogs_class.rb b/app/presenters/tree_builder_catalogs_class.rb index 42db5bb878b..40161699fa0 100644 --- a/app/presenters/tree_builder_catalogs_class.rb +++ b/app/presenters/tree_builder_catalogs_class.rb @@ -1,5 +1,5 @@ class TreeBuilderCatalogsClass < TreeBuilder - include Mixins::CustomButtons + include CustomButtonsMixin has_kids_for CustomButtonSet, [:x_get_tree_aset_kids] private