Class: RubyCms::Admin::BaseComponent

Inherits:
Object
  • Object
show all
Includes:
Phlex::Rails::Helpers::ButtonTo, Phlex::Rails::Helpers::FormAuthenticityToken, Phlex::Rails::Helpers::FormWith, Phlex::Rails::Helpers::LinkTo, Phlex::Rails::Helpers::Sanitize, Phlex::Rails::Helpers::TurboFrameTag
Defined in:
app/components/ruby_cms/admin/base_component.rb

Overview

Base component class for admin components Inherits from RubyUI::Base if available, otherwise Phlex::HTML

Instance Method Summary collapse

Instance Method Details

#build_classes(*classes) ⇒ Object

Helper method to build CSS classes from hash or array



19
20
21
# File 'app/components/ruby_cms/admin/base_component.rb', line 19

def build_classes(*classes)
  classes.flatten.compact.join(" ")
end

#conditional_attributes(condition, attributes) ⇒ Object

Helper method to conditionally add attributes



29
30
31
# File 'app/components/ruby_cms/admin/base_component.rb', line 29

def conditional_attributes(condition, attributes)
  condition ? attributes : {}
end

#controllerObject

Access controller if available



69
70
71
72
73
74
75
# File 'app/components/ruby_cms/admin/base_component.rb', line 69

def controller
  @controller ||= if respond_to?(:helpers) && helpers.respond_to?(:controller)
                    helpers.controller
                  elsif defined?(ActionController::Base)
                    Thread.current[:phlex_controller]
                  end
end

#form_authenticity_tokenObject

Get form authenticity token



48
49
50
51
52
53
54
# File 'app/components/ruby_cms/admin/base_component.rb', line 48

def form_authenticity_token
  return helpers.form_authenticity_token if token_from_helpers?
  return super if respond_to?(:form_authenticity_token, true)
  return token_from_controller if token_from_controller?

  ""
end

#helpersObject

Access Rails helpers (works in Phlex and RubyUI contexts)



34
35
36
37
38
39
40
41
42
43
44
45
# File 'app/components/ruby_cms/admin/base_component.rb', line 34

def helpers
  @helpers ||=
    if respond_to?(:view_context)
      view_context
    elsif defined?(Phlex::Rails::ViewContext)
      Phlex::Rails::ViewContext.current
    elsif defined?(Phlex::HTML) && respond_to?(:call)
      Thread.current[:phlex_view_context] || raise("View context not available")
    else
      raise("View context not available. Ensure component is rendered from a Rails view.")
    end
end

#merge_data_attributes(base_data, additional_data) ⇒ Object

Helper method to merge data attributes



24
25
26
# File 'app/components/ruby_cms/admin/base_component.rb', line 24

def merge_data_attributes(base_data, additional_data)
  base_data.merge(additional_data || {})
end

#token_from_controllerObject



64
65
66
# File 'app/components/ruby_cms/admin/base_component.rb', line 64

def token_from_controller
  controller&.form_authenticity_token || ""
end

#token_from_controller?Boolean

Returns:



60
61
62
# File 'app/components/ruby_cms/admin/base_component.rb', line 60

def token_from_controller?
  defined?(ActionController::Base) && respond_to?(:controller)
end

#token_from_helpers?Boolean

Returns:



56
57
58
# File 'app/components/ruby_cms/admin/base_component.rb', line 56

def token_from_helpers?
  respond_to?(:helpers) && helpers.respond_to?(:form_authenticity_token)
end