lib/bootstrap2-rails/menu_creator.rb in bootstrap2-rails-0.0.2 vs lib/bootstrap2-rails/menu_creator.rb in bootstrap2-rails-0.0.3
- old
+ new
@@ -1,39 +1,60 @@
module MenuCreator
- @@loaded = false
- @@menu_params = []
+ @@menu = nil
+ class MenuBar
+ attr_accessor :project, :dropdowns
+
+ def initialize
+ @dropdowns = []
+ end
- def menu_options(params)
- @@menu_params = params unless @@loaded
- end
+ def add_dropdown(dropdown)
+ @dropdowns << dropdown if valid_dropdown?(dropdown)
+ end
- def menu_bar
- return nil unless @@menu_params
+ # Check if is a valid dropdown
+ # A valid dropdown is a class with position an caption attributes and
+ # an array of subitems
+ def valid_dropdown?(dropdown)
+ return false unless dropdown.position
+ return false unless %W(left right).include? dropdown.position.to_s
+ return false unless dropdown.caption
+ return false unless valid_subitems?(dropdown.subitems)
+ true
+ end
- html = '<div class="topbar-wrapper" style="z-index:5">'
- html += '<div class="topbar" data-dropdown="dropdown">'
- html += '<div class="topbar-inner">'
- html += '<div class="container">'
- html += '<ul class="nav">'
-
- @@menu_params.each do |param|
- html += '<li class="dropdown">'
- html += link_to(param[:title], '#', class: 'dropdown-toggle')
- html += '<ul class="dropdown-menu">'
-
- param[:itens].each do |subitem|
- html += content_tag(:li, link_to(subitem[:text], controller: subitem[:controller], action: subitem[:action]))
+ # Check if all subitems are valid
+ # Subitem must be a hash with keys :caption, :controller and :action or
+ # a string "---" in case of a separator
+ def valid_subitems?(subitems)
+ return false if subitems.length == 0
+ subitems.each do |subitem|
+ if subitem.class.to_s == "Hash"
+ return false unless subitem.has_key?(:caption) && subitem.has_key?(:controller) &&
+ subitem.has_key?(:action)
+ else
+ return false unless subitem.to_s == '---'
+ end
end
+ true
+ end
+ end
- html += '</ul>'
- html += '</li>'
+ # Dropdown menu class
+ class MenuDropdown
+ attr_accessor :position, :caption, :subitems
+
+ def initialize
+ @subitems = []
end
-
- html += '</ul>'
- html += '</div>'
- html += '</div>'
- html += '</div>'
- html += '</div>'
+ end
- html.html_safe
+ # Draw menu content
+ def menu_bar
+ render partial: '/shared/menu', locals: {menu: @@menu}
+ end
+
+ # Set menu to draw
+ def self.set_menu(menu)
+ @@menu = menu
end
end
\ No newline at end of file