Module: Gluttonberg::Components

Defined in:
lib/gluttonberg/components.rb

Overview

This module allows a developer to configure backend main and sub menues

Defined Under Namespace

Classes: Component

Constant Summary collapse

@@components =
{}
@@routes =
{}
nil
[]
@@registered =
nil
@@cleared =
false
@@can_custom_model_list =
[]

Class Method Summary collapse

Class Method Details

.add_to_can_model_list(model_name) ⇒ Object



81
82
83
# File 'lib/gluttonberg/components.rb', line 81

def self.add_to_can_model_list(model_name)
  @@can_custom_model_list << model_name if !model_name.blank? && !["Gluttonberg::Page", "Gluttonberg::Asset", "Gluttonberg::Member", "Gluttonberg::Setting", "Gluttonberg::Gallery", ].include?(model_name)
end

.can_custom_model_listObject



44
45
46
# File 'lib/gluttonberg/components.rb', line 44

def self.can_custom_model_list
  @@can_custom_model_list
end

.clear_main_navObject



13
14
15
16
# File 'lib/gluttonberg/components.rb', line 13

def self.clear_main_nav
  @@main_nav_entries = []
  @@cleared = true
end

.init_main_navObject



18
19
20
21
22
23
24
25
26
# File 'lib/gluttonberg/components.rb', line 18

def self.init_main_nav
  unless @@cleared
    Gluttonberg::Components.register_for_main_nav("Dashboard", "/admin", :can_model_name => "Gluttonberg::Page")
    Gluttonberg::Components.register_for_main_nav("Content", "/admin/pages", :can_model_name => "Gluttonberg::Page")
    Gluttonberg::Components.register_for_main_nav("Library", "/admin/assets/all/page/1", :can_model_name => "Gluttonberg::Asset")
    Gluttonberg::Components.register_for_main_nav("Members", "/admin/membership/members", :can_model_name => "Gluttonberg::Member")
    Gluttonberg::Components.register_for_main_nav("Settings", "/admin/configurations", :can_model_name => "Gluttonberg::Setting")
  end
end

Returns an array of components that have been given a nav_label — the label implicitly registers them as nav entries. Components without a label won’t turn up.



40
41
42
# File 'lib/gluttonberg/components.rb', line 40

def self.main_nav_entries
  @@main_nav_entries
end

Returns an array of components that have been given a nav_label — the label implicitly registers them as nav entries. Components without a label won’t turn up.



62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/gluttonberg/components.rb', line 62

def self.nav_entries(section_name="")
  temp = @@components.find_all{|k,v| (section_name.blank? && (!v.has_key?(:section_name) || v[:section_name].blank?)) || (!section_name.blank? && v[:section_name] == section_name) }
  nav_entries = temp.collect do |k, v|
    url = if v[:admin_url]
      if v[:admin_url].is_a? Symbol
        v[:admin_url]
      else
        v[:admin_url]
      end
    end
    [v[:label], k, url , v[:only_for_super_admin], v[:can_model_name]]
  end
end

.register(name, opts = {}) ⇒ Object

Registers a controller



49
50
51
52
# File 'lib/gluttonberg/components.rb', line 49

def self.register(name, opts = {})
  self.add_to_can_model_list(opts[:can_model_name])
  @@components[name] = opts
end

.register_for_main_nav(name, url, opts = {}) ⇒ Object



28
29
30
31
32
33
34
35
# File 'lib/gluttonberg/components.rb', line 28

def self.register_for_main_nav(name , url, opts = {})
  opts[:enabled] = true if opts[:enabled].blank?
  opts[:only_for_super_admin] = false if opts[:only_for_super_admin].blank?
  self.add_to_can_model_list(opts[:can_model_name])
  if @@main_nav_entries.index{|entry| entry[0] == name}.blank?
    @@main_nav_entries << [name , url, opts]
  end
end

.registeredObject

Returns a hash of the registered components, keyed to their label.



55
56
57
# File 'lib/gluttonberg/components.rb', line 55

def self.registered
  @@registered ||= @@components.collect {|k, v| Component.new(k.to_s, v[:label] , v[:only_for_super_admin])}
end

.section_name_for_controller(controllername) ⇒ Object



76
77
78
79
# File 'lib/gluttonberg/components.rb', line 76

def self.section_name_for_controller(controllername)
  component = @@components[controllername.to_sym]
  component.blank? ? nil : component[:section_name]
end