diff --git a/app/controllers/admin/asks_controller.rb b/app/controllers/admin/asks_controller.rb index 662181a..cfc79dd 100644 --- a/app/controllers/admin/asks_controller.rb +++ b/app/controllers/admin/asks_controller.rb @@ -141,6 +141,7 @@ class Admin::AsksController < OrbitAdminController end def get_category_setting_field + @default_ask_setting = AskSetting.first ask_setting = AskCategorySetting.find(params['id']) render partial: 'category_setting_field',locals: {ask_setting: ask_setting} end @@ -384,6 +385,13 @@ class Admin::AsksController < OrbitAdminController def set_askquestion @ask_question = AskQuestion.find(params[:id]) end + def order_fields + @disp_fields_infos = AskSetting.get_disp_fields_infos + end + def update_order_fields + AskSetting.update_all(:sort_number=>params[:sort_number]) + render :json => {:success=>true} + end private def ask_setting_params(ask_setting,collection_name) param = params.require(collection_name).permit! diff --git a/app/controllers/asks_controller.rb b/app/controllers/asks_controller.rb index f9502a5..18b38da 100644 --- a/app/controllers/asks_controller.rb +++ b/app/controllers/asks_controller.rb @@ -37,11 +37,6 @@ class AsksController < ActionController::Base { 'fields' => defalt_fields, 'extras'=>{ - 'token_tag' => token_tag, - 'form_url' => "/#{I18n.locale.to_s}/asks", - 'submit_tag' => submit_tag(t('submit'), :class=> 'btn btn-primary', :id => 'button-mail'), - 'close_tag' => button_tag(t('cancel'), type: 'reset', :class=> 'btn'), - 'referer_url' => referer_url, 'switch_form' => switch_form } } @@ -254,54 +249,82 @@ class AsksController < ActionController::Base params.require(:ask_question).permit! end private - def cal_form_from_setting(ask_setting,categories,show_categories=false) + def cal_form_from_setting(ask_setting,categories,show_categories=false,filter_fields=nil) + disp_fields_infos = AskSetting.get_disp_fields_infos + if filter_fields + disp_fields_infos = disp_fields_infos.select{|field, info| filter_fields.include?(field)} + end tmp = 'mongoid.attributes.ask_question' defalt_fields = [{'style_html'=>'','label'=>ask_label(t('title'),'true'),'content'=>text_field_tag('ask_question[title]',nil,placeholder: t('title'),required: true)}] - if show_categories || ask_setting.default_setting['ask_category_id'] - if categories.count > 1 - defalt_fields = defalt_fields + [{'style_html'=>'','label'=>ask_label(@default_ask_setting.field_name("ask_category_id"),'true'),'content'=>select_tag('ask_question[category_id]', options_for_select(categories.collect{|t| [ t.title, t.id ]}))}] + tmp_type = (ask_setting.class == AskSetting) ? 0 : 1 + tmp_ask_cat_id = (tmp_type == 1) ? ask_setting.id.to_s : "" + disp_fields_infos.each do |field, info| + if field.include?("default@") + if tmp_type == 0 + k = field[8..-1] + v = ask_setting.custom_fields[k] + if v + defalt_fields << {'label'=>ask_label(v['field'][I18n.locale],v['required']),'content'=>show_on_front(k,v)} + end + end + elsif field.include?("custom@") && tmp_ask_cat_id != "" + if tmp_type == 1 && field.include?(tmp_ask_cat_id) + k = field[8+tmp_ask_cat_id.length..-1] + v = ask_setting.custom_fields[k] + if v + defalt_fields << {'label'=>ask_label(v['field'][I18n.locale],v['required']),'content'=>show_on_front(k,v)} + end + end else - defalt_fields = defalt_fields + [{'style_html'=>'','label'=>ask_label(@default_ask_setting.field_name("ask_category_id"),'true'),'content'=>"#{(categories[0].title rescue '')}"+hidden_field_tag('ask_question[category_id]', (categories[0].id.to_s rescue ''))}] + if field == 'ask_category_id' + if show_categories || ask_setting.default_setting[field] + if categories.count > 1 + defalt_fields = defalt_fields + [{'style_html'=>'','label'=>ask_label(@default_ask_setting.field_name("ask_category_id"),'true'),'content'=>select_tag('ask_question[category_id]', options_for_select(categories.collect{|t| [ t.title, t.id ]}))}] + else + defalt_fields = defalt_fields + [{'style_html'=>'','label'=>ask_label(@default_ask_setting.field_name("ask_category_id"),'true'),'content'=>"#{(categories[0].title rescue '')}"+hidden_field_tag('ask_question[category_id]', (categories[0].id.to_s rescue ''))}] + end + else + defalt_fields = defalt_fields + [{'style_html'=>'display: none;','label'=>'','content'=>hidden_field_tag('ask_question[category_id]', (categories[0].id.to_s rescue ''))}] + end + else + if ask_setting.default_setting[field] || field == "usage_rule" + required = ['phone','appointment'].exclude?(field) ? 'true' : 'false' + f1 = {'style_html'=>'','label'=>ask_label(@default_ask_setting.field_name("#{field}"),required)} + field_name = "ask_question[#{field}]" + case field + when 'name' + f1['content'] = text_field_tag(field_name,nil,data: {"fv-validation" => "required;", "fv-messages" => "必填欄位;"},required: true,placeholder:@default_ask_setting.field_name("#{field}")) + when 'sex' + f1['content'] = " + " + when 'mail' + f1['content'] = text_field_tag(field_name,nil,data: {"fv-validation" => "required;check_email;", "fv-messages" => "必填欄位;Email不正確;"},required: true,placeholder:@default_ask_setting.field_name("#{field}")) + when 'phone' + f1['content'] = text_field_tag(field_name,nil,placeholder:@default_ask_setting.field_name("#{field}")) + when 'appointment' + f1['content'] = "