From 4b86270725c8e3d5b2e523a28bbaa9058d702236 Mon Sep 17 00:00:00 2001 From: Harry Bomrah Date: Tue, 9 Dec 2014 21:25:51 +0800 Subject: [PATCH] some category disable improvements --- app/assets/javascripts/member-selection.js | 10 ++++++++++ app/controllers/orbit_admin_controller.rb | 8 ++++++++ app/controllers/page_parts_controller.rb | 4 ++-- app/controllers/pages_controller.rb | 12 +++++++++--- app/helpers/orbit_backend_helper.rb | 7 ++++++- app/views/admin/authorizations/index.html.erb | 2 ++ public/403.html | 18 ++++++++++++++++++ 7 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 public/403.html diff --git a/app/assets/javascripts/member-selection.js b/app/assets/javascripts/member-selection.js index 443dbeb..075afc8 100644 --- a/app/assets/javascripts/member-selection.js +++ b/app/assets/javascripts/member-selection.js @@ -58,10 +58,20 @@ $(document).ready(function() { $("#remove_users").removeClass("hide"); } } + var is_category_disabled = function(id){ + var obj = app_categories.filter(function(c){return c.id == id})[0]; + return obj.disable; + } $("select[name=anything]").on("change",function(){ + $(".select_user_modal").removeClass("hide"); + $("#disabled_message_span").addClass("hide"); var value_to_filter = $(this).val(); if(value_to_filter != ""){ + if(is_category_disabled(value_to_filter)){ + $(".select_user_modal").addClass("hide"); + $("#disabled_message_span").removeClass("hide"); + } lis.each(function(){ var categories = $(this).data("categories"); if(categories.indexOf(value_to_filter) == -1){ diff --git a/app/controllers/orbit_admin_controller.rb b/app/controllers/orbit_admin_controller.rb index 5e9aaac..c7e8636 100644 --- a/app/controllers/orbit_admin_controller.rb +++ b/app/controllers/orbit_admin_controller.rb @@ -4,6 +4,7 @@ class OrbitAdminController < ApplicationController include OrbitBackendHelper before_action :authenticate_user, :log_user_action, :load_authorized_categories + before_action :check_for_nil_categories, :only => [:new, :edit] layout "back_end" def sort @@ -81,4 +82,11 @@ class OrbitAdminController < ApplicationController @current_user_is_sub_manager = current_user.is_sub_manager?(@module_app) rescue false end + def check_for_nil_categories + @user_authorized_categories = @module_app.categories.enabled.authorized(current_user) + if @current_user_is_sub_manager && @user_authorized_categories.blank? + render_403 + end + end + end diff --git a/app/controllers/page_parts_controller.rb b/app/controllers/page_parts_controller.rb index dcfbc4a..d2d5eaf 100644 --- a/app/controllers/page_parts_controller.rb +++ b/app/controllers/page_parts_controller.rb @@ -41,7 +41,7 @@ class PagePartsController < ApplicationController app = ModuleApp.find_by_key(module_name) rescue nil app = OrbitWidget.find_by_key(module_name) if app.nil? - @categories = app.categories rescue [] + @categories = app.categories.enabled rescue [] @tags = app.tags rescue [] @widget_methods = app.widget_methods @widget_settings = app.widget_settings @@ -100,7 +100,7 @@ class PagePartsController < ApplicationController module_name = module_name.downcase.singularize app = ModuleApp.find_by_key(module_name) rescue nil app = OrbitWidget.find_by_key(module_name) if app.nil? - @categories = app.categories rescue [] + @categories = app.categories.enabled rescue [] @tags = app.tags rescue [] @widget_methods = app.widget_methods @widget_settings = app.widget_settings diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index fc39620..2b5bba7 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -75,11 +75,17 @@ class PagesController < ApplicationController end params[:url] = page.url + categories = page.categories.collect do |c| + if !c.disable + return c + end + end + categories = ["all"] if categories.blank? @manifest = @key OrbitHelper.set_params params,current_user OrbitHelper.set_site_locale locale OrbitHelper.set_this_module_app module_app.singularize - OrbitHelper.set_page_categories page.categories || [] + OrbitHelper.set_page_categories categories || ["all"] OrbitHelper.set_page_tags page.tags || [] OrbitHelper.set_page_role_status page.role_status || [] OrbitHelper.set_member_sort_position page.member_sort_position @@ -164,7 +170,7 @@ class PagesController < ApplicationController end else if !module_app.key.eql?("page_content") - categories = module_app.categories.collect do |cat| + categories = module_app.categories.enabled.collect do |cat| { "title" => cat.title, "id" => cat.id.to_s @@ -203,7 +209,7 @@ class PagesController < ApplicationController @pages = Page.where(:page_id.ne => "" , :page_id.exists => true) @modules = ModuleApp.all.frontend_enabled @module_app = ModuleApp.find_by_key(@page.module) rescue nil - @categories = @module_app.categories rescue [] + @categories = @module_app.categories.enabled rescue [] if @module_app.key.eql?("page_content") @categories = [] end diff --git a/app/helpers/orbit_backend_helper.rb b/app/helpers/orbit_backend_helper.rb index f7bc45c..304fa29 100644 --- a/app/helpers/orbit_backend_helper.rb +++ b/app/helpers/orbit_backend_helper.rb @@ -87,7 +87,8 @@ module OrbitBackendHelper def select_category(f, module_app) - render :partial => '/admin/categories/select_form', :locals => {:f=> f, :module_app=>module_app, :categories=>module_app.categories.enabled.authorized(current_user) } + @user_authorized_categories = module_app.categories.enabled.authorized(current_user) if @user_authorized_categories.nil? + render :partial => '/admin/categories/select_form', :locals => {:f=> f, :module_app=>module_app, :categories=> @user_authorized_categories } end def select_tags(f, module_app) @@ -193,6 +194,10 @@ module OrbitBackendHelper render "public/401" end + def render_403 + render "public/403" + end + def need_access_right render_401 if !has_access? end diff --git a/app/views/admin/authorizations/index.html.erb b/app/views/admin/authorizations/index.html.erb index b2f76ce..ccc06a6 100644 --- a/app/views/admin/authorizations/index.html.erb +++ b/app/views/admin/authorizations/index.html.erb @@ -51,6 +51,7 @@ + This category is disabled.