80 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
class Admin::DashboardsController < OrbitBackendController
 | 
						|
 | 
						|
  #before_filter :set_current_user
 | 
						|
  #before_filter :authenticate_user!, :except => [:index]
 | 
						|
#  before_filter :is_admin?
 | 
						|
 | 
						|
  layout "basic_back_end"
 | 
						|
  
 | 
						|
  def index
 | 
						|
    check_backend_openness
 | 
						|
    @module_app_contents, @module_app_contents_total = get_module_app_count('bulletin', 'page_context', 'web_link')
 | 
						|
    @recent_updated = get_recently_updated('bulletin', 'page_context', 'web_link')
 | 
						|
    @most_visited = get_most_visited('bulletin', 'page_context')
 | 
						|
  end
 | 
						|
 | 
						|
  def reload_all_content
 | 
						|
    @module_app_contents, @module_app_contents_total = get_module_app_count('bulletin', 'page_context', 'web_link')
 | 
						|
    respond_to do |format|
 | 
						|
      format.js { render 'reload', locals: {div_id: 'all_content'} }
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def reload_most_visited
 | 
						|
    @most_visited = get_most_visited('bulletin', 'page_context')
 | 
						|
    respond_to do |format|
 | 
						|
      format.js { render 'reload', locals: {div_id: 'most_visited'} }
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def reload_recent_update
 | 
						|
    @recent_updated = get_recently_updated('bulletin', 'page_context', 'web_link')
 | 
						|
    respond_to do |format|
 | 
						|
      format.js { render 'reload', locals: {div_id: 'recent_update'} }
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  protected
 | 
						|
 | 
						|
  def get_module_app_count(*args)
 | 
						|
  	a = {}
 | 
						|
  	total = 0
 | 
						|
  	args.each do |module_app|
 | 
						|
  		module_app_class = module_app.classify.constantize
 | 
						|
  		count = module_app_class.count
 | 
						|
  		a.merge!(module_app => count)
 | 
						|
  		total += count
 | 
						|
  	end
 | 
						|
    [Kaminari.paginate_array(a.sort {|a,b| b[1]<=>a[1]}).page(params[:page]).per(5), total]
 | 
						|
  end
 | 
						|
 | 
						|
  def get_recently_updated(*args)
 | 
						|
  	a = {}
 | 
						|
  	args.each do |module_app|
 | 
						|
  		module_app_class = module_app.classify.constantize
 | 
						|
  		objects = module_app_class.order_by(:updated_at, :desc).limit(20)
 | 
						|
  		objects.each do |object|
 | 
						|
  			a.merge!(object => object.updated_at) unless (object.archived rescue nil)
 | 
						|
  		end
 | 
						|
  	end
 | 
						|
  	sorted_objects = a.sort {|a,b| b[1]<=>a[1]}
 | 
						|
  	sorted_objects[0..19]
 | 
						|
    Kaminari.paginate_array(sorted_objects).page(params[:page]).per(5)
 | 
						|
  end
 | 
						|
 | 
						|
  def get_most_visited(*args)
 | 
						|
    a = {}
 | 
						|
    args.each do |module_app|
 | 
						|
      module_app_class = module_app.classify.constantize
 | 
						|
      objects = module_app_class.order_by(:view_count, :desc).limit(20)
 | 
						|
      objects.each do |object|
 | 
						|
        a.merge!(object => object.view_count) if object.view_count > 0 && (!object.archived rescue true)
 | 
						|
      end
 | 
						|
    end
 | 
						|
    sorted_objects = a.sort {|a,b| b[1]<=>a[1]}
 | 
						|
    sorted_objects[0..19]
 | 
						|
    Kaminari.paginate_array(sorted_objects).page(params[:page]).per(5)
 | 
						|
  end
 | 
						|
  
 | 
						|
end
 |