class RailsAdminConfiguratorBase
More at github.com/sferik/rails_admin/wiki/Base-configuration
Attributes
models_order_first[RW]
properties
models_order_last[RW]
Public Class Methods
new()
click to toggle source
methods
# File lib/mrpin/config/initializers/05_rails_admin_configurator.rb, line 16 def initialize Ability.rails_admin_config = self @models_names = [] @models_names_sorted = [] @models_order_first = [] @models_order_middle = [] @models_order_last = [] @models_groups = [] @config = nil end
Public Instance Methods
add_models_names(items)
click to toggle source
# File lib/mrpin/config/initializers/05_rails_admin_configurator.rb, line 32 def add_models_names(items) @models_names += items nil end
configure()
click to toggle source
# File lib/mrpin/config/initializers/05_rails_admin_configurator.rb, line 39 def configure RailsAdmin.config do |config| @config = config @config.included_models += @models_names init_model_groups configure_auth configure_actions configure_models configure_view end nil end
get_models_can_manage_for(role)
click to toggle source
# File lib/mrpin/config/initializers/05_rails_admin_configurator.rb, line 214 def get_models_can_manage_for(role) result = [] case role when EAdminUserRole::EAUR_ADMIN result = @models_names.dup result.map! { |name| get_class_by_name(name) } when EAdminUserRole::EAUR_TRANSLATOR result = [LocalizationBase] else #do nothing end result end
try_configure_admin_for(context, model_class, fields, method_name)
click to toggle source
# File lib/mrpin/config/initializers/05_rails_admin_configurator.rb, line 200 def try_configure_admin_for(context, model_class, fields, method_name) return unless model_class.respond_to?(method_name) fields.each do |model_field| field_name = model_field.to_sym model_class.send(method_name, context, field_name) end nil end
Protected Instance Methods
configure_actions()
click to toggle source
# File lib/mrpin/config/initializers/05_rails_admin_configurator.rb, line 94 def configure_actions @config.actions do dashboard do statistics false end index new # export # history_show bulk_delete show edit delete show_in_app end nil end
configure_auth()
click to toggle source
# File lib/mrpin/config/initializers/05_rails_admin_configurator.rb, line 79 def configure_auth # == CanCanCan == @config.authorize_with :cancan # == Devise == @config.authenticate_with do warden.authenticate! scope: :admin_user end @config.current_user_method(&:current_admin_user) nil end
configure_model(model_class, fields_for_list, fields_for_edit, fields_for_show)
click to toggle source
# File lib/mrpin/config/initializers/05_rails_admin_configurator.rb, line 146 def configure_model(model_class, fields_for_list, fields_for_edit, fields_for_show) models_names_sorted = @models_names_sorted model_group = get_group_name(model_class) configurator = self @config.model(model_class.to_s) do if model_class.instance_methods.include?(:admin_object_title) object_label_method { :admin_object_title } end navigation_label(model_group) weight models_names_sorted.index(model_group) || 0 #configure list list do model_class.filters_for_admin_list(self) if model_class.respond_to?(:filters_for_admin_list) model_class.sort_by_for_admin_list(self) if model_class.respond_to?(:sort_by_for_admin_list) configurator.try_configure_admin_for(self, model_class, fields_for_list, :configure_admin_list) #init scopes scopes_list = model_class.scopes.keys.dup scopes_list.delete(:page) if scopes_list.size > 0 #add scopes 'all' at first tab scopes_list = [nil] + scopes_list scopes(scopes_list) end end edit { configurator.try_configure_admin_for(self, model_class, fields_for_edit, :configure_admin_edit) } show { configurator.try_configure_admin_for(self, model_class, fields_for_show, :configure_admin_show) } end end
configure_models()
click to toggle source
# File lib/mrpin/config/initializers/05_rails_admin_configurator.rb, line 115 def configure_models # setup models @config.included_models.each do |model| model_class = get_class_by_name(model) model_class.init_scopes if model_class.respond_to?(:init_scopes) model_fields = model_class.attribute_names model_relations = model_class.relations.keys fields_for_list = model_fields + model_relations fields_for_edit = model_fields fields_for_show = model_fields + model_relations configure_model(model_class, fields_for_list, fields_for_edit, fields_for_show) end nil end
configure_view()
click to toggle source
# File lib/mrpin/config/initializers/05_rails_admin_configurator.rb, line 136 def configure_view @config.show_gravatar = false @config.total_columns_width = 1000 @config.default_items_per_page = 100 @config.compact_show_view = false nil end
Private Instance Methods
get_group_name(model_class)
click to toggle source
# File lib/mrpin/config/initializers/05_rails_admin_configurator.rb, line 187 def get_group_name(model_class) result = '' if model_class.methods.include?(:admin_group) result = model_class.admin_group else result = model_class.to_s.underscore.split('_').first end result end
init_model_groups()
click to toggle source
# File lib/mrpin/config/initializers/05_rails_admin_configurator.rb, line 57 def init_model_groups # calc models order @config.included_models.each do |model_name| model_class = get_class_by_name(model_name) group_name = get_group_name(model_class) @models_groups << group_name end @models_groups.uniq! @models_order_middle = @models_groups - @models_order_first - @models_order_last @models_order_middle.sort! @models_names_sorted = @models_order_first + @models_order_middle + @models_order_last nil end