Orbit/app/models/module_app.rb

112 lines
2.8 KiB
Ruby
Raw Normal View History

2011-11-19 06:33:26 +00:00
class ModuleApp
include Mongoid::Document
include Mongoid::Timestamps
2012-02-16 05:57:28 +00:00
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
2012-12-28 07:30:46 +00:00
2011-12-20 08:47:17 +00:00
field :app_pages ,type: Array
2012-07-16 08:13:38 +00:00
# field :widgets ,type: Array
field :widgets ,type: Hash
2012-07-26 08:39:29 +00:00
field :widget_fields ,type: Array
2012-12-28 07:30:46 +00:00
field :widget_options,type:Hash
field :widget_options_fields_i18n,type:Hash
field :widget_fields_link_method,type:Hash
field :get_default_widget,type:Hash
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
2012-01-13 10:20:04 +00:00
2012-02-14 16:32:20 +00:00
has_many :tags
has_many :page_parts
has_many :pages
2012-02-14 16:32:20 +00:00
2011-12-20 08:47:17 +00:00
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
2012-01-13 10:20:04 +00:00
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))
2012-01-13 10:20:04 +00:00
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) )
2012-01-13 10:20:04 +00:00
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
2012-01-05 08:20:51 +00:00
2012-01-13 10:20:04 +00:00
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
2012-12-28 07:30:46 +00:00
def needs_to_widget_option?
if self.widget_options
self.widget_options.has_key? widgets.first
else
false
end
end
2013-01-14 10:49:23 +00:00
def has_default_widget?
case self[:widgets]
when Array
false
when Hash
self[:widgets].has_key? 'default_widget'
end
end
protected
2011-12-23 10:34:21 +00:00
def set_key
self.key = self.title.underscore.singularize if self.title
end
2012-02-16 05:57:28 +00:00
2011-12-23 10:34:21 +00:00
end