Module: Gluttonberg::Components
- Defined in:
- lib/gluttonberg/components.rb
Overview
This module allows custom controllers to be registered wtih Gluttonberg’s administration. Typically, these controllers will be registered in the application’s before_app_loads block.
Defined Under Namespace
Classes: Component
Constant Summary collapse
- @@components =
{}
- @@routes =
{}
nil
[]
- @@registered =
nil
Class Method Summary collapse
-
.main_nav_entries ⇒ Object
the label implicitly registers them as nav entries.
-
.nav_entries ⇒ Object
Returns an array of components that have been given a nav_label — the label implicitly registers them as nav entries.
-
.register(name, opts = {}, &routes) ⇒ Object
Registers a controller — or set of controllers — based on the URLs specified in the routes.
- .register_for_main_nav(name, url, only_for_super_admin = false) ⇒ Object
-
.registered ⇒ Object
Returns a hash of the registered components, keyed to their label.
Class Method Details
.main_nav_entries ⇒ Object
the label implicitly registers them as nav entries. Components without a label won’t turn up.
56 57 58 |
# File 'lib/gluttonberg/components.rb', line 56 def self.main_nav_entries @@main_nav_entries end |
.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.
34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/gluttonberg/components.rb', line 34 def self.nav_entries @@nav_entries ||= @@components.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]] end end |
.register(name, opts = {}, &routes) ⇒ Object
Registers a controller — or set of controllers — based on the URLs specified in the routes.
Components.register(:forum, :label => "Forum", :admin_url => url) do |scope|
scope.resources(:posts)
scope.resources(:threads)
end
20 21 22 23 |
# File 'lib/gluttonberg/components.rb', line 20 def self.register(name, opts = {}, &routes) @@components[name] = opts @@routes[name] = routes if block_given? end |
.register_for_main_nav(name, url, only_for_super_admin = false) ⇒ Object
49 50 51 |
# File 'lib/gluttonberg/components.rb', line 49 def self.register_for_main_nav(name , url , only_for_super_admin = false ) @@main_nav_entries << [name , url , only_for_super_admin] end |
.registered ⇒ Object
Returns a hash of the registered components, keyed to their label.
27 28 29 |
# File 'lib/gluttonberg/components.rb', line 27 def self.registered @@registered ||= @@components.collect {|k, v| Component.new(k.to_s, v[:label] , v[:only_for_super_admin])} end |