88 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| class ModuleApp
 | |
|   include Mongoid::Document
 | |
|   include Mongoid::Timestamps
 | |
|   include OrbitCoreLib::ObjectTokenUnility
 | |
| 
 | |
|   field :key
 | |
|   field :title
 | |
|   field :version
 | |
|   field :organization
 | |
|   field :author
 | |
|   field :intro
 | |
|   field :update_info
 | |
|   field :create_date
 | |
|   field :enable_frontend, type: Boolean, :default => true
 | |
|   
 | |
|   field :app_pages ,type: Array
 | |
|   field :widgets ,type: Array
 | |
|     
 | |
|   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
 | |
|   
 | |
|   before_save :set_key
 | |
|   
 | |
|   def is_manager?(user)
 | |
|     managing_users.include?(user)
 | |
|   end
 | |
|   
 | |
|   def is_sub_manager?(user)
 | |
|     sub_managing_users.include?(user) || is_manager?(user)
 | |
|   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 => user,:rule_creator => assigner)
 | |
|     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 => user,:rule_creator => assigner)
 | |
|     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
 | |
|   
 | |
|   protected
 | |
|   
 | |
|   def set_key
 | |
|     self.key = self.title.underscore if self.title
 | |
|   end
 | |
| 
 | |
|   
 | |
| end
 |