New UI changes(tags, categories, authorisations, module index…)
To run: - ruby lib/remove_old_tags.rb DB_NAME - rake new_ui:migrate_tags - rake new_ui:migrate_categories['APP_KEY,''MODEL_NAME'] (check new_ui.rake for more details)
This commit is contained in:
1 parent
07b3857465
commit
856898016b
1495 files changed
+52132
-9876
No files matched your search
@@ -1,4 +1,6 @@
|
||||
class Admin::AssetsController < OrbitBackendController
|
||||
|
||||
before_filter :setup_vars
|
||||
|
||||
def index
|
||||
@assets = (params[:sort] || @filter) ? get_sorted_and_filtered("asset") : Asset.all.page(params[:page]).per(10)
|
||||
|
||||
@@ -0,0 +1,157 @@
|
||||
class Admin::AuthorizationsController < OrbitBackendController
|
||||
|
||||
before_filter :admin_or_manager
|
||||
|
||||
def index
|
||||
@module_apps ||= ModuleApp.where(is_authorizable: true).order_by([:title, :asc])
|
||||
if @module_apps && @module_apps.include?(@module_app)
|
||||
case @type
|
||||
when 'category'
|
||||
type = 'submit'
|
||||
when 'approval'
|
||||
type = 'fact_check'
|
||||
else
|
||||
@users = @module_app.managing_users
|
||||
end
|
||||
if type
|
||||
if @module_app.has_category
|
||||
@categories = @module_app.categories
|
||||
unless @categories.blank?
|
||||
@category ||= @categories.first
|
||||
@users = @category.get_object_auth_by_title("#{type}_#{@module_app.key}").auth_users
|
||||
else
|
||||
@error = t(:no_category)
|
||||
end
|
||||
else
|
||||
@error = t(:no_category)
|
||||
end
|
||||
end
|
||||
elsif @module_apps
|
||||
@module_app = @module_apps.first
|
||||
redirect_to admin_authorizations_url(@module_app.key)
|
||||
else
|
||||
redirect_to :root
|
||||
end
|
||||
end
|
||||
|
||||
def add(users)
|
||||
unless users.blank?
|
||||
case @type
|
||||
when 'category'
|
||||
type = 'submit'
|
||||
when 'approval'
|
||||
type = 'fact_check'
|
||||
else
|
||||
add_managers(users) unless users.blank?
|
||||
end
|
||||
if type
|
||||
if @category
|
||||
object_auth = @category.get_object_auth_by_title("#{type}_#{@module_app.key}")
|
||||
add_users_to_object_auth(object_auth, users)
|
||||
else
|
||||
@error = t(:no_category)
|
||||
end
|
||||
end
|
||||
end
|
||||
@users = users
|
||||
render 'admin/authorizations/insert_users'
|
||||
end
|
||||
|
||||
def add_users
|
||||
users = User.find(params[:user_ids]) rescue []
|
||||
add(users)
|
||||
end
|
||||
|
||||
def add_roles
|
||||
roles = Role.find(params[:role_ids]) rescue []
|
||||
users = roles.inject([]) do |users, role|
|
||||
users += role.users.all.entries
|
||||
users
|
||||
end
|
||||
add(users)
|
||||
end
|
||||
|
||||
def modal_select
|
||||
existing_users = User.find(params[:ids]) rescue []
|
||||
roles = Role.all
|
||||
case @type
|
||||
when 'category', 'approval'
|
||||
@category_id = @category.id if @category
|
||||
@sorted_users = roles.inject({}) do |users, role|
|
||||
users[role] = role.users.where(admin: false).not_guest_user - existing_users - @module_app.managing_users
|
||||
users
|
||||
end
|
||||
else
|
||||
@sorted_users = roles.inject({}) do |users, role|
|
||||
users[role] = role.users.where(admin: false).not_guest_user - existing_users
|
||||
users
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def remove_users
|
||||
@users = User.find(params[:ids]) rescue []
|
||||
unless @users.blank?
|
||||
case @type
|
||||
when 'category'
|
||||
type = 'submit'
|
||||
when 'approval'
|
||||
type = 'fact_check'
|
||||
else
|
||||
remove_managers(@users)
|
||||
end
|
||||
if type
|
||||
object_auth = @category.get_object_auth_by_title("#{type}_#{@module_app.key}")
|
||||
remove_users_form_object_auth(object_auth, @users)
|
||||
end
|
||||
end
|
||||
render 'admin/authorizations/remove_users'
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def add_managers(users)
|
||||
users.each do |user|
|
||||
@module_app.assign_manager(user, current_user)
|
||||
end
|
||||
end
|
||||
|
||||
def add_users_to_object_auth(object_auth, users)
|
||||
users.each do |user|
|
||||
object_auth.add_user_to_privilege_list(user)
|
||||
end
|
||||
end
|
||||
|
||||
def remove_managers(users)
|
||||
users.each do |user|
|
||||
@module_app.remove_manager(user)
|
||||
end
|
||||
end
|
||||
|
||||
def remove_users_form_object_auth(object_auth, users)
|
||||
users.each do |user|
|
||||
object_auth.remove_user_from_privilege_list(user)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def admin_or_manager
|
||||
setup_vars
|
||||
authenticate_user!
|
||||
user_is_manager?
|
||||
end
|
||||
|
||||
def setup_vars
|
||||
@module_app = ModuleApp.first(conditions: {:key => params[:module]} ) if params[:module]
|
||||
@category = Category.find(params[:category]) rescue nil
|
||||
@type = params[:type]
|
||||
end
|
||||
|
||||
def user_is_manager?
|
||||
unless is_admin?
|
||||
@module_apps = current_user.managed_module_apps
|
||||
redirect_to :root if @module_apps.blank?
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,112 @@
|
||||
class Admin::CategoriesController < OrbitBackendController
|
||||
|
||||
# TODO = put back ========================
|
||||
# before_filter :force_order_for_visitor, only: [:index]
|
||||
# before_filter :force_order_for_user, except: [:index]
|
||||
# before_filter :for_app_sub_manager, except: [:index]
|
||||
# ========================================
|
||||
before_filter :setup_vars
|
||||
# ========================================
|
||||
|
||||
def index
|
||||
@categories = get_categories_for_index
|
||||
@categories = @categories.page(params[:page]).per(10)
|
||||
end
|
||||
|
||||
def new
|
||||
@category = Category.new
|
||||
render layout: false
|
||||
end
|
||||
|
||||
def edit
|
||||
@category = Category.find(params[:id])
|
||||
render layout: false
|
||||
end
|
||||
|
||||
def create
|
||||
@category = @module_app.categories.build(params[:category])
|
||||
if @category.save
|
||||
redirect_to admin_module_app_categories_url(@module_app_id)
|
||||
else
|
||||
@category = Category.new(params[:category])
|
||||
flash.now[:error] = t('create.error.category')
|
||||
render action: :new
|
||||
end
|
||||
end
|
||||
|
||||
def update
|
||||
@category = Category.find(params[:id])
|
||||
if @category.update_attributes(params[:category])
|
||||
redirect_to admin_module_app_categories_url(@module_app_id)
|
||||
else
|
||||
flash.now[:error] = t('update.error.category')
|
||||
render action: :edit
|
||||
end
|
||||
end
|
||||
|
||||
def toggle
|
||||
@category = Category.find(params[:id])
|
||||
@category.disable = @category.disable ? false : true
|
||||
@category.save!
|
||||
redirect_to action: :index
|
||||
end
|
||||
|
||||
# def get_categorys_json
|
||||
# categorys = BulletinCategory.all
|
||||
# data = Array.new
|
||||
|
||||
# categorys.each do |c|
|
||||
# data << {
|
||||
# category: c.title,
|
||||
# # this is a json format
|
||||
# # link: "http://#{request.host_with_port}#{panel_announcement_back_end_bulletin_category_get_bulletins_json_path(c)}"
|
||||
# # remember to uncommand a rule in route.rb, too
|
||||
# link: "#{url_for( :action => "index",
|
||||
# :controller => "panel/announcement/front_end/bulletins",
|
||||
# :format => :rss,
|
||||
# :only_path => false,
|
||||
# :inner=>true,
|
||||
# :category_id => c )}"
|
||||
# }
|
||||
# end
|
||||
|
||||
# #render :json => @data.to_json
|
||||
# #to print readable json
|
||||
# render :json => JSON.pretty_generate(data)
|
||||
# end
|
||||
|
||||
# def get_bulletins_json
|
||||
# bulletin = BulletinCategory.find(params[:bulletin_category_id]).bulletins
|
||||
# p bulletin
|
||||
# data = Array.new
|
||||
|
||||
# bulletin.each do |b|
|
||||
# deadline = b.deadline
|
||||
|
||||
# if not deadline.nil?
|
||||
# deadline = display_date_time(deadline)
|
||||
# else
|
||||
# deadline = I18n.t("no_deadline")
|
||||
# end
|
||||
|
||||
# data << {
|
||||
# title: b.title,
|
||||
# link: "http://#{request.host_with_port}#{panel_announcement_front_end_bulletin_path(b, :category_id => b.bulletin_category.id)}",
|
||||
# postdate: display_date_time(b.postdate),
|
||||
# deadline: deadline,
|
||||
# tag: b.sorted_tags.to_a,
|
||||
# }
|
||||
# end
|
||||
|
||||
# render :json => JSON.pretty_generate(data)
|
||||
# end
|
||||
|
||||
private
|
||||
|
||||
def setup_vars
|
||||
@module_app = ModuleApp.find(params[:module_app_id]) rescue nil
|
||||
raise ModuleAppError, 'Can not find ModuleApp' if @module_app.nil?
|
||||
@module_app_id = @module_app.id rescue nil
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,8 +1,10 @@
|
||||
class Admin::DashboardsController < OrbitBackendController
|
||||
layout "new_admin"
|
||||
|
||||
#before_filter :set_current_user
|
||||
#before_filter :authenticate_user!, :except => [:index]
|
||||
# before_filter :is_admin?
|
||||
|
||||
layout "basic_back_end"
|
||||
|
||||
def index
|
||||
check_backend_openness
|
||||
@@ -11,6 +13,27 @@ class Admin::DashboardsController < OrbitBackendController
|
||||
@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)
|
||||
@@ -22,33 +45,35 @@ class Admin::DashboardsController < OrbitBackendController
|
||||
a.merge!(module_app => count)
|
||||
total += count
|
||||
end
|
||||
[a.sort {|a,b| b[1]<=>a[1]}, total]
|
||||
[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(10)
|
||||
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..9]
|
||||
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(10)
|
||||
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..9]
|
||||
sorted_objects[0..19]
|
||||
Kaminari.paginate_array(sorted_objects).page(params[:page]).per(5)
|
||||
end
|
||||
|
||||
end
|
||||
@@ -3,7 +3,6 @@ class Admin::DesignsController < OrbitBackendController
|
||||
require "uri"
|
||||
require 'zip/zip'
|
||||
|
||||
layout "new_admin"
|
||||
before_filter :authenticate_user!
|
||||
before_filter :is_admin?
|
||||
before_filter :for_admin_only
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
class Admin::InfosController < OrbitBackendController
|
||||
|
||||
layout "new_admin"
|
||||
before_filter :authenticate_user!
|
||||
before_filter :is_admin?
|
||||
before_filter :set_attribute, :only => [:index, :show, :new, :edit]
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
class Admin::ItemsController < OrbitBackendController
|
||||
|
||||
layout "site_editor"
|
||||
|
||||
before_filter :authenticate_user!
|
||||
before_filter :find_parent_item
|
||||
before_filter :is_admin?
|
||||
before_filter :set_current_item
|
||||
layout "structure"
|
||||
|
||||
# TODO = put back ========================
|
||||
# before_filter :authenticate_user!
|
||||
# before_filter :find_parent_item
|
||||
# before_filter :is_admin?
|
||||
# before_filter :set_current_item
|
||||
#=========================================
|
||||
|
||||
def index
|
||||
if params[:item_id]
|
||||
@@ -15,6 +17,14 @@ class Admin::ItemsController < OrbitBackendController
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
@item = Item.find(params[:id])
|
||||
@item.destroy
|
||||
respond_to do |format|
|
||||
format.js { render 'admin/items/reload_items' }
|
||||
end
|
||||
end
|
||||
|
||||
def update_position
|
||||
item = Item.find(params[:id])
|
||||
item.shift_to(params[:parent_id], params[:position])
|
||||
|
||||
@@ -7,10 +7,12 @@ class Admin::LinksController < Admin::ItemsController
|
||||
def new
|
||||
@item = Link.new
|
||||
@item.parent = Page.find(params[:parent_id]) rescue nil
|
||||
render layout: false
|
||||
end
|
||||
|
||||
def edit
|
||||
@item = Link.find(params[:id])
|
||||
render layout: false
|
||||
end
|
||||
|
||||
def create
|
||||
@@ -19,10 +21,7 @@ class Admin::LinksController < Admin::ItemsController
|
||||
if @item.save
|
||||
flash.now[:notice] = t('create.success.link')
|
||||
respond_to do |format|
|
||||
format.html {
|
||||
redirect_to admin_link_url(@item)
|
||||
}
|
||||
format.js {}
|
||||
format.js { render 'admin/items/reload_items' }
|
||||
end
|
||||
else
|
||||
flash.now[:error] = t('create.error.link')
|
||||
@@ -36,35 +35,12 @@ class Admin::LinksController < Admin::ItemsController
|
||||
if @item.update_attributes(params[:link])
|
||||
flash.now[:notice] = t('update.success.link')
|
||||
respond_to do |format|
|
||||
format.html {
|
||||
redirect_to admin_link_url(@item)
|
||||
}
|
||||
format.js {}
|
||||
format.js { render 'admin/items/reload_items' }
|
||||
end
|
||||
else
|
||||
flash.now[:error] = t('update.error.link')
|
||||
render :action => "edit"
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
@item = Link.find(params[:id])
|
||||
@item.destroy
|
||||
respond_to do |format|
|
||||
format.html {
|
||||
redirect_to admin_items_url
|
||||
}
|
||||
format.js {}
|
||||
end
|
||||
end
|
||||
|
||||
def delete
|
||||
@item = Link.find(params[:id])
|
||||
@item.destroy
|
||||
respond_to do |format|
|
||||
format.html {}
|
||||
format.js { @item = @item.parent }
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,7 +1,5 @@
|
||||
class Admin::MemberSelectsController < OrbitBackendController
|
||||
|
||||
layout "new_admin"
|
||||
|
||||
def index
|
||||
|
||||
# @member_selects = OrbitApp::Module::Role.all
|
||||
@@ -70,4 +68,30 @@ class Admin::MemberSelectsController < OrbitBackendController
|
||||
|
||||
end
|
||||
|
||||
def select_members
|
||||
selected_users = User.find(params[:ids]) rescue []
|
||||
@field = params[:field]
|
||||
roles = Role.all
|
||||
@sorted_users = roles.inject({}) do |users, role|
|
||||
users[role] = role.users.where(:email.not => /guest|rulingcom/) - selected_users
|
||||
users
|
||||
end
|
||||
end
|
||||
|
||||
def set_roles
|
||||
roles = Role.find(params[:role_ids]) rescue []
|
||||
@field = params[:field]
|
||||
@users = roles.inject([]) do |users, role|
|
||||
users += role.users.where(:email.not => /guest|rulingcom/).entries
|
||||
users
|
||||
end
|
||||
render 'admin/member_selects/update_selected_users'
|
||||
end
|
||||
|
||||
def set_users
|
||||
@users = User.find(params[:user_ids]) rescue []
|
||||
@field = params[:field]
|
||||
render 'admin/member_selects/update_selected_users'
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,115 +0,0 @@
|
||||
class Admin::ModuleAppsController < OrbitBackendController
|
||||
before_filter :user_has_manager_privilege?, :only => [ :assign_manager, :remove_manager ]
|
||||
before_filter :user_has_sub_manager_privilege?, :only => [ :assign_sub_manager, :remove_sub_manager ]
|
||||
|
||||
layout "new_admin"
|
||||
helper Admin::PagePartsHelper
|
||||
def index
|
||||
@module_apps = ModuleApp.all.entries
|
||||
end
|
||||
|
||||
|
||||
|
||||
def module_auth_proc
|
||||
@module_app = ModuleApp.find(params[:id])
|
||||
end
|
||||
|
||||
def edit
|
||||
@module_app = ModuleApp.find(params[:id])
|
||||
end
|
||||
|
||||
def show
|
||||
@module_app = ModuleApp.find(params[:id])
|
||||
|
||||
end
|
||||
|
||||
def update
|
||||
@module_app = ModuleApp.find(params[:id])
|
||||
unless params['module_app']['enable_frontend'].nil?
|
||||
@module_app.update_attribute('enable_frontend',params['module_app']['enable_frontend'])
|
||||
@module_app.save!
|
||||
end
|
||||
@attribute = @module_app
|
||||
respond_to do |format|
|
||||
format.html { redirect_to :action => :index }
|
||||
format.js { render 'admin/attributes/toggle_enable' }
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
def assign_sub_manager
|
||||
unless @assign_to_user.nil? || @assign_to_user.admin?
|
||||
if @module_app.assign_sub_manager(@assign_to_user,current_user)
|
||||
flash[:notice] = t('app_auth.assigning_manager.add_manager_ok')
|
||||
else
|
||||
flash[:notice] = t('app_auth.assigning_manager.add_manager_fail')
|
||||
end
|
||||
else
|
||||
flash[:notice] = t('app_auth.failed_no_user')
|
||||
end
|
||||
flash[:notice] = t('app_auth.can_not_add_this_user')
|
||||
redirect_to :action => "edit"
|
||||
end
|
||||
|
||||
|
||||
def assign_manager
|
||||
unless @assign_to_user.nil? || @assign_to_user.admin?
|
||||
if @module_app.assign_manager(@assign_to_user,current_user)
|
||||
flash[:notice] = t('app_auth.assigning_sub_manager.add_sub_manager_ok')
|
||||
else
|
||||
flash[:notice] = t('app_auth.assigning_sub_manager.add_sub_manager_fail')
|
||||
end
|
||||
else
|
||||
flash[:notice] = t('app_auth.failed_no_user')
|
||||
end
|
||||
flash[:notice] = t('app_auth.can_not_add_this_user')
|
||||
redirect_to :action => "edit"
|
||||
end
|
||||
|
||||
|
||||
def remove_manager
|
||||
@app_manager = AppManager.find(params[:app_manager_id])
|
||||
if @module_app.remove_manager(@app_manager.user)
|
||||
flash[:notice] = t('app_auth.delete_manager.success')
|
||||
else
|
||||
flash[:notice] = t('app_auth.delete_manager.fail')
|
||||
end
|
||||
redirect_to :action => "edit"
|
||||
end
|
||||
|
||||
|
||||
def remove_sub_manager
|
||||
@app_sub_manager = AppManager.find(params[:app_sub_manager_id])
|
||||
if @module_app.remove_sub_manager(@app_sub_manager.user)
|
||||
flash[:notice] = t('app_auth.delete_sub_manager.success')
|
||||
else
|
||||
flash[:notice] = t('app_auth.delete_sub_manager.fail')
|
||||
end
|
||||
redirect_to :action => "edit"
|
||||
end
|
||||
|
||||
|
||||
private
|
||||
def user_has_manager_privilege?
|
||||
@module_app = ModuleApp.find(params[:id])
|
||||
@assign_to_user = User.find params[:manager][:id] rescue nil
|
||||
if current_user.admin? #only admin can assign app's manager
|
||||
return
|
||||
end
|
||||
#user is not permited to do that
|
||||
flash[:notice] = t('app_auth.operation_not_permitted')
|
||||
render :nothing => true, :status => 403
|
||||
end
|
||||
|
||||
|
||||
def user_has_sub_manager_privilege?
|
||||
@module_app = ModuleApp.find(params[:id])
|
||||
@assign_to_user = User.find params[:sub_manager][:id] rescue nil
|
||||
if current_user.admin? || @module_app.managing_users.include?(current_user) #admin or app's manager can assign app's subanager
|
||||
return
|
||||
end
|
||||
#user is not permited to do that
|
||||
flash[:notice] = t('app_auth.operation_not_permitted')
|
||||
render :nothing => true,:status => 403
|
||||
end
|
||||
end
|
||||
@@ -4,7 +4,10 @@ class Admin::ModuleAppsNewInterfaceController < OrbitBackendController
|
||||
# before_filter :is_admin?
|
||||
include AdminHelper
|
||||
|
||||
layout "new_admin"
|
||||
def index
|
||||
@module_app = ModuleApp.find params[:module_app_id]
|
||||
@managers = @module_app.managing_users
|
||||
end
|
||||
|
||||
def check_auth
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
class Admin::ModuleStoreController < ApplicationController
|
||||
|
||||
layout "new_admin"
|
||||
layout "back_end"
|
||||
|
||||
def index
|
||||
end
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
class Admin::ModuleTagsController < OrbitBackendController
|
||||
include OrbitTag::Merging
|
||||
|
||||
# TODO = put back ========================
|
||||
# before_filter :force_order_for_visitor, only: [:index]
|
||||
# before_filter :force_order_for_user, except: [:index]
|
||||
# before_filter :for_app_sub_manager, except: [:index]
|
||||
# ========================================
|
||||
before_filter :setup_vars
|
||||
# ========================================
|
||||
|
||||
helper 'admin/tags'
|
||||
|
||||
def index
|
||||
@tags = @module_app.module_tags
|
||||
@default_tags = get_default_tags
|
||||
end
|
||||
|
||||
def new
|
||||
@default_tags = get_default_tags_without_included
|
||||
@tag = ModuleTag.new
|
||||
render layout: false
|
||||
end
|
||||
|
||||
def edit
|
||||
@tag = ModuleTag.find(params[:id])
|
||||
render layout: false
|
||||
end
|
||||
|
||||
def create
|
||||
@tag = @module_app.module_tags.build(params[:module_tag])
|
||||
if @tag.save
|
||||
redirect_to admin_module_tags_url(module_app_id: @module_app_id)
|
||||
else
|
||||
@tag = ModuleTag.new(params[:module_tag])
|
||||
render :action => "new"
|
||||
end
|
||||
end
|
||||
|
||||
def update
|
||||
@tag = ModuleTag.find(params[:id])
|
||||
if @tag.update_attributes(params[:module_tag])
|
||||
redirect_to admin_module_tags_url(module_app_id: @module_app_id)
|
||||
else
|
||||
render :action => "edit"
|
||||
end
|
||||
end
|
||||
|
||||
def delete_tags
|
||||
tags = ModuleTag.find(params[:ids].split(',')) rescue nil
|
||||
if tags
|
||||
tags.each{|t|t.destroy}
|
||||
end
|
||||
redirect_to admin_module_tags_url(module_app_id: @module_app_id)
|
||||
end
|
||||
|
||||
def merge
|
||||
module_tags = ModuleTag.find(params[:ids])
|
||||
taggings = module_tags.map{|t| t.tag.taggings}.flatten
|
||||
module_tags
|
||||
name = params[:name]
|
||||
merge_tags(name, taggings, @module_app_id)
|
||||
module_tags.each(&:destroy)
|
||||
redirect_to admin_module_tags_url(module_app_id: @module_app_id)
|
||||
end
|
||||
|
||||
def remove_default
|
||||
module_tags = ModuleTag.find(params[:ids].split(',')) rescue nil
|
||||
if module_tags
|
||||
module_tags.each(&:destroy)
|
||||
end
|
||||
redirect_to admin_module_tags_url(module_app_id: @module_app_id)
|
||||
end
|
||||
|
||||
def update_included_default
|
||||
default_tags = ModuleTag.find(params[:ids].split(',')) rescue nil
|
||||
default_tags.each do |tag|
|
||||
clone_tag_from_default(tag)
|
||||
end
|
||||
redirect_to admin_module_tags_url(module_app_id: @module_app_id)
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def setup_vars
|
||||
@module_app = ModuleApp.find(params[:module_app_id]) rescue nil
|
||||
raise ModuleAppError, 'Can not find ModuleApp' if @module_app.nil?
|
||||
@module_app_id = @module_app.id rescue nil
|
||||
end
|
||||
|
||||
def get_default_tags_without_included
|
||||
ModuleTag.where(is_default: true, parent_id: nil) - @module_app.module_tags.where(is_default: true).map{|m| m.parent }
|
||||
end
|
||||
|
||||
def get_default_tag_ids
|
||||
get_default_tags.map{|t| t.id}
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,98 +0,0 @@
|
||||
class Admin::ObjectAuthsController < OrbitBackendController
|
||||
include OrbitCoreLib::PermissionUtility
|
||||
layout "new_admin"
|
||||
before_filter :force_order
|
||||
# before_filter :is_admin? ,:only => :index
|
||||
|
||||
|
||||
|
||||
def index
|
||||
# if current_user.admin?
|
||||
@object_auths = ObjectAuth.all
|
||||
# else
|
||||
# @module_apps = current_user.managing_apps.collect{|t| t.managing_app}
|
||||
# end
|
||||
end
|
||||
|
||||
def new
|
||||
obj = eval(params[:type]).find params[:obj_id]
|
||||
@object_auth=obj.object_auths.build
|
||||
@object_auth_title_option = eval(params[:type]+"::ObjectAuthTitlesOptions")
|
||||
respond_to do |format|
|
||||
format.html # new.html.erb
|
||||
format.xml { render :xml => @post }
|
||||
end
|
||||
end
|
||||
|
||||
def create
|
||||
obj = eval(params[:object_auth][:type]).find params[:object_auth][:obj_id]
|
||||
@object_auth=obj.object_auths.build :title=> params[:object_auth][:title]
|
||||
if @object_auth.save
|
||||
redirect_to edit_admin_object_auth_path(@object_auth)
|
||||
else
|
||||
flash[:error] = t('object.a_object_must_have_only_one_object_auth_profile_for_each_action')
|
||||
redirect_to (:back)
|
||||
end
|
||||
end
|
||||
|
||||
def create_role
|
||||
object_auth = ObjectAuth.find(params[:id])
|
||||
auth_all = params[:auth_all] || false
|
||||
object_auth.update_attribute(:all,auth_all)
|
||||
new_array = params[:new] || []
|
||||
new_array.each do |item|
|
||||
field = item[0]
|
||||
field_value = item[1]
|
||||
if field_value!=''
|
||||
case field
|
||||
when 'role'
|
||||
object_auth.send("add_#{field}",(Role.find field_value)) rescue nil
|
||||
when 'sub_role'
|
||||
object_auth.send("add_#{field}",(SubRole.find field_value)) rescue nil
|
||||
when 'privilege_user'
|
||||
object_auth.add_user_to_privilege_list (User.find field_value) rescue nil
|
||||
when 'blocked_user'
|
||||
object_auth.add_user_to_black_list (User.find field_value) rescue nil
|
||||
end
|
||||
end
|
||||
end
|
||||
redirect_to edit_admin_object_auth_path(object_auth)
|
||||
end
|
||||
|
||||
def remove_role
|
||||
object_auth = ObjectAuth.find(params[:id])
|
||||
type = params[:type]
|
||||
field_value = params[:target_id]
|
||||
if field_value!=''
|
||||
case type
|
||||
when 'role'
|
||||
object_auth.remove_role(Role.find field_value) rescue nil
|
||||
when 'sub_role'
|
||||
object_auth.remove_sub_role(SubRole.find field_value) rescue nil
|
||||
when 'privilege_user'
|
||||
object_auth.remove_user_from_privilege_list (User.find field_value) rescue nil
|
||||
when 'blocked_user'
|
||||
object_auth.remove_user_from_black_list (User.find field_value) rescue nil
|
||||
end
|
||||
end
|
||||
redirect_to edit_admin_object_auth_path(object_auth)
|
||||
end
|
||||
|
||||
def edit
|
||||
@object_auth = ObjectAuth.find(params[:id])
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def force_order
|
||||
authenticate_user!
|
||||
check_if_user_can_do_object_auth
|
||||
end
|
||||
|
||||
def check_if_user_can_do_object_auth
|
||||
unless check_permission(:manager)
|
||||
#render :nothing => true, :status => 403
|
||||
redirect_to '/'
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,6 +1,6 @@
|
||||
class Admin::PagePartsController < OrbitBackendController
|
||||
include Admin::FrontendWidgetInterface
|
||||
layout "site_editor"
|
||||
layout "structure"
|
||||
before_filter :authenticate_user!
|
||||
before_filter :is_admin?
|
||||
before_filter :set_current_item
|
||||
@@ -48,6 +48,7 @@ class Admin::PagePartsController < OrbitBackendController
|
||||
get_categories_and_tags
|
||||
get_frontend_data_count
|
||||
@app_frontend_urls = get_app_frontend_urls
|
||||
@no_orbit_bar = true
|
||||
end
|
||||
|
||||
def reload_widgets
|
||||
|
||||
@@ -1,65 +1,24 @@
|
||||
class Admin::PagesController < Admin::ItemsController
|
||||
helper Admin::PagePartsHelper
|
||||
include Admin::FrontendWidgetInterface
|
||||
helper Admin::PagePartsHelper
|
||||
include Admin::FrontendWidgetInterface
|
||||
|
||||
def show
|
||||
@item = Page.find(params[:id])
|
||||
respond_to do |format|
|
||||
format.html {
|
||||
render 'admin/items/index'
|
||||
}
|
||||
format.js {}
|
||||
end
|
||||
@no_orbit_bar = true
|
||||
render layout: 'page_layout'
|
||||
end
|
||||
|
||||
def new
|
||||
@item = Page.new
|
||||
@item = Page.new(params[:page])
|
||||
@item.parent = Item.find(params[:parent_id]) rescue nil
|
||||
# @apps = ModuleApp.for_frontend_select
|
||||
|
||||
@designs = Design.all.entries
|
||||
@themes = Design.first.themes
|
||||
@module_apps = ModuleApp.for_frontend_select
|
||||
@app_frontend_urls = nil
|
||||
@categories = nil
|
||||
@tags = nil
|
||||
@page_frontend_data_counts = nil
|
||||
@frontend_styles = nil
|
||||
@selected={
|
||||
:design => @designs.first,
|
||||
:theme=> @themes.first,
|
||||
:module_app=>nil,#@module_apps.first
|
||||
:app_frontend_url=> nil, #@module_apps.first
|
||||
:category=>nil,
|
||||
:tag=>nil,
|
||||
:page_frontend_data_count=>nil,
|
||||
:frontend_style => nil
|
||||
}
|
||||
get_variables_for_new
|
||||
render layout: false
|
||||
end
|
||||
|
||||
def edit
|
||||
@item = Page.find(params[:id])
|
||||
|
||||
@designs = Design.all.entries
|
||||
@themes = @item.design ? @item.design.themes : @designs.first.themes
|
||||
@module_apps = ModuleApp.for_frontend_select
|
||||
@categories = nil
|
||||
@tags = nil
|
||||
@page_frontend_data_counts = nil
|
||||
@frontend_styles = nil
|
||||
|
||||
@selected={
|
||||
:design => @item.design || @designs.first,
|
||||
:theme=> @item.theme,
|
||||
:module_app=>@item.module_app,#@module_apps.first
|
||||
:app_frontend_url=> @item.app_frontend_url, #@module_apps.first
|
||||
:category=>nil, #fetch by method: get_categories_and_tags
|
||||
:tag=>nil, #fetch by method: get_categories_and_tags
|
||||
:page_frontend_data_count=>nil,
|
||||
:frontend_style => nil
|
||||
}
|
||||
@app_frontend_urls = @item.module_app ? select_array_for_app_frontend_urls(@item.module_app.app_pages) : nil
|
||||
get_categories_and_tags
|
||||
get_frontend_data_count
|
||||
get_variables_for_edit
|
||||
render layout: false
|
||||
end
|
||||
|
||||
def reload_themes
|
||||
@@ -133,17 +92,14 @@ include Admin::FrontendWidgetInterface
|
||||
clean_tags_and_category_params
|
||||
@item = Page.new(params[:page])
|
||||
|
||||
if @item.module_app && @item.module_app.key == 'page_content'
|
||||
@item.page_contexts.build(:create_user_id => current_user.id, :update_user_id => current_user.id )
|
||||
end
|
||||
if @item.module_app && @item.module_app.key == 'page_content'
|
||||
@item.page_contexts.build(:create_user_id => current_user.id, :update_user_id => current_user.id )
|
||||
end
|
||||
|
||||
if @item.save
|
||||
flash.now[:notice] = t('create.success.page')
|
||||
respond_to do |format|
|
||||
format.html {
|
||||
redirect_to admin_page_url(@item)
|
||||
}
|
||||
format.js {}
|
||||
format.js { render 'admin/items/reload_items' }
|
||||
end
|
||||
else
|
||||
flash.now[:error] = t('create.error.page')
|
||||
@@ -178,40 +134,64 @@ include Admin::FrontendWidgetInterface
|
||||
if @item.update_attributes(params[:page])
|
||||
flash[:notice] = t('update.success.page')
|
||||
respond_to do |format|
|
||||
format.html {
|
||||
redirect_to admin_page_url(@item)
|
||||
}
|
||||
format.js {}
|
||||
format.js { render 'admin/items/reload_items' }
|
||||
end
|
||||
else
|
||||
get_variables_for_edit
|
||||
render :action => "edit"
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
@item = Page.find(params[:id])
|
||||
@item.destroy
|
||||
respond_to do |format|
|
||||
format.html {
|
||||
redirect_to admin_items_url( :parent_id => @item.parent_id )
|
||||
}
|
||||
format.js { redirect_to admin_items_url }
|
||||
end
|
||||
end
|
||||
|
||||
def delete
|
||||
@item = Page.find(params[:id])
|
||||
@item.destroy
|
||||
respond_to do |format|
|
||||
format.html {}
|
||||
format.js { @item = @item.parent }
|
||||
end
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def get_frontend_styles
|
||||
has_old_value = @selected[:module_app].app_pages[@selected[:app_frontend_url]]
|
||||
@frontend_styles = has_old_value ? has_old_value["style"] : (@selected[:module_app].app_pages.first[1]["style"] rescue nil)
|
||||
end
|
||||
|
||||
def get_variables_for_new
|
||||
@designs = Design.all.entries
|
||||
@themes = Design.first.themes
|
||||
@module_apps = ModuleApp.for_frontend_select
|
||||
@app_frontend_urls = nil
|
||||
@categories = nil
|
||||
@tags = nil
|
||||
@page_frontend_data_counts = nil
|
||||
@frontend_styles = nil
|
||||
@selected={
|
||||
:design => @designs.first,
|
||||
:theme=> @themes.first,
|
||||
:module_app=>nil,#@module_apps.first
|
||||
:app_frontend_url=> nil, #@module_apps.first
|
||||
:category=>nil,
|
||||
:tag=>nil,
|
||||
:page_frontend_data_count=>nil,
|
||||
:frontend_style => nil
|
||||
}
|
||||
end
|
||||
|
||||
def get_variables_for_edit
|
||||
@designs = Design.all.entries
|
||||
@themes = @item.design ? @item.design.themes : @designs.first.themes
|
||||
@module_apps = ModuleApp.for_frontend_select
|
||||
@categories = nil
|
||||
@tags = nil
|
||||
@page_frontend_data_counts = nil
|
||||
@frontend_styles = nil
|
||||
|
||||
@selected={
|
||||
:design => @item.design || @designs.first,
|
||||
:theme=> @item.theme,
|
||||
:module_app=>@item.module_app,#@module_apps.first
|
||||
:app_frontend_url=> @item.app_frontend_url, #@module_apps.first
|
||||
:category=>nil, #fetch by method: get_categories_and_tags
|
||||
:tag=>nil, #fetch by method: get_categories_and_tags
|
||||
:page_frontend_data_count=>nil,
|
||||
:frontend_style => nil
|
||||
}
|
||||
@app_frontend_urls = @item.module_app ? select_array_for_app_frontend_urls(@item.module_app.app_pages) : nil
|
||||
get_categories_and_tags
|
||||
get_frontend_data_count
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,6 +1,6 @@
|
||||
class Admin::PluginsController < ApplicationController
|
||||
|
||||
layout "new_admin"
|
||||
layout "back_end"
|
||||
|
||||
def index
|
||||
|
||||
|
||||
@@ -3,8 +3,6 @@ class Admin::PurchasesController < OrbitBackendController
|
||||
require "uri"
|
||||
require 'zip/zip'
|
||||
|
||||
layout "new_admin"
|
||||
|
||||
def index
|
||||
@purchases = Purchase.all.entries
|
||||
end
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
class Admin::RolesController < OrbitBackendController
|
||||
|
||||
layout "new_admin"
|
||||
before_filter :authenticate_user!
|
||||
before_filter :is_admin?
|
||||
before_filter :set_attribute, :only => [:index, :show, :new, :edit, :role_field, :sub_role, :add_sub_role, :edit_sub_role, :sub_role_field]
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
class SessionsController < Devise::SessionsController
|
||||
|
||||
def create
|
||||
debugger
|
||||
super
|
||||
reset_session
|
||||
end
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
class Admin::SitesController < OrbitBackendController
|
||||
|
||||
layout "new_admin"
|
||||
before_filter :authenticate_user!
|
||||
before_filter :is_admin?
|
||||
before_filter :get_site
|
||||
|
||||
@@ -1,47 +1,92 @@
|
||||
class Admin::TagsController < OrbitBackendController
|
||||
before_filter :force_order_for_visitor,:only=>[:index]
|
||||
before_filter :force_order_for_user,:except => [:index]
|
||||
before_filter :for_app_sub_manager,:except => [:index]
|
||||
# before_filter :set_module_app
|
||||
include OrbitTag::Merging
|
||||
|
||||
before_filter :force_order_for_visitor, only: [:index]
|
||||
before_filter :force_order_for_user, except: [:index]
|
||||
|
||||
def index
|
||||
@tags = get_tags
|
||||
@tags = @module_app.module_tags
|
||||
@module_apps = ModuleApp.where(has_tag: true)
|
||||
end
|
||||
|
||||
def new
|
||||
|
||||
@tag = ModuleTag.new
|
||||
render layout: false
|
||||
end
|
||||
|
||||
def edit
|
||||
@tag = Tag.find(params[:id])
|
||||
@tag = ModuleTag.find(params[:id])
|
||||
render layout: false
|
||||
end
|
||||
|
||||
def create
|
||||
@tag = @module_app ? @module_app.tags.create(params[:tag]) : Tag.create(params[:tag])
|
||||
@tag = @module_app.module_tags.build(params[:module_tag].merge(is_default: true))
|
||||
if @tag.save
|
||||
redirect_to admin_tags_url
|
||||
else
|
||||
@tag = Tag.new(params[:module_tag])
|
||||
flash.now[:error] = t('create.error.tag')
|
||||
render :action => "new"
|
||||
end
|
||||
end
|
||||
|
||||
def update
|
||||
@tag = Tag.find(params[:id])
|
||||
@tag.update_attributes(params[:tag])
|
||||
@tag = ModuleTag.find(params[:id])
|
||||
if @tag.update_attributes(params[:module_tag])
|
||||
redirect_to action: :index
|
||||
else
|
||||
flash.now[:error] = t('update.error.tag')
|
||||
render :action => "edit"
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
@tag = Tag.find(params[:id])
|
||||
@tag.destroy
|
||||
respond_to do |format|
|
||||
format.js { render 'js/remove_element', :locals => {:id => "#{dom_id @tag}"} }
|
||||
def add_to_default
|
||||
module_tags = ModuleTag.find(params[:ids].split(',')) rescue nil
|
||||
if module_tags
|
||||
module_tags.each do |module_tag|
|
||||
module_tag.update_attribute(:is_default, true)
|
||||
clone_tag_to_default(module_tag)
|
||||
end
|
||||
end
|
||||
redirect_to admin_tags_url
|
||||
end
|
||||
|
||||
def delete_tags
|
||||
tags = ModuleTag.find(params[:ids].split(',')) rescue nil
|
||||
if tags
|
||||
tags.each(&:destroy)
|
||||
end
|
||||
redirect_to admin_tags_url
|
||||
end
|
||||
|
||||
def merge
|
||||
module_tags = ModuleTag.find(params[:ids])
|
||||
tags = module_tags.map{|t| t.tag}
|
||||
taggings, is_default = tags.inject([[], []]) do |values, tag|
|
||||
values[0] << tag.taggings
|
||||
values[1] << tag.is_default
|
||||
values
|
||||
end
|
||||
taggings.flatten!
|
||||
is_default.uniq!
|
||||
name = params[:name]
|
||||
module_app_ids = module_tags.map{|t| t.module_app_id}.flatten.uniq
|
||||
if is_default.size == 1 && is_default[0] == true
|
||||
merge_default_tags(name, module_tags)
|
||||
elsif is_default.include?(true) || module_app_ids.count > 1
|
||||
merge_with_default_tags(name, module_tags)
|
||||
else
|
||||
merge_tags(name, taggings, module_app_ids[0])
|
||||
module_tags.each(&:destroy)
|
||||
end
|
||||
redirect_to admin_tags_url
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def get_tags
|
||||
@tags = @module_app.blank? ? Tag.all : @module_app.tags
|
||||
end
|
||||
|
||||
def setup_vars
|
||||
@module_app = ModuleApp.find(params[:module_app_id]) if params[:module_app_id]
|
||||
@module_app_id = @module_app.id rescue nil
|
||||
@app_title ||= controller_path.split('/')[1].singularize
|
||||
@module_app ||= ModuleApp.first(conditions: {:key => @app_title} )
|
||||
raise ModuleAppError, 'Can not find ModuleApp' if @module_app.nil?
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,6 +1,6 @@
|
||||
class Admin::TemplateStoreController < ApplicationController
|
||||
|
||||
layout "new_admin"
|
||||
layout "back_end"
|
||||
|
||||
def index
|
||||
@templates = JSON.parse(get_templates)
|
||||
|
||||
@@ -2,7 +2,6 @@ class Admin::UsersNewInterfaceController < OrbitBackendController
|
||||
|
||||
helper MemberHelper
|
||||
|
||||
layout "new_admin"
|
||||
# before_filter :authenticate_user!
|
||||
# before_filter :set_attribute, :only => [:index, :show, :new, :edit]
|
||||
|
||||
|
||||
@@ -144,13 +144,15 @@ class ApplicationController < ActionController::Base
|
||||
if LIST[:forbidden_item_names].include?(env['PATH_INFO'].split('/')[1].to_s)
|
||||
condition = VALID_LOCALES.include?(session[:locale])
|
||||
elsif session[:locale]
|
||||
condition = @site_in_use_locales.include?(session[:locale])
|
||||
condition = @site.in_use_locales.include?(session[:locale])
|
||||
else
|
||||
browser_locale = request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first rescue nil
|
||||
condition = @site_in_use_locales.include?(browser_locale)
|
||||
condition = @site.in_use_locales.include?(browser_locale)
|
||||
end
|
||||
session[:locale] = condition ? (browser_locale || session[:locale]) : I18n.default_locale.to_s
|
||||
I18n.locale = session[:locale].to_sym
|
||||
@site_in_use_locales = site_locales_default_head(@site.in_use_locales)
|
||||
@site_valid_locales = site_locales_default_head(@site.valid_locales)
|
||||
end
|
||||
|
||||
# Set the site variables
|
||||
@@ -158,8 +160,6 @@ class ApplicationController < ActionController::Base
|
||||
# set site if exist or create site
|
||||
@site = Site.first || Site.create({:valid_locales => VALID_LOCALES, :in_use_locales => VALID_LOCALES})
|
||||
session[:site] = @site.id
|
||||
@site_in_use_locales = site_locales_default_head(@site.in_use_locales)
|
||||
@site_valid_locales = site_locales_default_head(@site.valid_locales)
|
||||
end
|
||||
|
||||
def set_current_item
|
||||
@@ -229,140 +229,99 @@ class ApplicationController < ActionController::Base
|
||||
redirect_to ret
|
||||
end
|
||||
|
||||
def get_sorted_and_filtered(object_class, query = nil, objects = nil)
|
||||
objects ||= get_objects(object_class, query)
|
||||
object_class = object_class.classify.constantize
|
||||
if !params[:sort].blank?
|
||||
options = params[:sort_options]
|
||||
options = [options] if !options.class.eql?(Array)
|
||||
options.each do |option|
|
||||
if object_class.fields.include?(option)
|
||||
if object_class.fields[option].type.to_s.eql?('Object') && !object_class.relations[option].nil?
|
||||
objects = get_objects_from_referenced_objects(object_class.fields[option].options[:class_name].constantize, objects, option)
|
||||
else
|
||||
(objects = objects.order_by(option, params[:direction])) rescue nil
|
||||
end
|
||||
elsif object_class.relations.include?(option)
|
||||
case object_class.relations[option].macro
|
||||
when :references_one
|
||||
a = Array.new
|
||||
objects.each { |object| a << [get_string_value_from_object(object), object] }
|
||||
sorted = params[:direction].eql?('asc') ? a.sort : a.sort.reverse!
|
||||
objects = sorted.collect {|x| x[1] }
|
||||
when :references_many, :references_and_referenced_in_many
|
||||
objects = get_objects_from_self(object_class, objects, option)
|
||||
when :referenced_in
|
||||
objects = get_objects_from_referenced_objects(object_class.relations[option].class_name.constantize, objects, "#{option}_id")
|
||||
end
|
||||
elsif option.eql?('tags')
|
||||
tag_array = @module_app.tags.inject([]){ |result, value|
|
||||
result << [value.name, value]
|
||||
}
|
||||
params[:direction].eql?('asc') ? tag_array.sort : tag_array.sort.reverse!
|
||||
sorted_objects = Array.new
|
||||
tag_array.each do |x|
|
||||
taggings = x[1].taggings
|
||||
taggings.each {|tagging| sorted_objects << tagging.taggable }
|
||||
end
|
||||
# debugger
|
||||
sorted_objects.flatten!
|
||||
sorted_objects.uniq!
|
||||
objects = get_with_nil(objects, option, sorted_objects)
|
||||
def get_sorted_and_filtered(object_class, query=nil)
|
||||
if params[:filter] || params[:sort] || params[:new_filter]
|
||||
@filter = params[:filter]
|
||||
new_filter = params[:new_filter]
|
||||
|
||||
if @filter && params[:clear]
|
||||
@filter.delete(params[:type])
|
||||
elsif @filter && new_filter
|
||||
if @filter.has_key?(new_filter[:type]) && @filter[new_filter[:type]].include?(new_filter[:id].to_s)
|
||||
@filter[new_filter[:type]].delete(new_filter[:id].to_s)
|
||||
elsif @filter.has_key?(new_filter[:type])
|
||||
@filter[new_filter[:type]] << new_filter[:id].to_s
|
||||
else
|
||||
@filter.merge!({new_filter[:type] => [new_filter[:id].to_s]})
|
||||
end
|
||||
elsif new_filter
|
||||
@filter = {new_filter[:type] => [new_filter[:id].to_s]}
|
||||
end
|
||||
|
||||
objects = get_objects(object_class, query)
|
||||
object_class = object_class.classify.constantize
|
||||
if !params[:sort].blank?
|
||||
options = params[:sort_options]
|
||||
options = [options] if !options.class.eql?(Array)
|
||||
options.each do |option|
|
||||
if object_class.fields.include?(option)
|
||||
if object_class.fields[option].type.to_s.eql?('Object') && !object_class.relations[option].nil?
|
||||
objects = get_objects_from_referenced_objects(object_class.fields[option].options[:class_name].constantize, objects, option)
|
||||
else
|
||||
(objects = objects.order_by(option, params[:direction])) rescue nil
|
||||
end
|
||||
elsif object_class.relations.include?(option)
|
||||
case object_class.relations[option].macro
|
||||
when :references_one
|
||||
a = Array.new
|
||||
objects.each { |object| a << [get_string_value_from_object(object), object] }
|
||||
sorted = params[:direction].eql?('asc') ? a.sort : a.sort.reverse!
|
||||
objects = sorted.collect {|x| x[1] }
|
||||
when :references_many, :references_and_referenced_in_many
|
||||
objects = get_objects_from_self(object_class, objects, option)
|
||||
when :referenced_in
|
||||
objects = get_objects_from_referenced_objects(object_class.relations[option].class_name.constantize, objects, "#{option}_id")
|
||||
end
|
||||
elsif option.eql?('tags')
|
||||
tag_array = @module_app.tags.inject([]){ |result, value|
|
||||
result << [value.name, value]
|
||||
}
|
||||
params[:direction].eql?('asc') ? tag_array.sort! : tag_array.sort!.reverse!
|
||||
sorted_objects = Array.new
|
||||
tag_array.each do |x|
|
||||
taggings = x[1].taggings
|
||||
taggings.each {|tagging| sorted_objects << tagging.taggable }
|
||||
end
|
||||
sorted_objects.flatten!
|
||||
sorted_objects.uniq!
|
||||
objects = get_with_nil(objects, option, sorted_objects)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if @filter
|
||||
@filter.each do |key, value|
|
||||
case key
|
||||
when 'status'
|
||||
a = Array.new
|
||||
objects.each do |object|
|
||||
value.each do |v|
|
||||
a << object if object[v]
|
||||
if @filter
|
||||
@filter.each do |key, value|
|
||||
case key
|
||||
when 'status'
|
||||
a = Array.new
|
||||
objects.each do |object|
|
||||
value.each do |v|
|
||||
a << object if object[v]
|
||||
end
|
||||
end
|
||||
end
|
||||
objects = a.uniq
|
||||
when 'categories'
|
||||
a = Array.new
|
||||
objects.each do |object|
|
||||
a << object if (value.include?(object.send("#{object.class.to_s.underscore}_category").id.to_s) rescue nil)
|
||||
end
|
||||
objects = a.uniq
|
||||
when 'tags'
|
||||
a = Array.new
|
||||
objects.each do |object|
|
||||
object.tags.each do |tag|
|
||||
a << object if value.include?(tag.id.to_s)
|
||||
objects = a.uniq
|
||||
when 'category'
|
||||
a = Array.new
|
||||
objects.each do |object|
|
||||
a << object if (value.include?(object.category.id.to_s) rescue nil)
|
||||
end
|
||||
end
|
||||
objects = a.uniq
|
||||
end if value.size > 0
|
||||
objects = a.uniq
|
||||
when 'tag'
|
||||
a = Array.new
|
||||
objects.each do |object|
|
||||
object.tags.each do |tag|
|
||||
a << object if value.include?(tag.id.to_s)
|
||||
end
|
||||
end
|
||||
objects = a.uniq
|
||||
end if value.size > 0
|
||||
end
|
||||
end
|
||||
else
|
||||
objects = get_viewable(object_class, query)
|
||||
end
|
||||
Kaminari.paginate_array(filter_authorized_objects(objects)).page(params[:page]).per(10)
|
||||
end
|
||||
|
||||
def get_viewable(object_class, query=nil)
|
||||
objects = get_objects(object_class,query).order_by(:created_at, :desc)
|
||||
Kaminari.paginate_array(objects).page(params[:page]).per(10)
|
||||
end
|
||||
|
||||
def get_objects(object_class, query=nil)
|
||||
object_class = object_class.classify.constantize
|
||||
# debugger
|
||||
# a=1
|
||||
if query
|
||||
if object_class.include?(Mongoid::Sortable)
|
||||
objects = object_class.default_sort(params[:sort]).where(query)
|
||||
else
|
||||
objects = object_class.where(query)
|
||||
end
|
||||
else
|
||||
if object_class.include?(Mongoid::Sortable)
|
||||
objects = object_class.default_sort(params[:sort]).all
|
||||
else
|
||||
objects = object_class.all
|
||||
end
|
||||
end
|
||||
objects
|
||||
end
|
||||
|
||||
def get_objects_from_referenced_objects(object_class, objects, option)
|
||||
referer_ids = objects.distinct(option)
|
||||
referenced_objects = object_class.find(referer_ids) rescue nil
|
||||
if referenced_objects
|
||||
a = Array.new
|
||||
referenced_objects.to_a.each { |referer| a << [get_string_value_from_object(referer), referer.id] }
|
||||
sorted = params[:direction].eql?('asc') ? a.sort : a.sort.reverse!
|
||||
sorted_objects = sorted.collect {|x| objects.where(option => x[1]).entries }
|
||||
sorted_objects.flatten!
|
||||
sorted_objects.uniq!
|
||||
get_with_nil(objects, option, sorted_objects)
|
||||
else
|
||||
objects
|
||||
end
|
||||
end
|
||||
|
||||
def get_objects_from_self(object_class, objects, option)
|
||||
referenced_class = object_class.relations[option].class_name.constantize
|
||||
referenced_objects = referenced_class.all rescue nil
|
||||
if referenced_objects
|
||||
reverse_relation = nil
|
||||
referenced_class.relations.each { |relation| reverse_relation = relation[1].name.to_s if relation[1].class_name.eql?(object_class.to_s) }
|
||||
a = Array.new
|
||||
referenced_objects.each { |referenced_object| a << [get_string_value_from_object(referenced_object), referenced_object] }
|
||||
a.compact!
|
||||
sorted = params[:direction].eql?('asc') ? a.sort : a.sort.reverse!
|
||||
sorted_objects = Array.new
|
||||
sorted.each {|x| sorted_objects << x[1].send(reverse_relation) }
|
||||
sorted_objects.flatten!
|
||||
sorted_objects.uniq!
|
||||
get_with_nil(objects, option, sorted_objects)
|
||||
else
|
||||
objects
|
||||
end
|
||||
end
|
||||
|
||||
def get_string_value_from_object(object)
|
||||
s = object.name_translations[I18n.locale.to_s] unless s rescue nil
|
||||
s = object.title_translations[I18n.locale.to_s] unless s rescue nil
|
||||
@@ -371,16 +330,66 @@ class ApplicationController < ActionController::Base
|
||||
s.downcase rescue ''
|
||||
end
|
||||
|
||||
def get_objects_from_referenced_objects(object_class, objects, option)
|
||||
referer_ids = objects.distinct(option)
|
||||
referenced_objects = object_class.find(referer_ids) rescue nil
|
||||
if referenced_objects
|
||||
a = Array.new
|
||||
referenced_objects.to_a.each { |referer| a << [get_string_value_from_object(referer), referer.id] }
|
||||
sorted = params[:direction].eql?('asc') ? a.sort : a.sort.reverse!
|
||||
sorted_objects = sorted.collect {|x| objects.where(option => x[1]).entries }
|
||||
sorted_objects.flatten!
|
||||
sorted_objects.uniq!
|
||||
get_with_nil(objects, option, sorted_objects)
|
||||
else
|
||||
objects
|
||||
end
|
||||
end
|
||||
|
||||
def get_objects_from_self(object_class, objects, option)
|
||||
referenced_class = object_class.relations[option].class_name.constantize
|
||||
referenced_objects = referenced_class.all rescue nil
|
||||
if referenced_objects
|
||||
reverse_relation = nil
|
||||
referenced_class.relations.each { |relation| reverse_relation = relation[1].name.to_s if relation[1].class_name.eql?(object_class.to_s) }
|
||||
a = Array.new
|
||||
referenced_objects.each { |referenced_object| a << [get_string_value_from_object(referenced_object), referenced_object] }
|
||||
a.compact!
|
||||
sorted = params[:direction].eql?('asc') ? a.sort : a.sort.reverse!
|
||||
sorted_objects = Array.new
|
||||
sorted.each {|x| sorted_objects << x[1].send(reverse_relation) }
|
||||
sorted_objects.flatten!
|
||||
sorted_objects.uniq!
|
||||
get_with_nil(objects, option, sorted_objects)
|
||||
else
|
||||
objects
|
||||
end
|
||||
end
|
||||
|
||||
def get_with_nil(objects, option, sorted_objects)
|
||||
tmp = Array.new
|
||||
tmp = Array.new
|
||||
objects.each { |object| tmp << [get_string_value_from_object(object), object] if (object.send(option).blank? || (object.send(option).size == 0 rescue nil)) }
|
||||
sorted = params[:direction].eql?('asc') ? tmp.sort : tmp.sort.reverse!
|
||||
sorted = params[:direction].eql?('asc') ? tmp.sort : tmp.sort.reverse
|
||||
sorted_tmp = sorted.collect {|a| a[1] }
|
||||
a = params[:direction].eql?('asc') ? (sorted_tmp + sorted_objects) : (sorted_objects + sorted_tmp)
|
||||
a.flatten
|
||||
end
|
||||
|
||||
|
||||
def get_viewable(object_class, query=nil)
|
||||
get_objects(object_class,query).order_by(:created_at, :desc)
|
||||
end
|
||||
|
||||
def get_objects(object_class, query=nil)
|
||||
object_class = object_class.classify.constantize
|
||||
if query
|
||||
objects = object_class.where(query)
|
||||
else
|
||||
objects = object_class.all
|
||||
end
|
||||
objects
|
||||
end
|
||||
|
||||
def filter_authorized_objects(objects)
|
||||
if(!is_admin? || !is_manager?)
|
||||
objects.delete_if{ |object|
|
||||
@@ -388,11 +397,11 @@ class ApplicationController < ActionController::Base
|
||||
if check_permission(:manager)
|
||||
object.create_user_id != current_user.id
|
||||
else
|
||||
!object.send("#{object.class.to_s.underscore}_category").authed_users('fact_check').include?(current_user) rescue false
|
||||
!object.category.authed_users('fact_check').include?(current_user) rescue false
|
||||
end
|
||||
else
|
||||
false
|
||||
end
|
||||
end
|
||||
}
|
||||
end
|
||||
objects
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
class OrbitBackendController < ApplicationController
|
||||
include OrbitCategory::Categorizing
|
||||
include OrbitCoreLib::AppBackendUtility
|
||||
include OrbitCoreLib::PermissionUtility
|
||||
include OrbitTag::Tagging
|
||||
include AdminHelper
|
||||
include ApplicationHelper
|
||||
|
||||
layout 'new_admin'
|
||||
helper :default_index
|
||||
|
||||
layout "back_end"
|
||||
|
||||
def setup_vars
|
||||
@app_title ||= controller_path.split('/')[1].singularize
|
||||
@@ -13,6 +16,17 @@ class OrbitBackendController < ApplicationController
|
||||
raise ModuleAppError, 'Can not find ModuleApp' if @module_app.nil?
|
||||
end
|
||||
|
||||
def get_statuses
|
||||
status = []
|
||||
status << 'is_top'
|
||||
status << 'is_hot'
|
||||
status << 'is_hidden' unless is_guest?
|
||||
status << 'is_pending' if is_manager?
|
||||
status << 'is_checked' if is_manager?
|
||||
status << 'is_rejected' if is_manager?
|
||||
status
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def force_order_for_visitor
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
class OrbitFrontendComponentController< ApplicationController
|
||||
include OrbitCategory::Categorizing
|
||||
before_filter :setup_vars
|
||||
before_filter {|c| c.front_end_available(@app_title)}
|
||||
layout "module_widget"
|
||||
|
||||
def setup_vars
|
||||
@app_title = request.fullpath.split('/')[2]
|
||||
@module_app ||= ModuleApp.first(conditions: {:key => @app_title} )
|
||||
end
|
||||
|
||||
end
|
||||
Reference in new issue
Block a user