diff --git a/app/controllers/admin/asks_controller.rb b/app/controllers/admin/asks_controller.rb index ab1dc27..0207c36 100644 --- a/app/controllers/admin/asks_controller.rb +++ b/app/controllers/admin/asks_controller.rb @@ -1,6 +1,7 @@ # encoding: utf-8 class Admin::AsksController < OrbitAdminController helper Admin::AsksHelper + include Admin::AsksHelper before_action ->(module_app = @app_title) { set_variables module_app } before_action :set_askquestion, only: [:edit, :destroy, :update, :print] layout :compute_layout @@ -16,13 +17,26 @@ class Admin::AsksController < OrbitAdminController @app_title = "ask" end def print_setting - @set = AskPrintSetting.first + @set = nil + @cats_relations = get_categories_info + @category_id = (params[:category] || @cats_relations[0][0] rescue nil) + if @category_id.blank? + @set = AskPrintSetting.first + else + @set = AskCategoryPrintSetting.where(:category_id=>@category_id).first + @set = AskPrintSetting.first if @set.nil? + end @set = AskPrintSetting.create if @set.nil? @url = print_setting_save_admin_asks_path end def print_setting_save locale = I18n.locale - set = AskPrintSetting.first + if params[:ask_print_setting][:category_id].present? + set = AskCategoryPrintSetting.where(:category_id=>params[:ask_print_setting][:category_id]).first + set = AskCategoryPrintSetting.create(:category_id=>params[:ask_print_setting][:category_id]) if set.nil? + else + set = AskPrintSetting.first + end set.update_attributes(print_format: params[:ask_print_setting][:print_format],save_name: params[:ask_print_setting][:save_name]) redirect_to "/#{locale}/admin/asks" end @@ -89,7 +103,7 @@ class Admin::AsksController < OrbitAdminController @ask_setting = AskSetting.first @ask_setting = AskSetting.create() if @ask_setting.nil? @tags = @module_app.tags - @categories = @module_app.categories + @categories = @module_app.categories.enabled.sort_by{|category| (((module_app.asc rescue true) ? category.sort_number.to_i : -category.sort_number.to_i) rescue category.id)} @filter_fields = filter_fields(@categories, @tags) # 列表欄位 @table_fields = [:situation, :category, 'title' , 'ask.name', 'ask.phone', 'ask.appointment','ask.created_at'] @@ -125,9 +139,9 @@ class Admin::AsksController < OrbitAdminController end def category_setting @default_ask_setting = AskSetting.first - @categories = @module_app.categories - @category_ids = @categories.pluck(:id) - @category_titles = @categories.pluck(:title).collect{|v| v[I18n.locale]} + @categories = current_user.approved_categories_for_module(@module_app).sort_by{|category| (((module_app.asc rescue true) ? category.sort_number.to_i : -category.sort_number.to_i) rescue category.id)} + @category_ids = @categories.collect(&:id) + @category_titles = @categories.collect{|v| v.title} @category_added = AskCategorySetting.all.asc(:created_at) @category_added_ids = @category_added.pluck(:category_id) @@ -386,7 +400,9 @@ class Admin::AsksController < OrbitAdminController @ask_question = AskQuestion.find(params[:id]) end def order_fields - @disp_fields_infos = AskSetting.get_disp_fields_infos(params[:category]) + @cats_relations = get_categories_info + @category_id = (params[:category] || @cats_relations[0][0] rescue nil) + @disp_fields_infos = AskSetting.get_disp_fields_infos(@category_id) end def update_order_fields if params[:category] diff --git a/app/controllers/asks_controller.rb b/app/controllers/asks_controller.rb index 9264c58..2610e26 100644 --- a/app/controllers/asks_controller.rb +++ b/app/controllers/asks_controller.rb @@ -13,8 +13,12 @@ class AsksController < ApplicationController read_more_page = Page.where(id: subpart.read_more_page_id).first || Page.where(:module => 'ask').first referer_url = read_more_page ? "/#{I18n.locale}#{read_more_page.url}" : "/#{I18n.locale}/asks" module_app = ModuleApp.where(:key => "ask").first - categories = Array(Category.find(OrbitHelper.widget_categories)) rescue ['all'] - categories = module_app.categories if categories.include? 'all' + if OrbitHelper.widget_categories.include?('all') + categories = module_app.categories.enabled + else + categories = Category.where(:id.in=>OrbitHelper.widget_categories).enabled + end + categories = categories.sort_by{|category| (((module_app.asc rescue true) ? category.sort_number.to_i : -category.sort_number.to_i) rescue category.id)} tags = module_app.tags ask_question = AskQuestion.new locale = I18n.locale @@ -114,12 +118,12 @@ class AsksController < ApplicationController end if @layout_type == 'index' module_app = ModuleApp.where(:key => "ask").first - categories = Array(Category.find(OrbitHelper.page_categories)) rescue ['all'] - if categories.include? 'all' + if OrbitHelper.page_categories.include? 'all' categories = module_app.categories.enabled else - categories = categories & module_app.categories.enabled + categories = Category.where(:id.in=>OrbitHelper.page_categories).enabled end + categories = categories.sort_by{|category| (((module_app.asc rescue true) ? category.sort_number.to_i : -category.sort_number.to_i) rescue category.id)} if !(categories.include?("all")) ask_settings = AskCategorySetting.where(:category_id.in=> categories.collect{|v| v.id.to_s}).to_a if ask_settings.count != categories.count ask_settings = [AskSetting.first]+ask_settings diff --git a/app/helpers/admin/asks_helper.rb b/app/helpers/admin/asks_helper.rb index 67a4795..762c1e5 100644 --- a/app/helpers/admin/asks_helper.rb +++ b/app/helpers/admin/asks_helper.rb @@ -10,6 +10,20 @@ module Admin::AsksHelper extend ActionView::Helpers::UrlHelper extend OrbitFormHelper extend Ckeditor::Helpers::FormHelper + def get_categories_info + current_user = OrbitHelper.current_user + OrbitHelper.set_params(params,current_user) + OrbitHelper.set_this_module_app("ask") + cats_relations = [] + access_level = OrbitHelper.user_access_level? + if access_level == "sub_manager" + cats_relations = current_user.approved_categories_for_module(@module_app).map{|c| [c.id.to_s, c.title]} + else + cats = @module_app.categories.enabled + cats_relations = [["",t(:all)]] + cats.map{|c| [c.id.to_s, c.title]} + end + cats_relations + end def set_input_name(input_name) @input_name = input_name end diff --git a/app/views/admin/asks/order_fields.html.erb b/app/views/admin/asks/order_fields.html.erb index 5d2646c..263deea 100644 --- a/app/views/admin/asks/order_fields.html.erb +++ b/app/views/admin/asks/order_fields.html.erb @@ -13,14 +13,10 @@