Class: Enjoy::RailsAdminConfiguration

Inherits:
Object
  • Object
show all
Defined in:
lib/enjoy/rails_admin_ext/config.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeRailsAdminConfiguration

Returns a new instance of RailsAdminConfiguration.



37
38
39
40
41
42
# File 'lib/enjoy/rails_admin_ext/config.rb', line 37

def initialize
  @actions_list ||= []
  @actions_visibility ||= {}

  action_unvisible_for(:custom_show_in_app, Proc.new { false })
end

Instance Attribute Details

#actions_listObject (readonly)

Returns the value of attribute actions_list.



34
35
36
# File 'lib/enjoy/rails_admin_ext/config.rb', line 34

def actions_list
  @actions_list
end

#actions_visibilityObject (readonly)

Returns the value of attribute actions_visibility.



35
36
37
# File 'lib/enjoy/rails_admin_ext/config.rb', line 35

def actions_visibility
  @actions_visibility
end

Instance Method Details

#action_unvisible_for(action_name, model_name) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/enjoy/rails_admin_ext/config.rb', line 68

def action_unvisible_for(action_name, model_name)
  action_name = action_name.to_sym
  model_name = model_name.to_s
  add_action(action_name) unless @actions_list.include?(action_name)

  if model_name.is_a?(Proc)
    # @actions_visibility[action_name] = model_name
  else
    @actions_visibility[action_name] = [] if @actions_visibility[action_name].is_a?(Proc)
    @actions_visibility[action_name] ||= []
    @actions_visibility[action_name].delete model_name.to_s
  end
end

#action_visible_for(action_name, model_name) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/enjoy/rails_admin_ext/config.rb', line 54

def action_visible_for(action_name, model_name)
  action_name = action_name.to_sym
  model_name = model_name.to_s
  add_action(action_name) unless @actions_list.include?(action_name)

  if model_name.is_a?(Proc)
    @actions_visibility[action_name] = model_name
  else
    @actions_visibility[action_name] = [] if @actions_visibility[action_name].is_a?(Proc)
    @actions_visibility[action_name] ||= []
    @actions_visibility[action_name] << model_name.to_s
  end
end

#actions_config(rails_admin_actions) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/enjoy/rails_admin_ext/config.rb', line 82

def actions_config(rails_admin_actions)
  @actions_list.each do |action|
    rails_admin_actions.send(action) do
      visible do
        if Enjoy.rails_admin_config.actions_visibility[action].is_a?(Proc)
          Enjoy.rails_admin_config.actions_visibility[action]
        else
          Enjoy.rails_admin_config.actions_visibility[action].include? bindings[:abstract_model].model_name
        end
      end
    end
  end
end

#add_action(action_name) ⇒ Object



44
45
46
47
# File 'lib/enjoy/rails_admin_ext/config.rb', line 44

def add_action(action_name)
  @actions_list << action_name
  @actions_list.uniq
end

#cancancan_admin_rules(ability_object) ⇒ Object



96
97
98
99
100
101
102
# File 'lib/enjoy/rails_admin_ext/config.rb', line 96

def cancancan_admin_rules(ability_object)
  Enjoy.config.ability_admin_config.each do |config|
    _model = config[:model]
    _model = _model.constantize if _model.is_a?(String)
    ability_object.send(config[:method], config[:actions], _model)
  end
end

#cancancan_manager_rules(ability_object) ⇒ Object



103
104
105
106
107
108
109
# File 'lib/enjoy/rails_admin_ext/config.rb', line 103

def cancancan_manager_rules(ability_object)
  Enjoy.config.ability_manager_config.each do |config|
    _model = config[:model]
    _model = _model.constantize if _model.is_a?(String)
    ability_object.send(config[:method], config[:actions], _model)
  end
end

#remove_action(action_name) ⇒ Object



49
50
51
52
# File 'lib/enjoy/rails_admin_ext/config.rb', line 49

def remove_action(action_name)
  @remove_action.delete remove_action
  @actions_list.uniq
end