Manger and SubManager
This commit is contained in:
		
							parent
							
								
									5ae8e84b93
								
							
						
					
					
						commit
						18a82d7f47
					
				| 
						 | 
				
			
			@ -15,4 +15,10 @@ class Admin::AppAuthsController < ApplicationController
 | 
			
		|||
    @module_apps = ModuleApp.all
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def edit
 | 
			
		||||
    @module_app = ModuleApp.find(params[:id])
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -18,6 +18,7 @@ class Admin::ModuleAppsController < ApplicationController
 | 
			
		|||
    
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
  
 | 
			
		||||
  def update
 | 
			
		||||
    @module_app = ModuleApp.find(params[:id])
 | 
			
		||||
    unless params['module_app']['enable_frontend'].nil?
 | 
			
		||||
| 
						 | 
				
			
			@ -30,4 +31,56 @@ class Admin::ModuleAppsController < ApplicationController
 | 
			
		|||
      format.js  { render 'admin/attributes/toggle_enable' }
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
  def assign_sub_manager
 | 
			
		||||
    @module_app = ModuleApp.find(params[:id])
 | 
			
		||||
    @assign_to_user = User.find params[:sub_manager_id] rescue nil
 | 
			
		||||
    unless @assign_to_user.nil?
 | 
			
		||||
       if @module_app.assign_sub_manager(@assign_to_user,current_user)
 | 
			
		||||
          flash[:notice] = t('admin.app_auth.assign_success_sub_manager')
 | 
			
		||||
        else
 | 
			
		||||
          flash[:notice] = t('admin.app_auth.assign_fail_sub_manager')
 | 
			
		||||
        end
 | 
			
		||||
      else
 | 
			
		||||
        flash[:notice] = t('admin.app_auth.assign_fail_sub_manager_no_user')
 | 
			
		||||
    end
 | 
			
		||||
       redirect_to :action => "edit"
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
  def assign_manager
 | 
			
		||||
    @module_app = ModuleApp.find(params[:id])
 | 
			
		||||
    @assign_to_user = User.find params[:manager_id] rescue nil
 | 
			
		||||
    unless @assign_to_user.nil?
 | 
			
		||||
       if @module_app.assign_manager(@assign_to_user,current_user)
 | 
			
		||||
          flash[:notice] = t('admin.app_auth.assign_success_manager')
 | 
			
		||||
        else
 | 
			
		||||
          flash[:notice] = t('admin.app_auth.assign_fail_manager')
 | 
			
		||||
        end
 | 
			
		||||
      else
 | 
			
		||||
        flash[:notice] = t('admin.app_auth.assign_fail_manager_no_user')
 | 
			
		||||
    end
 | 
			
		||||
       redirect_to :action => "edit"
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
  def remove_manager
 | 
			
		||||
    @module_app = ModuleApp.find(params[:id])
 | 
			
		||||
    @app_manager = AppManager.find(params[:app_manager_id]) rescue nil
 | 
			
		||||
    if @module_app.remove_manager(@app_manager.user)
 | 
			
		||||
      flash[:notice] = t('admin.app_auth.delete_success_manager')
 | 
			
		||||
    else
 | 
			
		||||
      flash[:notice] = t('admin.app_auth.delete_fail_manager')
 | 
			
		||||
    end
 | 
			
		||||
    redirect_to :action => "edit"
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
  def remove_sub_manager
 | 
			
		||||
    @module_app = ModuleApp.find(params[:id])
 | 
			
		||||
    @app_sub_manager = AppManager.find(params[:app_sub_manager_id]) rescue nil
 | 
			
		||||
    if @module_app.remove_sub_manager(@app_sub_manager.user) 
 | 
			
		||||
      flash[:notice] = t('admin.app_auth.delete_success_sub_manager')
 | 
			
		||||
    else
 | 
			
		||||
      flash[:notice] = t('admin.app_auth.delete_fail_sub_manager')
 | 
			
		||||
    end
 | 
			
		||||
    redirect_to :action => "edit"
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
class AppManager 
 | 
			
		||||
  include Mongoid::Document
 | 
			
		||||
  include Mongoid::Timestamps
 | 
			
		||||
  	
 | 
			
		||||
  belongs_to :user
 | 
			
		||||
  
 | 
			
		||||
  belongs_to :managing_app, :polymorphic => true  #,:class_name => 'ModuleApp',:inverse_of => :managers,:foreign_key => "user_id" 
 | 
			
		||||
  belongs_to :sub_managing_app, :polymorphic => true  #,:class_name => 'ModuleApp',:inverse_of => :sub_manager,:foreign_key => "sub_user_id"
 | 
			
		||||
  
 | 
			
		||||
  belongs_to :rule_creator,:class_name => 'User'
 | 
			
		||||
  
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -14,10 +14,47 @@ class ModuleApp
 | 
			
		|||
  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_one :app_auth,dependent: :delete
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
  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?
 | 
			
		||||
      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
 | 
			
		||||
  
 | 
			
		||||
  field :app_pages ,type: Array
 | 
			
		||||
  
 | 
			
		||||
  has_one :app_auth,dependent: :delete
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,9 @@ class User
 | 
			
		|||
  has_many :app_auths,as: :privilege_apps,:inverse_of => :privilege_lists
 | 
			
		||||
  has_many :blocked_apps,  :inverse_of => :blocked_users, :class_name => "AppAuth"
 | 
			
		||||
  has_many :privilege_apps,  :inverse_of => :privilege_users, :class_name => "AppAuth"
 | 
			
		||||
  
 | 
			
		||||
  has_many :managing_apps,:class_name => "AppManager"
 | 
			
		||||
  
 | 
			
		||||
  belongs_to :role
 | 
			
		||||
  has_and_belongs_to_many :sub_roles
 | 
			
		||||
  accepts_nested_attributes_for :attribute_values, :allow_destroy => true
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,41 @@
 | 
			
		|||
<% content_for :secondary do %>
 | 
			
		||||
<% end %>
 | 
			
		||||
 | 
			
		||||
<!-- Remove if CSS done-->
 | 
			
		||||
<br />
 | 
			
		||||
<br />
 | 
			
		||||
<br />
 | 
			
		||||
<!-- Remove if CSS done-->
 | 
			
		||||
 | 
			
		||||
<div id="manager_management">
 | 
			
		||||
	<h1><%= @module_app.title %></h1>
 | 
			
		||||
	<dl id="manager">
 | 
			
		||||
		<dt>Manager</ht>
 | 
			
		||||
		<% @module_app.managers.each do |manager| %>
 | 
			
		||||
			<dd><%= manager.user.name %>  -AuthBy:<%= manager.rule_creator.name %> <%= link_to '[X]',remove_manager_admin_module_app_path(@module_app,manager),:method => :delete unless  manager.user == current_user%> </dd>
 | 
			
		||||
		<% end %>
 | 
			
		||||
		<dd>Add:
 | 
			
		||||
			<%= form_tag(assign_manager_admin_module_app_path) do %>
 | 
			
		||||
				<%= text_field_tag 'manager_id' %>
 | 
			
		||||
				<%= submit_tag 'Add Manager' %>
 | 
			
		||||
			<% end %>
 | 
			
		||||
		</dd>
 | 
			
		||||
	</dl>
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
	<dl id="sub_manager">
 | 
			
		||||
		<dt>Sub Manager</ht>
 | 
			
		||||
		<% @module_app.sub_managers.each do |manager| %>
 | 
			
		||||
			<dd><%= manager.user.name %>  -AuthBy:<%= manager.rule_creator.name %> <%= link_to '[X]',remove_sub_manager_admin_module_app_path(@module_app,manager),:method => :delete unless  manager.user == current_user%> </dd>
 | 
			
		||||
		<% end %>
 | 
			
		||||
		<dd>Add:
 | 
			
		||||
			<%= form_tag(assign_sub_manager_admin_module_app_path) do %>
 | 
			
		||||
				<%= text_field_tag 'sub_manager_id' %>
 | 
			
		||||
				<%= submit_tag 'Add Sub Manager' %>
 | 
			
		||||
			<% end %>
 | 
			
		||||
		</dd>
 | 
			
		||||
	</dl>
 | 
			
		||||
 | 
			
		||||
	
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -40,6 +40,11 @@ PrototypeR4::Application.routes.draw do
 | 
			
		|||
    end
 | 
			
		||||
    resources :module_apps do
 | 
			
		||||
      member do
 | 
			
		||||
        match 'assign_manager' ,:action=> 'assign_manager',:via => "post",:as =>:assign_manager
 | 
			
		||||
        match 'assign_sub_manager' ,:action=> 'assign_sub_manager',:via => "post",:as =>:assign_sub_manager
 | 
			
		||||
 | 
			
		||||
        match 'remove_manager/:app_manager_id' ,:action=> 'remove_manager',:via => "delete",:as =>:remove_manager
 | 
			
		||||
        match 'remove_sub_manager/:app_sub_manager_id' ,:action=> 'remove_sub_manager',:via => "delete",:as =>:remove_sub_manager
 | 
			
		||||
        get 'reload_frontend_pages'
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue