163 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			4.0 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_many :tags, as: :module_tag, 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 sorted_tags_for_cloud
 | |
|     temp_tags = {}
 | |
|     self.tags.each{ |tag|
 | |
|       temp_tags.merge!({tag => tag.cloud_view_count})
 | |
|     }
 | |
|     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
 | |
|   
 | |
| end
 |