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
- .add_to_can_model_list(model_name) ⇒ Object
- .can_custom_model_list ⇒ Object
- .clear_main_nav ⇒ Object
- .init_main_nav ⇒ Object
-
.main_nav_entries ⇒ Object
Returns an array of components that have been given a nav_label — the label implicitly registers them as nav entries.
-
.nav_entries(section_name = "") ⇒ Object
Returns an array of components that have been given a nav_label — the label implicitly registers them as nav entries.
-
.register(name, opts = {}) ⇒ Object
Registers a controller.
- .register_for_main_nav(name, url, opts = {}) ⇒ Object
-
.registered ⇒ Object
Returns a hash of the registered components, keyed to their label.
- .section_name_for_controller(controllername) ⇒ Object
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_list ⇒ Object
44 45 46 |
# File 'lib/gluttonberg/components.rb', line 44 def self.can_custom_model_list @@can_custom_model_list end |
.clear_main_nav ⇒ Object
13 14 15 16 |
# File 'lib/gluttonberg/components.rb', line 13 def self.clear_main_nav @@main_nav_entries = [] @@cleared = true end |
.init_main_nav ⇒ Object
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 |
.main_nav_entries ⇒ Object
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 |
.nav_entries(section_name = "") ⇒ Object
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 |
.registered ⇒ Object
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 |