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

Class Method Details

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

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

.registeredObject

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