module OrbitApp module Module module SideBarRegistration Version = "0.5" module ClassMethods #initiate a blank array for generating the side bar cattr_accessor :side_bars self.side_bars = [] def add(var) self.side_bars << var end def find_by_key(key) self.side_bars.each{|t| return t if t.name.eql?(key) } return nil end def render_all(request,params,user,current_module_app) self.side_bars.collect{|t| t.render(request,params,user,current_module_app)}.join.html_safe end def all return self.side_bars end def all_get_ordered! self.side_bars.sort! {|x,y| x.get_sidebar_order! <=> y.get_sidebar_order! } end end extend ClassMethods def self.included(other) other.extend(ClassMethods) end class SideBar include SideBarRenderer def initialize(name = '',key,get_module_app,&block) @head_label = name @head_link = "" @app_base_path = '' @active_for_controllers = [] @module_app_key = key @get_module_app = get_module_app @sidebar_order = 0 block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given? SideBarRegistration.add(self) SideBarRegistration.all_get_ordered! end def get_sidebar_order! @sidebar_order = (get_module_app.sidebar_order rescue 0) end def get_icon_class @icon_class end def get_module_app @get_module_app.call end def get_module_app_key @module_app_key end def head_label_i18n(var,options ={}) @head_label = var @icon_class = options[:icon_class] end def head_link_path(var) @head_link = var end def active_for_controllers(var) @active_for_controllers = var end protected def set_controllers_scope var = @active_for_controllers @active_for_controllers = [] var[:private].each do |controller| @active_for_controllers << "admin/"+controller end unless var[:private].nil? var[:public].each do |controller| @active_for_controllers << controller end unless var[:public].nil? end end end end end