first version of app config and modified inits.

This commit is contained in:
Fu Matthew committed 2013-01-29 20:33:40 +08:00
1 parent bfaa22052f
commit 71d5abae2e
36 files changed
+377 -264

No files matched your search

+21 -10
View File
@@ -4,13 +4,14 @@ module OrbitApp
Version = "0.1"
module ClassMethods
@@frontend_pages = []
@@frontend_pages = []
#Record all frontend pages of orbit
def add(var)
def add(var) #build @@frontend_pages
@@frontend_pages << var
end
def all
def all #return all frontend_pages of orbit
return @@frontend_pages
end
@@ -21,18 +22,18 @@ module OrbitApp
other.extend( ClassMethods )
end
class AppPageSet
class AppPageSet # From Registration
def initialize(&block)
@frontend_pages = []
@frontend_pages = []
block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given?
end
def app_page(name,options ={})
@frontend_pages << AppPage.new(name,options)
def app_page(name,&block)
@frontend_pages << AppPage.new(name,&block)
end
def to_module_app_format
@frontend_pages.collect{|t| t.name}
def to_module_app_format #For ModuleApp to fetch data
@frontend_pages.collect{|t| [t.get_i18n,t.name]}
end
end
@@ -40,10 +41,20 @@ module OrbitApp
class AppPage
attr_reader :name
def initialize(name,options ={})
def initialize(name,&block)
@name = name
@frontend_i18n = 'rulingcom.errors.init.app_page_noname'
block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given?
end
def frontend_i18n(i18n)
@frontend_i18n = i18n
end
def get_i18n
@frontend_i18n
end
def finalize!
end
+20 -7
View File
@@ -35,6 +35,7 @@ module OrbitApp
@key = name.underscore.singularize
@side_bar = nil
@front_end_app_pages = nil
@module_label = 'rulingcom.errors.init.module_app_noname'
block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given?
setup_module_app
end
@@ -46,7 +47,7 @@ module OrbitApp
def setup_module_app
module_app = get_module_app
module_app = ModuleApp.new(:key=>@key,:title=>name) if module_app.nil?
module_app.refetch_setting!(self)
begin
module_app.save(:validate=>false)
rescue
@@ -59,6 +60,10 @@ module OrbitApp
@module_label
end
def get_default_widget_fields
return @widget_set.get_fields
end
def get_default_widget
if @widget_set.nil? # Init not defining widget
return {}
@@ -77,32 +82,40 @@ module OrbitApp
@front_end_app_pages.nil? ? [] : @front_end_app_pages.to_module_app_format
end
def get_widget_by_path(path)
if @widget_set
@widget_set.find_by_path(path)
else
nil
end
end
def get_widgets
@widget_set.nil? ? {} : @widget_set.to_module_app_format
end
def get_categories
@widget_set.get_categories
@widget_set.get_categories rescue []
end
def get_tags
@widget_set.get_tags
@widget_set.get_tags rescue []
end
def front_end(&block)
def front_end(&block) #setter for front_end from init
@front_end_app_pages = FrontendUtility::AppPageSet.new(&block)
end
def side_bar(&block)
def side_bar(&block) #setter for side_bar from init
@side_bar = SideBarRegisition::SideBar.new(@name,@key,method(:get_module_app),&block)
end
def personal_plugin(params)
def personal_plugin(params) #setter for personal_plugin from init
# TODO 這裡要看是一些檔案是不是都有
Plugin::Registration.new_from_module_app(@name,@base_path,params)
end
def widgets(&block)
def widgets(&block) #setter for widget from init
# @widgets = WidgetRegisition::WidgetSet.new(&block)
@widget_set = WidgetUtility::WidgetSet.new(&block)
+66 -11
View File
@@ -34,6 +34,12 @@ module OrbitApp
define_method(field){|var| instance_variable_set( "@" + field, var)}
end
def find_by_path(path)
@widgets.each do |widget|
return widget if widget.name == path
end
end
def get_categories
eval(@categories_query) rescue nil
end
@@ -46,9 +52,17 @@ module OrbitApp
@default_widget = DefaultWidget.new(&block)
end
def customize_widget(name,label,options ={})
@widgets << Widget.new(name,label,options)
end
def customize_widget(name,&block)
@widgets << Widget.new(name,&block)
end
# def customize_widget(name,label,options ={})
# @widgets << Widget.new(name,label,options)
# end
# def customize_widget_options_fields_i18n(settings)
# @customize_widget_options_fields_i18n = settings
# end
def to_module_app_format
hash = {}
@@ -57,10 +71,13 @@ module OrbitApp
hash
end
def get_fields
get_default_widget.get_fields
end
def get_default_widget
return @default_widget
end
end
class DefaultWidget
@@ -69,9 +86,16 @@ module OrbitApp
def initialize(&block)
@query = nil
@image = nil
@more_link = {}
@fields = []
block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given?
end
def more_link_to(label_i18n,path_method)
@more_link[:label_i18n] = label_i18n
@more_link[:path_method] = path_method
end
def self.get_interface_args
#will need to work with design
{:name=>"default_widget",:field=>nil,:label=>'label',:style=>STYLE}
@@ -81,6 +105,18 @@ module OrbitApp
{:query=>@query,:image=>@image} rescue nil
end
def link_field(field_name,setting)
@fields << [field_name,setting,:link]
end
def field(field_name)
@fields << [field_name,nil,:field]
end
def get_fields
@fields
end
def query(var)
@query = var
end
@@ -94,19 +130,38 @@ module OrbitApp
class Widget
attr_reader :name,:default_template,:fields
def initialize(name,label,options ={})
def initialize(name,&block)
@name = name
@fields = options[:fields]
@label = label
@style= options[:style]
@options = {}
block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given?
# @fields = options[:fields]
# @label = label
# @style= options[:style]
end
def to_hash
{:name => @name,:fields=>@fields,:label=>@label,:style=>@style}
def widget_i18n(str) # "gallery.widget.widget1"
@widget_i18n = str
end
def style(ary)# []
@style = ary
end
def get_options
@options
end
def finalize!
def options(opt_name,*options) # "vertical",
option = options[0]
@options[opt_name] = {:label_i18n=>option[:i18n] , :opts=>option[:options_item]}
# options => :i18n => "gallery.widget_option.vertical",:options_item=>[1, 2]
# :i18n =>"gallery.widget_option.album",:options_item => {"query"=>"GalleryAlbum.all", "value"=>:id, "label"=>:name}
end
def to_hash
{:name => @name,:fields=>@fields,:label=>@label,:style=>@style,:i18n=>@widget_i18n}
end
protected
@@ -0,0 +1,73 @@
module OrbitApp
module ModuleAppMembershipTools
def is_manager?(user)
if user.nil?
return false
else
m_users = managing_users
if m_users.blank?
false
else
m_users.include?(user)
end
end
end
def is_sub_manager?(user)
if user.nil?
return false
else # when user is guest
s_m_users = sub_managing_users
result = false
if s_m_users.blank?
result = false
else
result = s_m_users.include?(user)
end
result || is_manager?(user)
end
end
def managing_users
self.managers.collect{ |t| t.user }
end
def sub_managing_users
self.sub_managers.collect{ |t| t.user }
end
def assign_manager(user,assigner)
manager = AppManager.first(conditions: {managing_app_id: self.id,user_id: user.id}) rescue nil
if manager.nil?
manager = self.managers.create(:user_id => user.id,:rule_creator_id => (assigner.id rescue nil))
end
manager
end
def assign_sub_manager(user,assigner)
submanager = AppManager.first(conditions: {sub_managing_app_id: self.id,user_id: user.id}) rescue nil
if submanager.nil? && !self.managing_users.include?(user)
submanager = self.sub_managers.create(:user_id => user.id,:rule_creator_id => (assigner.id rescue nil) )
end
submanager
end
def remove_manager(user)
manager = AppManager.first(conditions: {managing_app_id: self.id,user_id: user.id}) rescue nil
if manager
manager.destroy
else
false
end
end
def remove_sub_manager(user)
submanager = AppManager.first(conditions: {sub_managing_app_id: self.id,user_id: user.id}) rescue nil
if submanager
submanager.destroy
else
false
end
end
end
end