orbit-basic/app/models/module_app.rb

170 lines
4.2 KiB
Ruby
Raw Normal View History

2011-11-19 06:33:26 +00:00
class ModuleApp
include Mongoid::Document
include Mongoid::Timestamps
2012-12-03 10:52:36 +00:00
include OrbitCoreLib::ObjectTokenUtility
include OrbitApp::ModuleAppMembershipTools
field :key
field :title
2013-02-18 07:13:31 +00:00
field :sidebar_order,type: Integer,default: 0
has_many :categories, dependent: :destroy
has_many :module_tags, dependent: :destroy
2013-04-26 03:18:57 +00:00
def refetch_setting!(reg)
# %w{module_label category base_url version organization author intro update_info create_date}.each do |field|
# self[field.to_sym] = reg.send field
# end
self[:app_pages] = reg.get_app_pages
self[:enable_frontend] = reg.get_enable_frontend
self[:get_widget_style] = reg.get_widgets
self[:using_default_widget] = !reg.get_default_widget.blank?
self[:widgets] = reg.get_widgets
2013-05-24 10:42:01 +00:00
self[:has_tag] = reg.get_has_tags
self[:has_category] = reg.get_has_category
self[:is_authorizable] = reg.get_is_authorizable
end
2012-12-03 10:52:36 +00:00
# scope :for_frontend_select,
2013-04-01 09:06:10 +00:00
scope :standard_sorting ,order_by(:title, :asc)
2012-12-03 10:52:36 +00:00
def self.for_widget_select
where(:key.in=>OrbitApp::Module::WidgetUtility.all.keys).order_by(:title, :asc)
end
def self.for_frontend_select
where(:key.in => OrbitApp::Module::FrontendUtility.all.keys).excludes(widgets: nil).where(enable_frontend: true).order_by(:title, :asc)
end
2012-12-03 10:52:36 +00:00
def enable_frontend?
self[:enable_frontend]
end
def get_default_widget
2013-02-18 07:13:31 +00:00
get_registration.get_default_widget
end
2012-12-03 10:52:36 +00:00
def get_widget_for_select
widgets = get_widget_style
2012-12-03 10:52:36 +00:00
ary = widgets.collect do |k,v|
if k == 'default_widget'
[I18n.t('widget.default_widget'),'default_widget']
else
[I18n.t(v[:label]),k]
end
end
end
# def get_widget_style
# get_registration.get_widgets
# end
def has_default_widget?
self[:widgets].has_key? 'default_widget'
end
def label
I18n.t(label_i18n)
end
def label_i18n
reg = get_registration
reg.nil? ? 'Init is not defined completely' : get_registration.get_label_i18n
end
# def needs_to_widget_option?
# if self.widget_options
# self.widget_options.has_key? widgets.first
# else
# false
# end
# end
def using_default_widget?
# !get_registration.get_default_widget.blank?
self[:get_default_widget]
end
def widget_fields
# binding.pry
# raise 'Need to link with OrbitApp [type: Array]'
get_registration.get_default_widget_fields
2012-01-13 10:20:04 +00:00
end
# def widgets
# # get_registration.get_widgets
# # get_registration.get_default_widget
# end
def widget_options(widget_path=nil)
get_registration.get_widget_by_path(widget_path)
# raise 'Need to link with OrbitApp [type: Hash]'
2012-01-13 10:20:04 +00:00
end
def widget_options_fields_i18n
raise 'Need to link with OrbitApp [type: Hash]'
2012-01-13 10:20:04 +00:00
end
def widget_fields_link_method
2013-02-18 09:03:18 +00:00
get_registration.get_link_methods
# raise 'Need to link with OrbitApp [type: Hash]'
2012-01-13 10:20:04 +00:00
end
has_many :managers,as: :managing_app ,:class_name => "AppManager" ,:dependent => :destroy#,:foreign_key => "managing_app_id",:inverse_of => :managing_app
has_many :sub_managers,as: :sub_managing_app ,:class_name => "AppManager", :dependent => :destroy#,:foreign_key => "sub_managing_app_id",:inverse_of => :sub_managing_app
# # has_many :tags
has_many :page_parts
has_many :pages
has_one :app_auth,dependent: :delete
def get_categories
get_registration.get_categories
2012-12-28 07:30:46 +00:00
end
def module_name
I18n.t(get_registration.get_label_i18n)
2013-01-14 10:49:23 +00:00
end
def get_registration
OrbitApp::Module::Registration.find_by_key(key)
end
2013-04-26 03:18:57 +00:00
def self.find_by_key(key)
self.where(key: key)[0] rescue nil
end
2013-05-24 10:42:01 +00:00
def sorted_tags_for_cloud
temp_tags = {}
self.tags.each{ |tag|
temp_tags.merge!({tag => Tag.get_impressionist(tag)})
}
if !temp_tags.blank?
sorted_tags = temp_tags.sort{|a,b| a[1]<=>b[1]}.reverse
sorted_tags[0][1] = :hot1
offset = (sorted_tags.size - 1) / 3
i = 1
class_i = 2
sorted_tags[1..-1].collect!{ |x|
x[1] = "hot#{class_i}"
i == offset ? i = 1 : i += 1 if class_i < 4
class_i += 1 if i == offset && class_i < 4
}
sorted_tags
else
[]
end
end
2011-12-23 10:34:21 +00:00
def tags
self.module_tags.map{|t| t.tag }
end
end