Class: RailsBase::Admin::ActionHelper

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_base/admin/action_helper.rb

Defined Under Namespace

Classes: InvalidActionError, InvalidControllerError, InvalidTitleError

Constant Summary collapse

ACTIONS_KEY =
"___all_actions_#{(rand*10**10).to_i}___"
CONTROLLER_ACTIONS_KEY =
"___all_controller_actions__#{(rand*10**10).to_i}___"
DEFAULT_ALLOWED_KLASSES =
[ApplicationController, RailsBaseApplicationController, ::SwitchUserController]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(controller: nil, action: nil, title: nil, default: false, proc: nil) ⇒ ActionHelper

controller is the controller class inherited by RailsBaseApplicationController action is the method name on the controller title should be the AdminAction.action if proc available,

> |session, admin_user, user, title, struct|

> RailsBase::AdminStruct has methods original_attribute and new_attribute

> Expected return

> { admin_user, user, action, original_attribute, new_attribute, change_to }



73
74
75
76
77
78
79
80
81
# File 'lib/rails_base/admin/action_helper.rb', line 73

def initialize(controller: nil, action: nil, title: nil, default: false, proc: nil)
  @controller = controller
  @action = action
  @title = title
  @proc = proc
  valid_controller!
  valid_action!
  valid_title!
end

Instance Attribute Details

#actionObject

Returns the value of attribute action.



64
65
66
# File 'lib/rails_base/admin/action_helper.rb', line 64

def action
  @action
end

#controllerObject

Returns the value of attribute controller.



64
65
66
# File 'lib/rails_base/admin/action_helper.rb', line 64

def controller
  @controller
end

#defaultObject

Returns the value of attribute default.



64
65
66
# File 'lib/rails_base/admin/action_helper.rb', line 64

def default
  @default
end

#procObject

Returns the value of attribute proc.



64
65
66
# File 'lib/rails_base/admin/action_helper.rb', line 64

def proc
  @proc
end

#titleObject

Returns the value of attribute title.



64
65
66
# File 'lib/rails_base/admin/action_helper.rb', line 64

def title
  @title
end

Class Method Details

.actionsObject



49
50
51
# File 'lib/rails_base/admin/action_helper.rb', line 49

def actions
  @actions
end

.add(instance) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/rails_base/admin/action_helper.rb', line 22

def add(instance)
  @actions ||= {}
  @all_actions ||= []
  @default_actions ||= []

  @all_actions << [instance]
  @default_actions << [instance]

  controller = instance.controller
  action = instance.action
  if controller.nil?
    @actions[ACTIONS_KEY] ||= []
    @actions[ACTIONS_KEY] << instance
    return
  end

  @actions[controller.to_s] ||= {}

  if action
     @actions[controller.to_s][action.to_s] ||= []
     @actions[controller.to_s][action.to_s] <<  instance
  else
    @actions[controller.to_s][CONTROLLER_ACTIONS_KEY] ||= []
    @actions[controller.to_s][CONTROLLER_ACTIONS_KEY] << instance
  end
end

.add_inherited_klasses(klass) ⇒ Object



13
14
15
16
# File 'lib/rails_base/admin/action_helper.rb', line 13

def add_inherited_klasses(klass)
  @allowed_klasses ||= []
  @allowed_klasses << klass
end

.allowed_inherited_klassesObject



9
10
11
# File 'lib/rails_base/admin/action_helper.rb', line 9

def allowed_inherited_klasses
  DEFAULT_ALLOWED_KLASSES + (@allowed_klasses || [])
end

.clear_inherited_klasses!Object



18
19
20
# File 'lib/rails_base/admin/action_helper.rb', line 18

def clear_inherited_klasses!
  @allowed_klasses = nil
end

.reset!Object



53
54
55
56
57
# File 'lib/rails_base/admin/action_helper.rb', line 53

def reset!
  @actions = nil
  @all_actions = nil
  @default_actions.each { |instance| add(instance) }
end

Instance Method Details

#add!Object



83
84
85
# File 'lib/rails_base/admin/action_helper.rb', line 83

def add!
  self.class.add(self)
end

#call(req:, params:, admin_user:, user:, struct: nil) ⇒ Object



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/rails_base/admin/action_helper.rb', line 87

def call(req:, params:, admin_user:, user:, struct: nil)
  # byebug
  if proc
    action_params = proc.call(req, params, admin_user, user, title, struct)
    return if action_params.nil?

    AdminAction.action(**action_params)
  else
    default_call(request: request, admin_user: admin_user, user: user, struct: struct)
  end

rescue StandardError => e
  Rails.logger.error(e.message)
  Rails.logger.error(e.backtrace)
  Rails.logger.error("Trapping Error from AdminActionHelper.")
end