Class: WonderNavigation::Menu
- Inherits:
-
Object
- Object
- WonderNavigation::Menu
- Defined in:
- lib/wonder_navigation/menu.rb
Instance Attribute Summary collapse
-
#items ⇒ Object
readonly
Returns the value of attribute items.
-
#permission_checker ⇒ Object
Returns the value of attribute permission_checker.
Class Method Summary collapse
- .get_instance(menu_id, menu_manager) ⇒ Object
- .register(menu_id, menu_manager = MenuManager, &block) ⇒ Object
- .register_permission_check(menu_id, menu_manager = MenuManager, &block) ⇒ Object
Instance Method Summary collapse
- #breadcrumb_for(id, object = nil) ⇒ Object
-
#initialize ⇒ Menu
constructor
A new instance of Menu.
- #item_exists?(id) ⇒ Boolean
- #menu_tree(options = {}) ⇒ Object
- #menu_tree_flat(options = {}) ⇒ Object
Constructor Details
#initialize ⇒ Menu
Returns a new instance of Menu.
7 8 9 |
# File 'lib/wonder_navigation/menu.rb', line 7 def initialize @items = {} end |
Instance Attribute Details
#items ⇒ Object (readonly)
Returns the value of attribute items.
4 5 6 |
# File 'lib/wonder_navigation/menu.rb', line 4 def items @items end |
#permission_checker ⇒ Object
Returns the value of attribute permission_checker.
5 6 7 |
# File 'lib/wonder_navigation/menu.rb', line 5 def end |
Class Method Details
.get_instance(menu_id, menu_manager) ⇒ Object
23 24 25 26 27 28 29 30 31 32 |
# File 'lib/wonder_navigation/menu.rb', line 23 def self.get_instance(, ) instance = .fetch() unless instance instance = Menu.new instance.items[:root] = MenuItem.new(instance, 0, :root, validate: false) .set(, instance) end instance end |
.register(menu_id, menu_manager = MenuManager, &block) ⇒ Object
17 18 19 20 21 |
# File 'lib/wonder_navigation/menu.rb', line 17 def self.register(, = MenuManager, &block) get_instance(, ).tap do |instance| instance.items[:root].instance_eval(&block) end end |
.register_permission_check(menu_id, menu_manager = MenuManager, &block) ⇒ Object
11 12 13 14 15 |
# File 'lib/wonder_navigation/menu.rb', line 11 def self.(, = MenuManager, &block) get_instance(, ).tap do |instance| instance. = block end end |
Instance Method Details
#breadcrumb_for(id, object = nil) ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/wonder_navigation/menu.rb', line 38 def (id, object = nil) if items[id] items[id].(object) else raise ENotDefinedMenu.new "Menu '#{id}' not defined" end end |
#item_exists?(id) ⇒ Boolean
34 35 36 |
# File 'lib/wonder_navigation/menu.rb', line 34 def item_exists?(id) items[id].present? end |
#menu_tree(options = {}) ⇒ Object
46 47 48 49 50 51 |
# File 'lib/wonder_navigation/menu.rb', line 46 def ( = {}) current_user = [:current_user] current_page = [:current_page] max_depth = [:max_depth] || 10 items[:root].tree(current_page, max_depth, current_user) end |
#menu_tree_flat(options = {}) ⇒ Object
53 54 55 |
# File 'lib/wonder_navigation/menu.rb', line 53 def ( = {}) extract_children () end |