module OrbitApp module Plugin module Registration Version = "0.2" module ClassMethods @@registrations = [] def new( name ,&block) @@registrations << DataSheet.new(name,&block) end def new_from_module_app(name,key,base_path,*args) @@registrations << DataSheet.new(name,args,:base_path=>base_path) end def find_by_app_name(name) @@registrations.each{|t| return t if t.app_name == name } return nil end def find_by_key(key) @@registrations.each{|t| return t if t.name == key } return nil end def all return @@registrations end end extend ClassMethods def self.included( other ) other.extend( ClassMethods ) end class DataSheet attr_reader :name attr_reader :base_path def name if @name.is_a? Proc @name.call else @name end end def initialize(name,partial=nil,*args ,&block) @base_path = args[0][:base_path] @name = partial[0][:i18n].nil? ? name : lambda{ I18n.t(partial[0][:i18n]) } @sort_number = partial[0][:sort_number] @app_name = partial[0][:app_name] @intro_app_name = partial[0][:intro_app_name] @partial_path = '' @front_partial_path = '' @admin_partial_path = '' unless partial.nil? @partial_path = partial[0][:path] @front_partial_path = partial[0][:front_path] @admin_partial_path = partial[0][:admin_path] end block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given? end def sort_number return @sort_number end def app_name return @app_name end def intro_app_name return @intro_app_name end def profile_partial_path return @partial_path end def front_partial_path return @front_partial_path end def admin_partial_path return @admin_partial_path end end end end end