add custom field feature and fix some error

This commit is contained in:
chiu committed 2020-03-21 23:36:33 +08:00
1 parent 262a78f602
commit f3bd5f4941
17 files changed
+1116 -65

No files matched your search

+45 -4
View File
@@ -1,9 +1,12 @@
# encoding: utf-8
class Admin::AsksController < OrbitAdminController
include Admin::AsksHelper
helper Admin::AsksHelper
before_action ->(module_app = @app_title) { set_variables module_app }
before_action :set_askquestion, only: [:edit, :destroy, :update]
layout :compute_layout
def compute_layout
'back_end_with_jquery_first'
end
def initialize
super
@app_title = "ask"
@@ -26,7 +29,24 @@ class Admin::AsksController < OrbitAdminController
params[:filters][:identity].blank? ? [] : params[:filters][:identity] rescue []
end
end
def setting_save
ask_setting = AskSetting.first
p1 = ask_setting_params
ask_setting.update_attributes(p1)
redirect_to '/admin/asks'
end
def setting
@ask_setting = AskSetting.first
@ask_setting = AskSetting.create() if @ask_setting.nil?
@url = setting_save_admin_asks_path
end
def get_new_setting_index
ask_setting_index = AskSettingIndex.first
ask_setting_index = AskSettingIndex.create() if ask_setting_index.nil?
ask_setting_index.key = ask_setting_index.key + 1
ask_setting_index.save
render :json => {key: ask_setting_index.key.to_i}
end
def index
@tags = @module_app.tags
@categories = @module_app.categories
@@ -74,7 +94,8 @@ class Admin::AsksController < OrbitAdminController
end
def update
@ask_question.update_attributes(params.require(:ask_question).permit!)
ask_question_param = params.require(:ask_question).permit!
@ask_question.update_attributes(ask_question_param)
if @ask_question.send_email?
build_email(@ask_question)
end
@@ -149,4 +170,24 @@ class Admin::AsksController < OrbitAdminController
def set_askquestion
@ask_question = AskQuestion.find(params[:id])
end
private
def ask_setting_params
param = params.require('ask_setting').permit!
param_clone = param.clone
param_clone['default_setting'].each { |k, v| param_clone['default_setting'][k] = (v == 'true'? true : false) }
param_clone.delete('custom_fields')
ask_setting = AskSetting.first
custom_fields = ask_setting['custom_fields'].clone
params_custom_fields = (params.require('ask_setting').require('custom_fields') rescue {})
params_custom_fields.each do |k,v|
custom_fields[k] = v
end
field_to_delete = params['delete_field'].to_s.split(',').select{|v| !v.empty?}
field_to_delete.each do |k|
if custom_fields.keys.include? k
custom_fields[k]['delete'] = true
end
end
param_clone.merge({custom_fields: custom_fields})
end
end
+4 -2
View File
@@ -1,4 +1,5 @@
class AsksController < ApplicationController
helper Admin::AsksHelper
def initialize
super
@app_title = 'ask'
@@ -6,7 +7,8 @@ class AsksController < ApplicationController
def index
module_app = ModuleApp.where(:key => "ask").first
categories = module_app.categories
categories = Array(Category.find(OrbitHelper.page_categories)) rescue ['all']
categories = module_app.categories if categories.include? 'all'
tags = module_app.tags
ask_question = AskQuestion.new
{
@@ -19,7 +21,7 @@ class AsksController < ApplicationController
def create
@ask_question = AskQuestion.new(create_params)
if gotcha_valid? && @ask_question.save
if (gotcha_valid? || !AskSetting.first.default_setting['recaptcha'])&& @ask_question.save
build_email(@ask_question)
redirect_to "#{params[:referer_url]}/?method=thank"
else