145 lines
3.5 KiB
Ruby
145 lines
3.5 KiB
Ruby
class ModuleApp
|
|
include Mongoid::Document
|
|
include Mongoid::Timestamps
|
|
include OrbitCoreLib::ObjectTokenUtility
|
|
include OrbitApp::ModuleAppMembershipTools
|
|
|
|
field :key
|
|
field :title
|
|
field :sidebar_order,type: Integer,default: 0
|
|
|
|
has_and_belongs_to_many :module_tags, dependent: :destroy
|
|
|
|
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
|
|
self[:has_tag] = reg.get_has_tags
|
|
end
|
|
|
|
|
|
# scope :for_frontend_select,
|
|
scope :standard_sorting ,order_by(:title, :asc)
|
|
|
|
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
|
|
|
|
def enable_frontend?
|
|
self[:enable_frontend]
|
|
end
|
|
|
|
def get_default_widget
|
|
get_registration.get_default_widget
|
|
end
|
|
|
|
|
|
def get_widget_for_select
|
|
widgets = get_widget_style
|
|
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
|
|
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]'
|
|
end
|
|
|
|
def widget_options_fields_i18n
|
|
raise 'Need to link with OrbitApp [type: Hash]'
|
|
end
|
|
|
|
def widget_fields_link_method
|
|
get_registration.get_link_methods
|
|
# raise 'Need to link with OrbitApp [type: Hash]'
|
|
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
|
|
end
|
|
|
|
def module_name
|
|
I18n.t(get_registration.get_label_i18n)
|
|
end
|
|
|
|
def get_registration
|
|
OrbitApp::Module::Registration.find_by_key(key)
|
|
end
|
|
|
|
def self.find_by_key(key)
|
|
self.where(key: key)[0] rescue nil
|
|
end
|
|
|
|
def tags
|
|
self.module_tags.map{|t| t.tag }
|
|
end
|
|
|
|
end
|