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:
chris committed 2013-07-02 16:46:44 +08:00
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
+31 -6
View File
@@ -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]
+16 -6
View File
@@ -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])
+4 -28
View File
@@ -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
+62 -82
View File
@@ -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 -1
View File
@@ -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
+67 -22
View File
@@ -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]
+142 -133
View File
@@ -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
+15 -1
View File
@@ -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