forked from saurabh/orbit4-5
99 lines
2.8 KiB
Ruby
99 lines
2.8 KiB
Ruby
class Admin::DashboardsController < ApplicationController
|
|
include OrbitBackendHelper
|
|
before_action :check_backend_openness
|
|
layout "basic_back_end"
|
|
|
|
def index
|
|
apps = ['bulletin', 'page', 'web_link']
|
|
@module_app_contents, @module_app_contents_total = get_module_app_count(apps)
|
|
@recent_updated = get_recently_updated(apps)
|
|
@most_visited = get_most_visited(apps)
|
|
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','page')
|
|
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
|
|
|
|
def get_cpu_usage
|
|
@usw = Usagewatch
|
|
render :js => @usw.uw_cpuused.to_s
|
|
end
|
|
|
|
def get_mem_usage
|
|
@usw = Usagewatch
|
|
render :js => @usw.uw_memused.to_s
|
|
end
|
|
|
|
def get_disk_usage
|
|
render :json => `df -m /home`.scan(/\d+%/).first.gsub('%','') rescue '0'
|
|
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
|
|
|
|
private
|
|
|
|
def check_backend_openness
|
|
if !current_site.backend_openness_on && current_user.blank?
|
|
redirect_to new_session_path
|
|
end
|
|
end
|
|
|
|
end
|