forked from saurabh/orbit4-5
101 lines
2.4 KiB
Ruby
101 lines
2.4 KiB
Ruby
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 |