Add order fields for cateogies setting.

This commit is contained in:
BoHung Chiu 2022-03-26 12:33:49 +08:00
parent ffff41153c
commit ec1ff2051a
4 changed files with 65 additions and 15 deletions

View File

@ -386,10 +386,22 @@ class Admin::AsksController < OrbitAdminController
@ask_question = AskQuestion.find(params[:id]) @ask_question = AskQuestion.find(params[:id])
end end
def order_fields def order_fields
@disp_fields_infos = AskSetting.get_disp_fields_infos @disp_fields_infos = AskSetting.get_disp_fields_infos(params[:category])
end end
def update_order_fields def update_order_fields
AskSetting.update_all(:sort_number=>params[:sort_number]) if params[:category]
ask_setting = AskCategorySetting.where(:category_id=>params[:category]).first
if ask_setting.nil?
default_setting = AskSetting.first
default_setting = AskSetting.create if default_setting.nil?
ask_setting = AskCategorySetting.create(category_id: params[:category])
p1 = default_setting.get_attrs
ask_setting.update_attributes(p1)
end
ask_setting.update(:sort_number=>params[:sort_number])
else
AskSetting.update_all(:sort_number=>params[:sort_number])
end
render :json => {:success=>true} render :json => {:success=>true}
end end
private private

View File

@ -115,7 +115,11 @@ class AsksController < ApplicationController
if @layout_type == 'index' if @layout_type == 'index'
module_app = ModuleApp.where(:key => "ask").first module_app = ModuleApp.where(:key => "ask").first
categories = Array(Category.find(OrbitHelper.page_categories)) rescue ['all'] categories = Array(Category.find(OrbitHelper.page_categories)) rescue ['all']
categories = module_app.categories if categories.include? 'all' if categories.include? 'all'
categories = module_app.categories.enabled
else
categories = categories & module_app.categories.enabled
end
ask_settings = AskCategorySetting.where(:category_id.in=> categories.collect{|v| v.id.to_s}).to_a ask_settings = AskCategorySetting.where(:category_id.in=> categories.collect{|v| v.id.to_s}).to_a
if ask_settings.count != categories.count if ask_settings.count != categories.count
ask_settings = [AskSetting.first]+ask_settings ask_settings = [AskSetting.first]+ask_settings
@ -251,7 +255,7 @@ class AsksController < ApplicationController
end end
private private
def cal_form_from_setting(ask_setting,categories,show_categories=false,filter_fields=nil) def cal_form_from_setting(ask_setting,categories,show_categories=false,filter_fields=nil)
disp_fields_infos = AskSetting.get_disp_fields_infos disp_fields_infos = AskSetting.get_disp_fields_infos(ask_setting.class == AskCategorySetting ? ask_setting.category_id : nil)
if filter_fields if filter_fields
disp_fields_infos = disp_fields_infos.select{|field, info| filter_fields.include?(field)} disp_fields_infos = disp_fields_infos.select{|field, info| filter_fields.include?(field)}
end end
@ -261,12 +265,10 @@ class AsksController < ApplicationController
tmp_ask_cat_id = (tmp_type == 1) ? ask_setting.id.to_s : "" tmp_ask_cat_id = (tmp_type == 1) ? ask_setting.id.to_s : ""
disp_fields_infos.each do |field, info| disp_fields_infos.each do |field, info|
if field.include?("default@") if field.include?("default@")
if tmp_type == 0 k = field[8..-1]
k = field[8..-1] v = ask_setting.custom_fields[k]
v = ask_setting.custom_fields[k] if v
if v defalt_fields << {'label'=>ask_label(v['field'][I18n.locale],v['required']),'content'=>show_on_front(k,v)}
defalt_fields << {'label'=>ask_label(v['field'][I18n.locale],v['required']),'content'=>show_on_front(k,v)}
end
end end
elsif field.include?("custom@") && tmp_ask_cat_id != "" elsif field.include?("custom@") && tmp_ask_cat_id != ""
if tmp_type == 1 && field.include?(tmp_ask_cat_id) if tmp_type == 1 && field.include?(tmp_ask_cat_id)

View File

@ -41,9 +41,22 @@ class AskSetting
field :custom_fields, type: Hash,default: {} field :custom_fields, type: Hash,default: {}
field :usage_rule field :usage_rule
def get_attrs
def self.get_disp_fields_infos attrs = self.attributes.clone
ask_setting = self.first self.fields.each do |k, v|
if (v.options[:localize] rescue false)
attrs["#{k}_translations"] = attrs[k]
attrs.delete(k)
end
end
attrs.except("_type","_id","uid","updated_at", "created_at")
end
def self.get_disp_fields_infos(cat=nil)
ask_setting = nil
if cat.present?
ask_setting = AskCategorySetting.where(:category_id=>cat).first
end
ask_setting = self.first if ask_setting.nil?
ask_setting = self.create() if ask_setting.nil? ask_setting = self.create() if ask_setting.nil?
disp_fields = self::All_default_fields disp_fields = self::All_default_fields
disp_fields_infos = {} disp_fields_infos = {}
@ -62,7 +75,13 @@ class AskSetting
tmp_k = "default@#{k}" tmp_k = "default@#{k}"
disp_fields_infos[tmp_k] = {"trans"=>trans,"sort_number"=>ask_setting.sort_number[tmp_k]} disp_fields_infos[tmp_k] = {"trans"=>trans,"sort_number"=>ask_setting.sort_number[tmp_k]}
end end
AskCategorySetting.all.each do |c| ask_category_settings = []
if ask_setting.class == AskCategorySetting || cat.present?
ask_category_settings = []
else
ask_category_settings = AskCategorySetting.all.to_a
end
ask_category_settings.each do |c|
cat = Category.find(c.category_id) cat = Category.find(c.category_id)
c.custom_fields.each do |k,v| c.custom_fields.each do |k,v|
trans = v["field"] trans = v["field"]

View File

@ -11,6 +11,20 @@
background: aqua; background: aqua;
} }
</style> </style>
<div>
<form>
<%
cats = @module_app.categories.enabled
cats_relations = [["",t(:all)]] + cats.map{|c| [c.id.to_s, c.title]}
%>
<h4><%= t(:category) %></h4>
<select name="category" id="submit_when_change">
<% cats_relations.each do |id, title| %>
<option value="<%=id%>" <%= params[:category] == id ? 'selected' : '' %>><%= title %></option>
<% end %>
</select>
</form>
</div>
<div class="order-edit-notification"><%= t("ask.please_save") %></div> <div class="order-edit-notification"><%= t("ask.please_save") %></div>
<table width="100%" id="ask_fields_order_table" class="table table-striped" class="ask_fields_table"> <table width="100%" id="ask_fields_order_table" class="table table-striped" class="ask_fields_table">
<thead> <thead>
@ -119,7 +133,7 @@
}) })
$.ajax({ $.ajax({
url : "/admin/asks/update_order_fields", url : "/admin/asks/update_order_fields",
data : {"sort_number" : sort_number}, data : {"sort_number" : sort_number,"category": "<%=params[:category]%>"},
dataType : "json", dataType : "json",
type : "post" type : "post"
}).done(function(){ }).done(function(){
@ -135,6 +149,9 @@
<script> <script>
var th_width = {}; var th_width = {};
$(document).ready(function(){ $(document).ready(function(){
$("#submit_when_change").on("change",function(){
$(this)[0].form.submit();
})
$( ".table tbody" ).each(function(i,tbody){ $( ".table tbody" ).each(function(i,tbody){
var table = $(tbody).parents("table").eq(0); var table = $(tbody).parents("table").eq(0);
table.data("index",i); table.data("index",i);