add category setting and print setting
This commit is contained in:
parent
8b3361360b
commit
1cca61a0c4
|
@ -2,16 +2,37 @@
|
||||||
class Admin::AsksController < OrbitAdminController
|
class Admin::AsksController < OrbitAdminController
|
||||||
helper Admin::AsksHelper
|
helper Admin::AsksHelper
|
||||||
before_action ->(module_app = @app_title) { set_variables module_app }
|
before_action ->(module_app = @app_title) { set_variables module_app }
|
||||||
before_action :set_askquestion, only: [:edit, :destroy, :update]
|
before_action :set_askquestion, only: [:edit, :destroy, :update, :print]
|
||||||
layout :compute_layout
|
layout :compute_layout
|
||||||
def compute_layout
|
def compute_layout
|
||||||
'back_end_with_jquery_first'
|
if action_name=='print'
|
||||||
|
false
|
||||||
|
else
|
||||||
|
'back_end_with_jquery_first'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
def initialize
|
def initialize
|
||||||
super
|
super
|
||||||
@app_title = "ask"
|
@app_title = "ask"
|
||||||
end
|
end
|
||||||
|
def print_setting
|
||||||
|
@set = AskPrintSetting.first
|
||||||
|
@set = AskPrintSetting.create if @set.nil?
|
||||||
|
@url = print_setting_save_admin_asks_path
|
||||||
|
end
|
||||||
|
def print_setting_save
|
||||||
|
locale = I18n.locale
|
||||||
|
set = AskPrintSetting.first
|
||||||
|
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
|
||||||
|
def category_print_setting_save
|
||||||
|
locale = I18n.locale
|
||||||
|
set = AskCategoryPrintSetting.where(category_id: params['category_id']).first
|
||||||
|
set = AskCategoryPrintSetting.create if set.nil?
|
||||||
|
set.update_attributes(print_format: params['print_format'],save_name: params['save_name'],category_id: params['category_id'])
|
||||||
|
redirect_to "/#{locale}/admin/asks/category_setting"
|
||||||
|
end
|
||||||
def filter_fields(categories, tags)
|
def filter_fields(categories, tags)
|
||||||
{
|
{
|
||||||
:situation=>[{:title=>"ask.is_waiting",:id=>"is_waiting"},{:title=>"ask.is_processed",:id=>"is_processed"},{:title=>"ask.is_referral",:id=>"is_referral"},{:title=>"ask.is_published",:id=>"is_published"}],
|
:situation=>[{:title=>"ask.is_waiting",:id=>"is_waiting"},{:title=>"ask.is_processed",:id=>"is_processed"},{:title=>"ask.is_referral",:id=>"is_referral"},{:title=>"ask.is_published",:id=>"is_published"}],
|
||||||
|
@ -30,10 +51,19 @@ class Admin::AsksController < OrbitAdminController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
def setting_save
|
def setting_save
|
||||||
|
locale = I18n.locale
|
||||||
ask_setting = AskSetting.first
|
ask_setting = AskSetting.first
|
||||||
p1 = ask_setting_params
|
p1 = ask_setting_params(ask_setting,'ask_setting')
|
||||||
ask_setting.update_attributes(p1)
|
ask_setting.update_attributes(p1)
|
||||||
redirect_to '/admin/asks'
|
redirect_to "/#{locale}/admin/asks"
|
||||||
|
end
|
||||||
|
def category_setting_save
|
||||||
|
locale = I18n.locale
|
||||||
|
ask_setting = AskCategorySetting.where(category_id: params['category_id']).first
|
||||||
|
ask_setting = AskCategorySetting.create(category_id: params['category_id']) if ask_setting.nil?
|
||||||
|
p1 = ask_setting_params(ask_setting,'ask_category_setting')
|
||||||
|
ask_setting.update_attributes(p1)
|
||||||
|
redirect_to "/#{locale}/admin/asks/category_setting"
|
||||||
end
|
end
|
||||||
def setting
|
def setting
|
||||||
@ask_setting = AskSetting.first
|
@ask_setting = AskSetting.first
|
||||||
|
@ -47,7 +77,15 @@ class Admin::AsksController < OrbitAdminController
|
||||||
ask_setting_index.save
|
ask_setting_index.save
|
||||||
render :json => {key: ask_setting_index.key.to_i}
|
render :json => {key: ask_setting_index.key.to_i}
|
||||||
end
|
end
|
||||||
|
def get_new_category_setting_index
|
||||||
|
ask_setting_index = AskCategorySettingIndex.where(category_id: params['category_id']).first
|
||||||
|
ask_setting_index = AskCategorySettingIndex.create(category_id: params['category_id']) 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
|
def index
|
||||||
|
AskPrintSetting.create() if AskPrintSetting.first.nil?
|
||||||
@ask_setting = AskSetting.first
|
@ask_setting = AskSetting.first
|
||||||
@ask_setting = AskSetting.create() if @ask_setting.nil?
|
@ask_setting = AskSetting.create() if @ask_setting.nil?
|
||||||
@tags = @module_app.tags
|
@tags = @module_app.tags
|
||||||
|
@ -85,8 +123,140 @@ class Admin::AsksController < OrbitAdminController
|
||||||
def search_tag(tag)
|
def search_tag(tag)
|
||||||
Tag.find(tag).name_translations{}
|
Tag.find(tag).name_translations{}
|
||||||
end
|
end
|
||||||
|
def category_setting
|
||||||
|
@categories = @module_app.categories
|
||||||
|
@category_ids = @categories.pluck(:id)
|
||||||
|
@category_titles = @categories.pluck(:title).collect{|v| v[I18n.locale]}
|
||||||
|
|
||||||
|
@category_added = AskCategorySetting.all.asc(:created_at)
|
||||||
|
@category_added_ids = @category_added.pluck(:category_id)
|
||||||
|
@category_not_add_index = @category_ids.to_enum.with_index.select{|v,i| @category_added_ids.exclude? v.to_s}.collect{|v,i| i}
|
||||||
|
@category_not_add = @category_titles.values_at(*@category_not_add_index).zip(@category_ids.values_at(*@category_not_add_index))
|
||||||
|
|
||||||
|
@category_print_added = AskCategoryPrintSetting.all.asc(:created_at)
|
||||||
|
@category_print_added_ids = @category_print_added.pluck(:category_id)
|
||||||
|
@category_print_not_add_index = @category_ids.to_enum.with_index.select{|v,i| @category_print_added_ids.exclude? v.to_s}.collect{|v,i| i}
|
||||||
|
@category_print_not_add = @category_titles.values_at(*@category_print_not_add_index).zip(@category_ids.values_at(*@category_print_not_add_index))
|
||||||
|
|
||||||
|
end
|
||||||
|
def get_category_setting_field
|
||||||
|
ask_setting = AskCategorySetting.find(params['id'])
|
||||||
|
render partial: 'category_setting_field',locals: {ask_setting: ask_setting}
|
||||||
|
end
|
||||||
|
def category_print_setting_delete
|
||||||
|
print_setting = AskCategoryPrintSetting.find(params['id'])
|
||||||
|
print_setting.destroy
|
||||||
|
locale = I18n.locale
|
||||||
|
redirect_to "/#{locale}/admin/asks/category_setting"
|
||||||
|
end
|
||||||
|
def category_setting_delete
|
||||||
|
ask_setting = AskCategorySetting.find(params['id'])
|
||||||
|
ask_setting.destroy
|
||||||
|
locale = I18n.locale
|
||||||
|
redirect_to "/#{locale}/admin/asks/category_setting"
|
||||||
|
end
|
||||||
|
def process_format_text(text,custom_fields)
|
||||||
|
customs = text.scan(/<tr.*{custom}.*<\/tr>/m).uniq
|
||||||
|
if customs.length != 0
|
||||||
|
custom_exist_nums = []
|
||||||
|
custom_exists = text.scan(/{custom\d+}/)
|
||||||
|
custom_exists.each do |custom_exist|
|
||||||
|
k = custom_exist[6...-1]
|
||||||
|
custom_exist_nums << k
|
||||||
|
end
|
||||||
|
customs.each do |custom|
|
||||||
|
tmp = custom_fields.keys.select{|key| custom_exist_nums.exclude? key}.collect do |k|
|
||||||
|
tp = custom.gsub(/{custom}/,"{custom#{k}}")
|
||||||
|
tp = tp.gsub(/{custom_title}/,"{custom#{k}_title}")
|
||||||
|
tp
|
||||||
|
end.join
|
||||||
|
text = text.gsub(custom,tmp)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
format_texts = text.scan(/{\w+\|*\w+}/).uniq
|
||||||
|
format_texts.each do |format_text|
|
||||||
|
if format_text[-7...-1] == '_title'
|
||||||
|
case format_text[1...-7]
|
||||||
|
when /custom\d+/
|
||||||
|
i = format_text.scan(/\d+/)[0].to_i
|
||||||
|
k = custom_fields.keys[i-1]
|
||||||
|
if !k.blank?
|
||||||
|
text_tp = custom_fields[k]['field'][I18n.locale] rescue ''
|
||||||
|
text = text.gsub(format_text,text_tp)
|
||||||
|
end
|
||||||
|
when 'title'
|
||||||
|
text = text.gsub(format_text,I18n.t('title'))
|
||||||
|
when 'ask_time'
|
||||||
|
text = text.gsub(format_text,I18n.t('ask.ask_time'))
|
||||||
|
when 'category'
|
||||||
|
text = text.gsub(format_text,I18n.t('mongoid.attributes.ask_question.ask_category_id'))
|
||||||
|
when 'name','sex','mail','phone','appointment','agree_show'
|
||||||
|
text = text.gsub(format_text,I18n.t("mongoid.attributes.ask_question.#{format_text[1...-7]}"))
|
||||||
|
end
|
||||||
|
else
|
||||||
|
case format_text[1...-1]
|
||||||
|
when 'ask_time'
|
||||||
|
text = text.gsub(format_text,@ask_question.created_at.strftime('%Y/%m/%d %H:%M'))
|
||||||
|
when 'title','name','mail','phone','appointment'
|
||||||
|
text = text.gsub(format_text,@ask_question.send(format_text[1...-1]).to_s)
|
||||||
|
when 'category'
|
||||||
|
cat = Category.find(@ask_question.ask_category_id).title rescue ''
|
||||||
|
text = text.gsub(format_text,cat)
|
||||||
|
when 'name|mask'
|
||||||
|
name_tp = @ask_question.name.to_s
|
||||||
|
if name_tp.length>1
|
||||||
|
name_tp = name_tp[0] + '*'*(name_tp.length-1)
|
||||||
|
end
|
||||||
|
text = text.gsub(format_text,name_tp)
|
||||||
|
when 'sex'
|
||||||
|
sex = @ask_question.sex
|
||||||
|
if ['male','female'].include? sex.to_s
|
||||||
|
sex = I18n.t("mongoid.attributes.ask_question.#{sex}")
|
||||||
|
else
|
||||||
|
sex = ''
|
||||||
|
end
|
||||||
|
text = text.gsub(format_text,sex)
|
||||||
|
when 'agree_show'
|
||||||
|
if @ask_question.agree_show
|
||||||
|
text = text.gsub(format_text,I18n.t('ask.yes'))
|
||||||
|
else
|
||||||
|
text = text.gsub(format_text,I18n.t('ask,no'))
|
||||||
|
end
|
||||||
|
when /custom\d+\|format/
|
||||||
|
i = format_text.scan(/\d+/)[0].to_i
|
||||||
|
k = custom_fields.keys[i-1]
|
||||||
|
if !k.blank?
|
||||||
|
v = custom_fields[k] rescue {}
|
||||||
|
text_tp = Admin::AsksHelper.show_on_front(k,v,@ask_question.custom_values[k],true,true)
|
||||||
|
text = text.gsub(format_text,text_tp.to_s)
|
||||||
|
end
|
||||||
|
when /custom\d+/
|
||||||
|
i = format_text.scan(/\d+/)[0].to_i
|
||||||
|
k = custom_fields.keys[i-1]
|
||||||
|
if !k.blank?
|
||||||
|
v = custom_fields[k] rescue {}
|
||||||
|
text_tp = Admin::AsksHelper.show_on_front(k,v,@ask_question.custom_values[k],true)
|
||||||
|
text = text.gsub(format_text,text_tp.to_s)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
text
|
||||||
|
end
|
||||||
|
def print
|
||||||
|
@print_setting = AskCategoryPrintSetting.where(category_id: @ask_question.category_id.to_s).first
|
||||||
|
@print_setting = AskPrintSetting.first if @print_setting.nil?
|
||||||
|
@save_name = @print_setting.save_name rescue ''
|
||||||
|
@print_text = @print_setting.print_format rescue ''
|
||||||
|
ask_setting = AskCategorySetting.where(category_id: @ask_question.category_id.to_s).first
|
||||||
|
ask_setting = AskSetting.first if ask_setting.nil?
|
||||||
|
custom_fields = ask_setting.custom_fields
|
||||||
|
@print_text = process_format_text(@print_text,custom_fields)
|
||||||
|
@save_name = process_format_text(@save_name,custom_fields)
|
||||||
|
end
|
||||||
def edit
|
def edit
|
||||||
|
@ask_setting = AskCategorySetting.where(category_id: @ask_question.category_id.to_s).first
|
||||||
|
@ask_setting = AskSetting.first if @ask_setting.nil?
|
||||||
@url = admin_ask_path(@ask_question)
|
@url = admin_ask_path(@ask_question)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -101,8 +271,11 @@ class Admin::AsksController < OrbitAdminController
|
||||||
temp_params = params.require(:ask_question).permit!
|
temp_params = params.require(:ask_question).permit!
|
||||||
|
|
||||||
all_to_save = []
|
all_to_save = []
|
||||||
ask_setting = AskSetting.first
|
ask_setting = AskCategorySetting.where(category_id: params['ask_question']['category_id']).first
|
||||||
ask_setting = AskSetting.create() if ask_setting.nil?
|
if ask_setting.nil?
|
||||||
|
ask_setting = AskSetting.first
|
||||||
|
ask_setting = AskSetting.create() if ask_setting.nil?
|
||||||
|
end
|
||||||
ask_setting.custom_fields.select{|k,v| v['type']=='file' || v['type']=='image'}.each do |k,v|
|
ask_setting.custom_fields.select{|k,v| v['type']=='file' || v['type']=='image'}.each do |k,v|
|
||||||
file = temp_params['custom_values'][k]
|
file = temp_params['custom_values'][k]
|
||||||
if !file.blank?
|
if !file.blank?
|
||||||
|
@ -203,14 +376,13 @@ class Admin::AsksController < OrbitAdminController
|
||||||
@ask_question = AskQuestion.find(params[:id])
|
@ask_question = AskQuestion.find(params[:id])
|
||||||
end
|
end
|
||||||
private
|
private
|
||||||
def ask_setting_params
|
def ask_setting_params(ask_setting,collection_name)
|
||||||
param = params.require('ask_setting').permit!
|
param = params.require(collection_name).permit!
|
||||||
param_clone = param.clone
|
param_clone = param.clone
|
||||||
param_clone['default_setting'].each { |k, v| param_clone['default_setting'][k] = (v == 'true'? true : false) }
|
param_clone['default_setting'].each { |k, v| param_clone['default_setting'][k] = (v == 'true'? true : false) }
|
||||||
param_clone.delete('custom_fields')
|
param_clone.delete('custom_fields')
|
||||||
ask_setting = AskSetting.first
|
|
||||||
custom_fields = ask_setting['custom_fields'].clone
|
custom_fields = ask_setting['custom_fields'].clone
|
||||||
params_custom_fields = (params.require('ask_setting').require('custom_fields') rescue {})
|
params_custom_fields = (params.require(collection_name).require('custom_fields') rescue {})
|
||||||
params_custom_fields.each do |k,v|
|
params_custom_fields.each do |k,v|
|
||||||
custom_fields[k] = v
|
custom_fields[k] = v
|
||||||
end
|
end
|
||||||
|
|
|
@ -10,61 +10,34 @@ class AsksController < ActionController::Base
|
||||||
case subpart.widget_type
|
case subpart.widget_type
|
||||||
when /.*_form/
|
when /.*_form/
|
||||||
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.widget_categories)) rescue ['all']
|
||||||
categories = module_app.categories if categories.include? 'all'
|
categories = module_app.categories if categories.include? 'all'
|
||||||
tags = module_app.tags
|
tags = module_app.tags
|
||||||
ask_question = AskQuestion.new
|
ask_question = AskQuestion.new
|
||||||
locale = I18n.locale
|
locale = I18n.locale
|
||||||
ask_setting = AskSetting.first
|
ask_settings = AskCategorySetting.where(:category_id.in=> categories.collect{|v| v.id.to_s}).to_a
|
||||||
ask_setting = AskSetting.create() if ask_setting.nil?
|
if ask_settings.count != 0 && ask_settings.count != categories.count
|
||||||
categories = Array(Category.find(OrbitHelper.widget_categories)) rescue ['all']
|
ask_settings = [AskSetting.first]+ask_settings
|
||||||
categories = module_app.categories if categories.include? 'all'
|
|
||||||
tmp = 'mongoid.attributes.ask_question'
|
|
||||||
defalt_fields = [{'label'=>ask_label(t('title'),'true'),'content'=>text_field_tag('ask_question[title]',nil,placeholder: t('title'),required: true)}]
|
|
||||||
if ask_setting.default_setting['ask_category_id']
|
|
||||||
if categories.count > 1
|
|
||||||
defalt_fields = defalt_fields + [{'label'=>ask_label(t("#{tmp}.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 + [{'label'=>ask_label(t("#{tmp}.ask_category_id"),'true'),'content'=>"<span>#{@categories[0].title rescue ''}</span>"+hidden_field_tag('ask_question[category_id]', (categories[0].id.to_s rescue ''))}]
|
|
||||||
end
|
|
||||||
else
|
|
||||||
defalt_fields = defalt_fields + [{'label'=>'','content'=>hidden_field_tag('ask_question[category_id]', (categories[0].id.to_s rescue ''))}]
|
|
||||||
end
|
end
|
||||||
defalt_fields = defalt_fields + ['name','sex','mail','phone','appointment'].select{|v| ask_setting.default_setting[v]}.collect do |field|
|
ask_setting = AskCategorySetting.where(category_id: categories.first.id.to_s).first
|
||||||
required = ['phone','appointment'].exclude?(field) ? 'true' : 'false'
|
if ask_setting.nil?
|
||||||
f1 = {'label'=>ask_label(t("#{tmp}.#{field}"),required)}
|
ask_setting = AskSetting.first
|
||||||
field_name = "ask_question[#{field}]"
|
ask_setting = AskSetting.create() if ask_setting.nil?
|
||||||
case field
|
|
||||||
when 'name'
|
|
||||||
f1['content'] = text_field_tag(field_name,nil,data: {"fv-validation" => "required;", "fv-messages" => "必填欄位;"},required: true,placeholder:t("#{tmp}.#{field}"))
|
|
||||||
when 'sex'
|
|
||||||
f1['content'] = "<label class=\"radio-inline\">
|
|
||||||
#{radio_button(field_name,'male')}#{I18n.t('users.male')}
|
|
||||||
</label>
|
|
||||||
<label class=\"radio-inline\">
|
|
||||||
#{radio_button(field_name,'female')}#{I18n.t('users.female')}
|
|
||||||
</label>"
|
|
||||||
when 'mail'
|
|
||||||
f1['content'] = text_field_tag(field_name,nil,data: {"fv-validation" => "required;check_email;", "fv-messages" => "必填欄位;Email不正確;"},required: true,placeholder:t("#{tmp}.#{field}"))
|
|
||||||
when 'phone'
|
|
||||||
f1['content'] = text_field_tag(field_name,nil,placeholder:t("#{tmp}.#{field}"))
|
|
||||||
when 'appointment'
|
|
||||||
f1['content'] = "<div class=\"default_picker\">#{text_field_tag(field_name,placeholder:t("#{tmp}.#{field}"))}</div>"
|
|
||||||
end
|
|
||||||
f1
|
|
||||||
end
|
end
|
||||||
defalt_fields = defalt_fields + ask_setting.custom_fields.collect{|k,v| {'label'=>ask_label(v['field'][I18n.locale],v['required']),'content'=>show_on_front(k,v)}}
|
defalt_fields = cal_form_from_setting(ask_setting,categories)
|
||||||
defalt_fields << {'label'=>ask_label(t("#{tmp}.agree_show")),'content'=>check_box_tag('ask_question[agree_show]')}
|
|
||||||
request = OrbitHelper.request
|
request = OrbitHelper.request
|
||||||
csrf_value = OrbitHelper.request.session[:_csrf_token] || SecureRandom.base64(32)
|
csrf_value = OrbitHelper.request.session[:_csrf_token] || SecureRandom.base64(32)
|
||||||
|
token_tag = hidden_field_tag('authenticity_token',csrf_value)
|
||||||
|
switch_form = cal_switch_form(ask_settings,categories,token_tag)
|
||||||
{
|
{
|
||||||
'fields' => defalt_fields,
|
'fields' => defalt_fields,
|
||||||
'extras'=>{
|
'extras'=>{
|
||||||
'token_tag' => hidden_field_tag('authenticity_token',csrf_value),
|
'token_tag' => token_tag,
|
||||||
'form_url' => "/#{I18n.locale.to_s}/asks",
|
'form_url' => "/#{I18n.locale.to_s}/asks",
|
||||||
'submit_tag' => submit_tag(t('submit'), :class=> 'btn btn-primary', :id => 'button-mail'),
|
'submit_tag' => submit_tag(t('submit'), :class=> 'btn btn-primary', :id => 'button-mail'),
|
||||||
'close_tag' => button_tag(t('cancel'), type: 'reset', :class=> 'btn'),
|
'close_tag' => button_tag(t('cancel'), type: 'reset', :class=> 'btn'),
|
||||||
'referer_url' => ''
|
'referer_url' => '',
|
||||||
|
'switch_form' => switch_form
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -74,7 +47,7 @@ class AsksController < ActionController::Base
|
||||||
else
|
else
|
||||||
ask_questions = AskQuestion.where(situation: 'is_published')
|
ask_questions = AskQuestion.where(situation: 'is_published')
|
||||||
end
|
end
|
||||||
ask_index_page = Page.where(:module=>'ask').first.url rescue nil
|
ask_index_page = OrbitHelper.widget_more_url rescue nil
|
||||||
ask_questions = ask_questions.collect do |v|
|
ask_questions = ask_questions.collect do |v|
|
||||||
url = ((ask_index_page+"?item=#{v.id}") rescue "javascript:alert('#{t('ask.no_index_page')}')")
|
url = ((ask_index_page+"?item=#{v.id}") rescue "javascript:alert('#{t('ask.no_index_page')}')")
|
||||||
{'td'=> [
|
{'td'=> [
|
||||||
|
@ -85,7 +58,9 @@ class AsksController < ActionController::Base
|
||||||
end
|
end
|
||||||
{
|
{
|
||||||
'ask_questions' => ask_questions,
|
'ask_questions' => ask_questions,
|
||||||
'th'=>[{'td'=>t('categories')},{'td'=>t('title')}]
|
'th' => [{'td'=>t('categories')},{'td'=>t('title')}],
|
||||||
|
'extras' => {'more_title'=>I18n.t('ask.more_title'),
|
||||||
|
'more_href'=>ask_index_page}
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -118,7 +93,9 @@ class AsksController < ActionController::Base
|
||||||
end
|
end
|
||||||
def show
|
def show
|
||||||
ask_question = AskQuestion.where(id: @params['item']).first
|
ask_question = AskQuestion.where(id: @params['item']).first
|
||||||
{'ask_question' => ask_question,'layout_type'=>'show'}
|
ask_setting = AskCategorySetting.where(category_id: ask_question.category_id.to_s).first
|
||||||
|
ask_setting = AskSetting.first if ask_setting.nil?
|
||||||
|
{'ask_question' => ask_question,'layout_type'=>'show','ask_setting'=>ask_setting}
|
||||||
end
|
end
|
||||||
def index
|
def index
|
||||||
@params = OrbitHelper.params
|
@params = OrbitHelper.params
|
||||||
|
@ -130,7 +107,19 @@ class AsksController < ActionController::Base
|
||||||
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'
|
categories = module_app.categories if categories.include? 'all'
|
||||||
|
ask_settings = AskCategorySetting.where(:category_id.in=> categories.collect{|v| v.id.to_s}).to_a
|
||||||
|
if ask_settings.count != 0 && ask_settings.count != categories.count
|
||||||
|
ask_settings = [AskSetting.first]+ask_settings
|
||||||
|
end
|
||||||
|
ask_setting = AskCategorySetting.where(category_id: categories.first.id.to_s).first
|
||||||
|
if ask_setting.nil?
|
||||||
|
ask_setting = AskSetting.first
|
||||||
|
ask_setting = AskSetting.create() if ask_setting.nil?
|
||||||
|
end
|
||||||
|
csrf_value = OrbitHelper.request.session[:_csrf_token] || SecureRandom.base64(32)
|
||||||
|
token_tag = hidden_field_tag('authenticity_token',csrf_value)
|
||||||
|
switch_form = cal_switch_form(ask_settings,categories,token_tag)
|
||||||
tags = module_app.tags
|
tags = module_app.tags
|
||||||
ask_question = AskQuestion.new
|
ask_question = AskQuestion.new
|
||||||
{
|
{
|
||||||
|
@ -138,7 +127,9 @@ class AsksController < ActionController::Base
|
||||||
'ask_question' => ask_question,
|
'ask_question' => ask_question,
|
||||||
'categories' => categories,
|
'categories' => categories,
|
||||||
'tags' => tags,
|
'tags' => tags,
|
||||||
'module_app' => module_app
|
'module_app' => module_app,
|
||||||
|
'switch_form' => switch_form,
|
||||||
|
'ask_setting' => ask_setting
|
||||||
}
|
}
|
||||||
elsif @layout_type == 'published_index'
|
elsif @layout_type == 'published_index'
|
||||||
page_number = OrbitHelper.page_number.to_i
|
page_number = OrbitHelper.page_number.to_i
|
||||||
|
@ -163,8 +154,11 @@ class AsksController < ActionController::Base
|
||||||
@ask_question = AskQuestion.new()
|
@ask_question = AskQuestion.new()
|
||||||
temp_params = create_params
|
temp_params = create_params
|
||||||
all_to_save = []
|
all_to_save = []
|
||||||
ask_setting = AskSetting.first
|
ask_setting = AskCategorySetting.where(category_id: params['ask_question']['category_id']).first
|
||||||
ask_setting = AskSetting.create() if ask_setting.nil?
|
if ask_setting.nil?
|
||||||
|
ask_setting = AskSetting.first
|
||||||
|
ask_setting = AskSetting.create() if ask_setting.nil?
|
||||||
|
end
|
||||||
ask_setting.custom_fields.select{|k,v| v['type']=='file' || v['type']=='image'}.each do |k,v|
|
ask_setting.custom_fields.select{|k,v| v['type']=='file' || v['type']=='image'}.each do |k,v|
|
||||||
file = temp_params['custom_values'][k]
|
file = temp_params['custom_values'][k]
|
||||||
if !file.blank?
|
if !file.blank?
|
||||||
|
@ -240,4 +234,132 @@ class AsksController < ActionController::Base
|
||||||
def create_params
|
def create_params
|
||||||
params.require(:ask_question).permit!
|
params.require(:ask_question).permit!
|
||||||
end
|
end
|
||||||
|
private
|
||||||
|
def cal_form_from_setting(ask_setting,categories,show_categories=false)
|
||||||
|
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(t("#{tmp}.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(t("#{tmp}.ask_category_id"),'true'),'content'=>"<span>#{(categories[0].title rescue '')}</span>"+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
|
||||||
|
defalt_fields = defalt_fields + ['name','sex','mail','phone','appointment'].select{|v| ask_setting.default_setting[v]}.collect do |field|
|
||||||
|
required = ['phone','appointment'].exclude?(field) ? 'true' : 'false'
|
||||||
|
f1 = {'style_html'=>'','label'=>ask_label(t("#{tmp}.#{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:t("#{tmp}.#{field}"))
|
||||||
|
when 'sex'
|
||||||
|
f1['content'] = "<label class=\"radio-inline\">
|
||||||
|
#{radio_button(field_name,'male')}#{I18n.t('users.male')}
|
||||||
|
</label>
|
||||||
|
<label class=\"radio-inline\">
|
||||||
|
#{radio_button(field_name,'female')}#{I18n.t('users.female')}
|
||||||
|
</label>"
|
||||||
|
when 'mail'
|
||||||
|
f1['content'] = text_field_tag(field_name,nil,data: {"fv-validation" => "required;check_email;", "fv-messages" => "必填欄位;Email不正確;"},required: true,placeholder:t("#{tmp}.#{field}"))
|
||||||
|
when 'phone'
|
||||||
|
f1['content'] = text_field_tag(field_name,nil,placeholder:t("#{tmp}.#{field}"))
|
||||||
|
when 'appointment'
|
||||||
|
f1['content'] = "<div class=\"default_picker\">#{text_field_tag(field_name,placeholder:t("#{tmp}.#{field}"))}</div>"
|
||||||
|
end
|
||||||
|
f1
|
||||||
|
end
|
||||||
|
defalt_fields = defalt_fields + ask_setting.custom_fields.collect{|k,v| {'label'=>ask_label(v['field'][I18n.locale],v['required']),'content'=>show_on_front(k,v)}}
|
||||||
|
if !ask_setting.usage_rule.blank?
|
||||||
|
defalt_fields << {'style_html'=>'','label'=>ask_label(t("ask.usage_rule")),'content'=>ask_setting.usage_rule}
|
||||||
|
end
|
||||||
|
if ask_setting.default_setting['agree_usage']
|
||||||
|
defalt_fields << {'style_html'=>'','label'=>ask_label(t("#{tmp}.agree_usage")),'content'=>check_box_tag('ask_question[agree_usage]')}
|
||||||
|
end
|
||||||
|
if ask_setting.default_setting['agree_show']
|
||||||
|
defalt_fields << {'style_html'=>'','label'=>ask_label(t("#{tmp}.agree_show")),'content'=>check_box_tag('ask_question[agree_show]')}
|
||||||
|
end
|
||||||
|
defalt_fields
|
||||||
|
end
|
||||||
|
def cal_html(fields,token_tag,form_id)
|
||||||
|
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 = ''
|
||||||
|
tmp = fields.collect do |field|
|
||||||
|
style_html = field['style_html']
|
||||||
|
label = field['label']
|
||||||
|
content = field['content']
|
||||||
|
"<div class=\"control-group\" style=\"#{style_html}\">
|
||||||
|
#{label}
|
||||||
|
<div class=\"controls\">
|
||||||
|
#{content}
|
||||||
|
</div>
|
||||||
|
</div>"
|
||||||
|
end.join
|
||||||
|
"<form id=\"#{form_id}\" action=\"#{form_url}\" enctype=\"multipart/form-data\" method=\"post\" class=\"form-horizontal\" accept-charset=\"UTF-8\" style=\"display: none;\">
|
||||||
|
#{token_tag}
|
||||||
|
<div data-level=\"0\" data-list=\"fields\">
|
||||||
|
#{tmp}
|
||||||
|
</div>
|
||||||
|
<div class=\"form-actions\">
|
||||||
|
<input type=\"hidden\" name=\"referer_url\" value=\"#{referer_url}\">
|
||||||
|
#{submit_tag}
|
||||||
|
#{close_tag}
|
||||||
|
</div>
|
||||||
|
</form>"
|
||||||
|
end
|
||||||
|
def script_text
|
||||||
|
"<script type=\"text/javascript\">
|
||||||
|
$(document).ready(function(){
|
||||||
|
$('select[name=\"ask_question[category_id]\"]').change(function(){
|
||||||
|
var category_id = $(this).val()
|
||||||
|
$(this).parents('.ask-question').eq(0).find('select[name=\"ask_question[category_id]\"]').val(category_id)
|
||||||
|
var id
|
||||||
|
if ($('form#'+category_id).length != 0){
|
||||||
|
id = category_id
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
id = 'ask-default-form'
|
||||||
|
}
|
||||||
|
if (id != $(this).parents('form').eq(0).attr('id')){
|
||||||
|
var self = $(this)
|
||||||
|
var old_controls = self.parents('form').eq(0).find('.control-group')
|
||||||
|
var old_inputs = old_controls.find('label').map(function(){
|
||||||
|
return $.trim($(this).text().replace(/\\\*/g,''));
|
||||||
|
}).get()
|
||||||
|
var new_controls = self.parents('.ask-question').eq(0).find('form#'+id).find('.control-group')
|
||||||
|
var new_inputs = new_controls.find('label').map(function(){
|
||||||
|
return $.trim($(this).text().replace(/\\\*/g,''));
|
||||||
|
}).get()
|
||||||
|
$(new_inputs).each(function(i,v){
|
||||||
|
var i0 = old_inputs.indexOf(v)
|
||||||
|
if (i0 != -1 && new_controls.eq(i).find('select#ask_question_category_id').length==0){
|
||||||
|
new_controls.eq(i).find('.controls').eq(0).before(old_controls.eq(i0).find('.controls').clone())
|
||||||
|
new_controls.eq(i).find('.controls').eq(-1).remove()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
self.parents('.ask-question').eq(0).find('form').hide()
|
||||||
|
self.parents('.ask-question').eq(0).find('form#'+id).show()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
</script>"
|
||||||
|
end
|
||||||
|
def cal_switch_form(ask_settings,categories,token_tag)
|
||||||
|
switch_form = ''
|
||||||
|
if ask_settings.count > 1
|
||||||
|
switch_form = script_text + ask_settings.collect do |ask_setting|
|
||||||
|
fields = cal_form_from_setting(ask_setting,categories,true)
|
||||||
|
if ask_setting.class == AskSetting
|
||||||
|
form_id = 'ask-default-form'
|
||||||
|
else
|
||||||
|
form_id = ask_setting.category_id
|
||||||
|
end
|
||||||
|
cal_html(fields,token_tag,form_id)
|
||||||
|
end.join
|
||||||
|
end
|
||||||
|
switch_form
|
||||||
|
end
|
||||||
end
|
end
|
|
@ -1,4 +1,15 @@
|
||||||
module Admin::AsksHelper
|
module Admin::AsksHelper
|
||||||
|
extend self
|
||||||
|
extend ActionView::Helpers::FormTagHelper
|
||||||
|
extend ActionView::Helpers::FormOptionsHelper
|
||||||
|
extend ActionView::Helpers::DateHelper
|
||||||
|
extend ActionView::Helpers::TagHelper
|
||||||
|
extend ActionView::Helpers::RenderingHelper
|
||||||
|
extend ActionView::Context
|
||||||
|
extend OrbitBasis::RenderAnywhere
|
||||||
|
extend ActionView::Helpers::UrlHelper
|
||||||
|
extend OrbitFormHelper
|
||||||
|
extend Ckeditor::Helpers::FormHelper
|
||||||
def set_input_name(input_name)
|
def set_input_name(input_name)
|
||||||
@input_name = input_name
|
@input_name = input_name
|
||||||
end
|
end
|
||||||
|
@ -14,24 +25,39 @@ module Admin::AsksHelper
|
||||||
end.join.html_safe
|
end.join.html_safe
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
def multiple_lang_tag(index1,type_of_tag,field,value=nil,custom_options={},combine_element='',exteral_options={})
|
def multiple_lang_tag(index1,type_of_tag,field,value=nil,custom_options={},combine_element='',exteral_options={},sortable=false)
|
||||||
content_tag(:div,{:class => "tab-panel"}.merge(exteral_options)) do
|
if !index1.nil?
|
||||||
if !index1.nil?
|
all_field = (get_input_name + "[#{index1}][#{field}][parant]").gsub(/\[/,'_').gsub(/\]/,'')
|
||||||
all_field = (get_input_name + "[#{index1}][#{field}][parant]").gsub(/\[/,'_').gsub(/\]/,'')
|
else
|
||||||
else
|
all_field = (get_input_name + "[#{field}][parant]").gsub(/\[/,'_').gsub(/\]/,'')
|
||||||
all_field = (get_input_name + "[#{field}][parant]").gsub(/\[/,'_').gsub(/\]/,'')
|
end
|
||||||
end
|
tmp = (I18n.available_locales.collect do |locale|
|
||||||
(I18n.available_locales.collect do |locale|
|
active_flag = ((locale == I18n.locale) ? ' active' : '')
|
||||||
active_flag = ((locale == I18n.locale) ? ' active' : '')
|
content_tag(:div,:class => "tab-content#{active_flag}",:id=>"#{all_field}_#{locale}") do
|
||||||
content_tag(:div,:class => "tab-content#{active_flag}",:id=>"#{all_field}_#{locale}") do
|
value_locale = value[locale.to_s] rescue nil
|
||||||
value_locale = value[locale.to_s] rescue nil
|
if !index1.nil?
|
||||||
if !index1.nil?
|
self.__send__("#{type_of_tag}_tag","#{get_input_name}[#{index1}][#{field}][#{locale}]",value_locale,custom_options)
|
||||||
self.__send__("#{type_of_tag}_tag","#{get_input_name}[#{index1}][#{field}][#{locale}]",value_locale,custom_options)
|
else
|
||||||
else
|
self.__send__("#{type_of_tag}_tag","#{get_input_name}[#{field}][#{locale}]",value_locale,custom_options)
|
||||||
self.__send__("#{type_of_tag}_tag","#{get_input_name}[#{field}][#{locale}]",value_locale,custom_options)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end.join + create_lang_panel(all_field)).html_safe + combine_element
|
end
|
||||||
|
end.join + create_lang_panel(all_field)).html_safe + combine_element
|
||||||
|
|
||||||
|
if sortable
|
||||||
|
if exteral_options['style'].nil?
|
||||||
|
exteral_options['style'] = 'display: flex;align-items: center;flex-wrap: nowrap;'
|
||||||
|
else
|
||||||
|
exteral_options['style'] = exteral_options['style'] + 'display: flex;align-items: center;flex-wrap: nowrap;'
|
||||||
|
end
|
||||||
|
content_tag(:div,{:class => "tab-panel border"}.merge(exteral_options)) do
|
||||||
|
("<i class=\"icons-list-2\" style=\"cursor: grab;font-size: x-large;\"></i>" +content_tag(:div) do
|
||||||
|
tmp
|
||||||
|
end).html_safe
|
||||||
|
end
|
||||||
|
else
|
||||||
|
content_tag(:div,{:class => "tab-panel"}.merge(exteral_options)) do
|
||||||
|
tmp
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
def time_setting_block(key,value={})
|
def time_setting_block(key,value={})
|
||||||
|
@ -107,7 +133,24 @@ module Admin::AsksHelper
|
||||||
def ask_label(value,required='false')
|
def ask_label(value,required='false')
|
||||||
label_tag(nil,value,{:class=>"control-label#{required=='true' ? ' required' : ''}"})
|
label_tag(nil,value,{:class=>"control-label#{required=='true' ? ' required' : ''}"})
|
||||||
end
|
end
|
||||||
def show_on_front(k,v,value=nil,readonly=false)
|
def format_checkbox(options,value,multple_choose=false)
|
||||||
|
Array(options).select{|index1,option| option['disabled'] != 'true'}.collect do |index1,option|
|
||||||
|
if multple_choose
|
||||||
|
if value[index1]==index1
|
||||||
|
"●#{option[I18n.locale]}"
|
||||||
|
else
|
||||||
|
"○#{option[I18n.locale]}"
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if index1 == value
|
||||||
|
"●#{option[I18n.locale]}"
|
||||||
|
else
|
||||||
|
"○#{option[I18n.locale]}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end.join(' ')
|
||||||
|
end
|
||||||
|
def show_on_front(k,v,value=nil,readonly=false,lock=false)
|
||||||
field_name = "#{get_input_name}[custom_values][#{k}]"
|
field_name = "#{get_input_name}[custom_values][#{k}]"
|
||||||
begin
|
begin
|
||||||
case v['type']
|
case v['type']
|
||||||
|
@ -116,7 +159,11 @@ module Admin::AsksHelper
|
||||||
when 'select'
|
when 'select'
|
||||||
prompt_hash = v['prompt_word'][I18n.locale].blank? ? {} : {prompt: v['prompt_word'][I18n.locale]}
|
prompt_hash = v['prompt_word'][I18n.locale].blank? ? {} : {prompt: v['prompt_word'][I18n.locale]}
|
||||||
prompt_hash.merge(:required => v['required']=='true')
|
prompt_hash.merge(:required => v['required']=='true')
|
||||||
readonly ? value : select_tag(field_name,options_for_select(Array(v['options']).select{|index1,option| option['disabled'] != 'true'}.collect{|index1,option| [option[I18n.locale],index1]},selected: value),prompt_hash)
|
if lock
|
||||||
|
format_checkbox(v['options'],value)
|
||||||
|
else
|
||||||
|
readonly ? (v['options'][value.to_s][I18n.locale] rescue '') : select_tag(field_name,options_for_select(Array(v['options']).select{|index1,option| option['disabled'] != 'true'}.collect{|index1,option| [option[I18n.locale],index1]},selected: value),prompt_hash)
|
||||||
|
end
|
||||||
when 'date'
|
when 'date'
|
||||||
if value.nil?
|
if value.nil?
|
||||||
value = {}
|
value = {}
|
||||||
|
@ -137,16 +184,24 @@ module Admin::AsksHelper
|
||||||
if value.nil?
|
if value.nil?
|
||||||
value = {}
|
value = {}
|
||||||
end
|
end
|
||||||
readonly ? v['options'][value.to_i] : Array(v['options']).select{|index1,option| option['disabled'] != 'true'}.collect do |index1,option|
|
if lock
|
||||||
"#{radio_button_tag(field_name,index1,value==index1,{:required => v['required']=='true'})}#{option[I18n.locale]}"
|
format_checkbox(v['options'],value)
|
||||||
end.join
|
else
|
||||||
|
readonly ? (v['options'][value.to_s][I18n.locale] rescue '') : Array(v['options']).select{|index1,option| option['disabled'] != 'true'}.collect do |index1,option|
|
||||||
|
"#{radio_button_tag(field_name,index1,value==index1,{:required => v['required']=='true'})}#{option[I18n.locale]}"
|
||||||
|
end.join
|
||||||
|
end
|
||||||
when 'checkbox'
|
when 'checkbox'
|
||||||
if value.nil?
|
if value.nil?
|
||||||
value = {}
|
value = {}
|
||||||
end
|
end
|
||||||
readonly ? value.collect{|k1,v1| Array(v['options'])[v1.to_i][1][I18n.locale]}.join(', ') : Array(v['options']).select{|index1,option| option['disabled'] != 'true'}.collect do |index1,option|
|
if lock
|
||||||
"#{check_box_tag("#{field_name}[#{index1}]",index1,value[index1]==index1)}#{option[I18n.locale]}"
|
format_checkbox(v['options'],value,true)
|
||||||
end.join
|
else
|
||||||
|
readonly ? value.collect{|k1,v1| Array(v['options'])[v1.to_i][1][I18n.locale]}.join(', ') : Array(v['options']).select{|index1,option| option['disabled'] != 'true'}.collect do |index1,option|
|
||||||
|
"#{check_box_tag("#{field_name}[#{index1}]",index1,value[index1]==index1)}#{option[I18n.locale]}"
|
||||||
|
end.join
|
||||||
|
end
|
||||||
when 'file'
|
when 'file'
|
||||||
file_value = value[0] rescue nil
|
file_value = value[0] rescue nil
|
||||||
file_path = value[1] rescue nil
|
file_path = value[1] rescue nil
|
||||||
|
@ -165,25 +220,24 @@ module Admin::AsksHelper
|
||||||
</label><div class=\"filename\"></div></div>"
|
</label><div class=\"filename\"></div></div>"
|
||||||
end
|
end
|
||||||
rescue => e
|
rescue => e
|
||||||
debug [e.inspect,e.backtrace]
|
"<pre>#{e.inspect}<br>#{e.backtrace.to_yaml}</pre>"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
def custom_field_block(k,v={})
|
def custom_field_block(k,v={})
|
||||||
set_input_name('ask_setting[custom_fields]')
|
|
||||||
markups = LIST[:markups].select{|k,v| k != 'member_relationship' && k != 'address'}.collect{|key,val| [t("lists.markups."+key),key]} +[[t('ask.file_field'),'file'],[t('ask.image_field'),'image']]
|
markups = LIST[:markups].select{|k,v| k != 'member_relationship' && k != 'address'}.collect{|key,val| [t("lists.markups."+key),key]} +[[t('ask.file_field'),'file'],[t('ask.image_field'),'image']]
|
||||||
multi_lang_tag = multiple_lang_tag(k,'text_field','field',v['field'],{placeholder: t('ask.field_name')})
|
multi_lang_tag = multiple_lang_tag(k,'text_field','field',v['field'],{placeholder: t('ask.field_name')})
|
||||||
field_select_tag = field_select_tag(k,'type',markups,v['type'],{:onchange=>'check_available_setting_block(this)'})
|
field_select_tag = field_select_tag(k,'type',markups,v['type'],{:onchange=>'check_available_setting_block(this)'})
|
||||||
key = hidden_field_tag "ask_setting[custom_fields][#{k}][key]",k,{'class' => 'key'}
|
key = hidden_field_tag "#{get_input_name}[#{k}][key]",k,{'class' => 'key'}
|
||||||
all_new_options = Array(v['options']).collect do |key,value|
|
all_new_options = Array(v['options']).collect do |key,value|
|
||||||
tmp = create_delete_button('delete_added_select_option').html_safe+hidden_field_tag("ask_setting[custom_fields][#{k}][options][#{key}][disabled]",value['disabled'],{'class' => 'disabled_field'})
|
tmp = create_delete_button('delete_added_select_option').html_safe+hidden_field_tag("#{get_input_name}[#{k}][options][#{key}][disabled]",value['disabled'],{'class' => 'disabled_field'})
|
||||||
hidden_style = value['disabled'] == 'true' ? {style: 'display:none;'} : {}
|
hidden_style = value['disabled'] == 'true' ? {style: 'display:none;'} : {}
|
||||||
"#{multiple_lang_tag(k,'text_field',"options][#{key}",value,{placeholder: t('ask.option_name')},tmp,hidden_style)}"
|
"#{multiple_lang_tag(k,'text_field',"options][#{key}",value,{placeholder: t('ask.option_name')},tmp,hidden_style,true)}"
|
||||||
end.join
|
end.join
|
||||||
active_class = ['select','radio_button','checkbox'].include?(v['type']) ? ' active' : ''
|
active_class = ['select','radio_button','checkbox'].include?(v['type']) ? ' active' : ''
|
||||||
active_prompt_class = ['date','radio_button','checkbox'].exclude?(v['type']) ? ' active' : ''
|
active_prompt_class = ['date','radio_button','checkbox'].exclude?(v['type']) ? ' active' : ''
|
||||||
multi_lang_prompt_tag = "<div class=\"prompt_word#{active_prompt_class}\">#{multiple_lang_tag(k,'text_field','prompt_word',v['prompt_word'],{placeholder: t('ask.prompt_word')})}</div>"
|
multi_lang_prompt_tag = "<div class=\"prompt_word#{active_prompt_class}\">#{multiple_lang_tag(k,'text_field','prompt_word',v['prompt_word'],{placeholder: t('ask.prompt_word')})}</div>"
|
||||||
require_ask_tag = "<div>#{t('ask.required')}: #{field_radio_button_tag(k,'required','true',v['required']=='true')}#{t('ask.yes')}#{field_radio_button_tag(k,'required','false',v['required']!='true')}#{t('ask.no')}</div>"
|
require_ask_tag = "<div>#{t('ask.required')}: #{field_radio_button_tag(k,'required','true',v['required']=='true')}#{t('ask.yes')}#{field_radio_button_tag(k,'required','false',v['required']!='true')}#{t('ask.no')}</div>"
|
||||||
tmp = "<div class=\"add_new_options#{active_class}\">#{all_new_options}<input type=\"button\" value=\"#{t('ask.add_new_options')}\" onclick=\"add_new_options_for_field(this,#{k})\"></div>"
|
tmp = "<div class=\"add_new_options#{active_class}\">#{all_new_options}<input class=\"btn btn-info\" type=\"button\" value=\"#{t('ask.add_new_options')}\" onclick=\"add_new_options_for_field(this,#{k})\"></div>"
|
||||||
field_html = "<tr class=\"custom_field\">
|
field_html = "<tr class=\"custom_field\">
|
||||||
<td>
|
<td>
|
||||||
#{multi_lang_tag}
|
#{multi_lang_tag}
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
class AskCategoryPrintSetting
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
field :print_format, type: String,default: ''
|
||||||
|
field :save_name, type: String,default: 'ask_{title}'
|
||||||
|
field :category_id
|
||||||
|
end
|
|
@ -0,0 +1,29 @@
|
||||||
|
class AskCategorySetting
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
after_initialize do
|
||||||
|
if !self.new_record?
|
||||||
|
if self.default_setting.class != Hash && self.default_setting.class != BSON::Document
|
||||||
|
self.default_setting = {}
|
||||||
|
end
|
||||||
|
if self.default_setting[:agree_show].nil?
|
||||||
|
self.default_setting[:agree_show] = true
|
||||||
|
end
|
||||||
|
if self.default_setting[:agree_usage].nil?
|
||||||
|
self.default_setting[:agree_usage] = false
|
||||||
|
end
|
||||||
|
if self.custom_fields.class != Hash && self.custom_fields.class != BSON::Document
|
||||||
|
self.custom_fields = {}
|
||||||
|
end
|
||||||
|
self.save
|
||||||
|
end
|
||||||
|
end
|
||||||
|
def custom_fields
|
||||||
|
tmp = super
|
||||||
|
tmp.select{|k,v| v['delete'] != true}
|
||||||
|
end
|
||||||
|
field :default_setting, type: Hash,default: {ask_category_id: true,name: true,sex: false,mail: true,phone: false,appointment: false,recaptcha: false,agree_show: true,agree_usage: false}
|
||||||
|
field :custom_fields, type: Hash,default: {}
|
||||||
|
field :usage_rule
|
||||||
|
field :category_id
|
||||||
|
end
|
|
@ -0,0 +1,6 @@
|
||||||
|
class AskCategorySettingIndex
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
field :key,type: Integer,default: 0
|
||||||
|
field :category_id
|
||||||
|
end
|
|
@ -0,0 +1,6 @@
|
||||||
|
class AskPrintSetting
|
||||||
|
include Mongoid::Document
|
||||||
|
include Mongoid::Timestamps
|
||||||
|
field :print_format, type: String,default: ''
|
||||||
|
field :save_name, type: String,default: 'ask_{title}'
|
||||||
|
end
|
|
@ -23,6 +23,7 @@ class AskQuestion
|
||||||
field :email_id
|
field :email_id
|
||||||
field :custom_values, type: Hash,default: {}
|
field :custom_values, type: Hash,default: {}
|
||||||
field :agree_show,type: Boolean,default: false
|
field :agree_show,type: Boolean,default: false
|
||||||
|
field :agree_usage,type: Boolean,default: false
|
||||||
# validates_presence_of :name, :identity, :mail, :title, :content
|
# validates_presence_of :name, :identity, :mail, :title, :content
|
||||||
|
|
||||||
def email
|
def email
|
||||||
|
|
|
@ -2,18 +2,27 @@ class AskSetting
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
after_initialize do
|
after_initialize do
|
||||||
if default_setting.class != Hash
|
if !self.new_record?
|
||||||
default_setting = {}
|
if self.default_setting.class != Hash && self.default_setting.class != BSON::Document
|
||||||
|
self.default_setting = {}
|
||||||
|
end
|
||||||
|
if self.default_setting[:agree_show].nil?
|
||||||
|
self.default_setting[:agree_show] = true
|
||||||
|
end
|
||||||
|
if self.default_setting[:agree_usage].nil?
|
||||||
|
self.default_setting[:agree_usage] = false
|
||||||
|
end
|
||||||
|
if self.custom_fields.class != Hash && self.custom_fields.class != BSON::Document
|
||||||
|
self.custom_fields = {}
|
||||||
|
end
|
||||||
|
self.save
|
||||||
end
|
end
|
||||||
if custom_fields.class != Hash
|
|
||||||
custom_fields = {}
|
|
||||||
end
|
|
||||||
self.save
|
|
||||||
end
|
end
|
||||||
def custom_fields
|
def custom_fields
|
||||||
tmp = super
|
tmp = super
|
||||||
tmp.select{|k,v| v['delete'] != true}
|
tmp.select{|k,v| v['delete'] != true}
|
||||||
end
|
end
|
||||||
field :default_setting, type: Hash,default: {ask_category_id: true,name: true,sex: false,mail: true,phone: false,appointment: false,recaptcha: false}
|
field :default_setting, type: Hash,default: {ask_category_id: true,name: true,sex: false,mail: true,phone: false,appointment: false,recaptcha: false,agree_show: true,agree_usage: false}
|
||||||
field :custom_fields, type: Hash,default: {}
|
field :custom_fields, type: Hash,default: {}
|
||||||
|
field :usage_rule
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,142 @@
|
||||||
|
<style type="text/css">
|
||||||
|
thead td {
|
||||||
|
text-align: center;
|
||||||
|
color: blueviolet;
|
||||||
|
}
|
||||||
|
.add_new_options,.prompt_word,.time_setting_block{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.add_new_options.active,.prompt_word.active,.time_setting_block.active{
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
tr td {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
tr.custom_field td:nth-child(1){
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
td{
|
||||||
|
padding: 0.5em;
|
||||||
|
}
|
||||||
|
.tab-content{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.tab-content.active{
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.tab-panel{
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
tr.custom_field {
|
||||||
|
border: 0.1em solid #8e00ff;
|
||||||
|
}
|
||||||
|
tr.custom_field > td >div {
|
||||||
|
padding: 0.5em 0;
|
||||||
|
}
|
||||||
|
input[type=text] {
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript">
|
||||||
|
<%
|
||||||
|
option_multi_lang_tag = multiple_lang_tag(-1,'text_field','options][-2',nil,{placeholder: t('ask.option_name')},create_delete_button('delete_added_select_option').html_safe+hidden_field_tag("#{get_input_name}[-1][options][-2][disabled]",nil,{'class' => 'disabled_field'}),{},true)
|
||||||
|
%>
|
||||||
|
function check_available_setting_block(ele){
|
||||||
|
var tmp = $(ele).val()
|
||||||
|
var parent_div = $(ele).parents('.custom_field').eq(0)
|
||||||
|
if (tmp != 'date' && tmp != 'radio_button' && tmp!='checkbox'){
|
||||||
|
parent_div.find('.prompt_word').addClass('active')
|
||||||
|
}else{
|
||||||
|
parent_div.find('.prompt_word').removeClass('active')
|
||||||
|
}
|
||||||
|
if (tmp == 'select' || tmp == 'radio_button' || tmp=='checkbox'){
|
||||||
|
parent_div.find('.add_new_options').addClass('active')
|
||||||
|
}else{
|
||||||
|
parent_div.find('.add_new_options').removeClass('active')
|
||||||
|
}
|
||||||
|
if (tmp == 'date'){
|
||||||
|
parent_div.find('.time_setting_block').addClass('active')
|
||||||
|
}else{
|
||||||
|
parent_div.find('.time_setting_block').removeClass('active')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function delete_field_func(ele){
|
||||||
|
$(ele).parents('tr').remove()
|
||||||
|
var all_delete_field = $('.delete_field').val()
|
||||||
|
all_delete_field = all_delete_field + ',' + $(ele).parents('tr').find('.key').val()
|
||||||
|
$('.delete_field').val(all_delete_field)
|
||||||
|
}
|
||||||
|
function add_new_options_for_field(ele,key){
|
||||||
|
var add_html = "<%= option_multi_lang_tag.inspect %>"
|
||||||
|
add_html = add_html.replace(/-1/g,key)
|
||||||
|
var parent_div = $(ele).parents('.add_new_options')
|
||||||
|
var tab_panel = parent_div.eq(0).find('.tab-panel')
|
||||||
|
var tab_panel_length = tab_panel.length
|
||||||
|
add_html = add_html.replace(/icons-list-2/g,'icons-list-3')
|
||||||
|
add_html = add_html.replace(/-2/g,tab_panel_length)
|
||||||
|
add_html = add_html.replace(/icons-list-3/g,'icons-list-2')
|
||||||
|
parent_div.find('input[type="button"]').eq(-1).before($('<div/>').html(add_html).text().slice(1,-2))
|
||||||
|
}
|
||||||
|
function delete_added_select_option(ele){
|
||||||
|
var parent_div = $(ele).parents('.tab-panel')
|
||||||
|
parent_div.find('.disabled_field').val('true')
|
||||||
|
parent_div.hide()
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style type="text/css">
|
||||||
|
.border {
|
||||||
|
padding: 0.5em 0;
|
||||||
|
border-top: 0.1em solid #099700;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<fieldset>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<%= t('ask.field') %>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<%= t('ask.whether_open') %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<% ask_setting.default_setting.each do |k,v| %>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<%= ['agree_show','agree_usage'].include?(k.to_s) ? t("ask.#{k}_checkbox") : t("mongoid.attributes.ask_question.#{k}") %>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<%= f.select "default_setting[#{k}]",[[t('yes'),'true'],[t('no'),false]] ,selected: v %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<%= t("ask.usage_rule") %>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<%= f.text_area "usage_rule",class: 'ckeditor' %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<% ask_setting.custom_fields.each do |k,v| %>
|
||||||
|
<%= custom_field_block(k,v).html_safe %>
|
||||||
|
<% end %>
|
||||||
|
<tr class="add_field">
|
||||||
|
<td colspan="2" style="text-align: center;">
|
||||||
|
<input class="btn btn-info" type="button" value="<%= t('add')%>" onclick="add_new_field(this)">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" style="text-align: center;">
|
||||||
|
<%= hidden_field_tag :delete_field, nil,{'class'=> 'delete_field' } %>
|
||||||
|
<%= f.hidden_field :id, value: ask_setting.id %>
|
||||||
|
<input class="btn btn-primary" type="submit" value="<%= submit_text %>">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
|
@ -0,0 +1,26 @@
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th></th>
|
||||||
|
<th></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<%= label_tag t('ask.save_name') %>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<%= text_field_tag "save_name",print_setting.save_name %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<%= label_tag t('ask.print_format') %>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<%= text_area_tag "print_format",print_setting.print_format,class: 'ckeditor' %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<%
|
||||||
|
set_input_name('ask_category_setting[custom_fields]')
|
||||||
|
%>
|
||||||
|
<%= form_for ask_setting,method: 'post',url: "/#{I18n.locale}/admin/asks/category_setting_save",html: { class: "fade-in active detail", 'id' => ask_setting.id.to_s ,:id => ask_setting.id} do |f| %>
|
||||||
|
<%= render partial: 'ask_setting',locals:{ask_setting: ask_setting,f: f,submit_text: t('ask.modify')} %>
|
||||||
|
<%= hidden_field_tag "category_id",ask_setting.category_id %>
|
||||||
|
<button type="button" class="btn btn-danger" onclick="window.location='<%= "/#{I18n.locale}/admin/asks/category_setting_delete?id=#{ask_setting.id}" %>'"><%= t('delete_') %></button>
|
||||||
|
<% end %>
|
|
@ -1,5 +1,5 @@
|
||||||
<%
|
<%
|
||||||
ask_setting = AskSetting.first
|
ask_setting = @ask_setting
|
||||||
set_input_name('ask_question')
|
set_input_name('ask_question')
|
||||||
%>
|
%>
|
||||||
<% content_for :page_specific_css do %>
|
<% content_for :page_specific_css do %>
|
||||||
|
@ -43,24 +43,24 @@
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<tr>
|
<tr>
|
||||||
<td><%= AskQuestion.human_attribute_name(:name) %>:<%= @ask_question.name %></td>
|
<td><%= AskQuestion.human_attribute_name(:name) %>:<%= @ask_question.name %></td>
|
||||||
<!-- <td><%= AskQuestion.human_attribute_name(:identity) %>:
|
<!-- <td><%# AskQuestion.human_attribute_name(:identity) %>:
|
||||||
<% Tag.where({:id => @ask_question[:identity]}).each do |tag| %>
|
<%# Tag.where({:id => @ask_question[:identity]}).each do |tag| %>
|
||||||
<%= tag.name %>
|
<%# tag.name %>
|
||||||
<% end %>
|
<%# end %>
|
||||||
</td> -->
|
</td> -->
|
||||||
<td><%= AskQuestion.human_attribute_name(:mail) %>:<%= @ask_question.mail %></td>
|
<td><%= AskQuestion.human_attribute_name(:mail) %>:<%= @ask_question.mail %></td>
|
||||||
<td><%= AskQuestion.human_attribute_name(:phone) %>:<%= @ask_question.phone %></td>
|
<td><%= AskQuestion.human_attribute_name(:phone) %>:<%= @ask_question.phone %></td>
|
||||||
<!-- <td><%= AskQuestion.human_attribute_name(:fax) %>:<%= @ask_question.fax %></td> -->
|
<!-- <td><%# AskQuestion.human_attribute_name(:fax) %>:<%# @ask_question.fax %></td> -->
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="5"><%= t('title') %>:<%= f.text_field :title %></td>
|
<td colspan="5"><%= t('title') %>:<%= f.text_field :title %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="5"><%= AskQuestion.human_attribute_name(:appointment) %>:<%= @ask_question.appointment.strftime("%Y-%m-%d %H:%M") rescue nil %></td>
|
<td colspan="5"><%= AskQuestion.human_attribute_name(:appointment) %>:<%= @ask_question.appointment.strftime("%Y-%m-%d %H:%M") rescue nil %></td>
|
||||||
<!-- <td colspan="5"><%= AskQuestion.human_attribute_name(:name) %>:<%= @ask_question.name %></td> -->
|
<!-- <td colspan="5"><%# AskQuestion.human_attribute_name(:name) %>:<%# @ask_question.name %></td> -->
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<!-- <td colspan="5"><%= AskQuestion.human_attribute_name(:name) %>:<br/><%= @ask_question.name.gsub(/[(\n)(\r)]/, "\n" => "<br/>", "\r" => "" ).html_safe %></td> -->
|
<!-- <td colspan="5"><%# AskQuestion.human_attribute_name(:name) %>:<br/><%# @ask_question.name.gsub(/[(\n)(\r)]/, "\n" => "<br/>", "\r" => "" ).html_safe %></td> -->
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
<li><a href="/<%= I18n.locale %>/admin/asks/<%=b.id.to_s%>/edit"><%= t(:edit) %></a></li>
|
<li><a href="/<%= I18n.locale %>/admin/asks/<%=b.id.to_s%>/edit"><%= t(:edit) %></a></li>
|
||||||
<li><a href="#" class="delete text-error" rel="/admin/asks/<%=b.id.to_s%>"><%= t(:delete_) %></a></li>
|
<li><a href="#" class="delete text-error" rel="/admin/asks/<%=b.id.to_s%>"><%= t(:delete_) %></a></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<li><a href="/<%= I18n.locale %>/admin/asks/<%=b.id.to_s%>/print" target="_blank"><%= t('ask.print') %></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -0,0 +1,126 @@
|
||||||
|
<% trans = 'mongoid.attributes.ask_question' %>
|
||||||
|
<div style="font-size: 1.5em;">
|
||||||
|
<%= t('ask.explanation') %>:
|
||||||
|
<br>
|
||||||
|
{ask_time} -> <%= t('ask.ask_time') %>
|
||||||
|
<br>
|
||||||
|
{title} -> <%= t('title') %>
|
||||||
|
<br>
|
||||||
|
{category} -> <%= t("#{trans}.ask_category_id") %>
|
||||||
|
<br>
|
||||||
|
{name} -> <%= t("#{trans}.name") %>
|
||||||
|
<br>
|
||||||
|
{name|mask} -> <%= t("ask.name_mask") %>
|
||||||
|
<br>
|
||||||
|
{sex} -> <%= t("#{trans}.sex") %>
|
||||||
|
(<%= t("#{trans}.male") %>/<%= t("#{trans}.female") %>)
|
||||||
|
<br>
|
||||||
|
{mail} -> <%= t("#{trans}.mail") %>
|
||||||
|
<br>
|
||||||
|
{phone} -> <%= t("#{trans}.phone") %>
|
||||||
|
<br>
|
||||||
|
{appointment} -> <%= t("#{trans}.appointment") %>
|
||||||
|
<br>
|
||||||
|
{agree_show} -> <%= t("#{trans}.agree_show_explain") %>
|
||||||
|
<br>
|
||||||
|
{custom1} -> <%= t("ask.custom1") %>
|
||||||
|
<br>
|
||||||
|
{custom2} -> <%= t("ask.custom2") %>
|
||||||
|
<br>
|
||||||
|
{custom3} -> <%= t("ask.custom3") %>
|
||||||
|
<br>
|
||||||
|
<%= t("ask.and_so_on") %>
|
||||||
|
<br>
|
||||||
|
{custom} -><%= t("ask.custom_explain") %>
|
||||||
|
<br>
|
||||||
|
{custom|format} -><%= t("ask.custom_format_explain") %>
|
||||||
|
<br>
|
||||||
|
{?_title} -> ?<%= t("ask.can_be_filled_with") %>ask_time、title、category、name、sex、mail、phone、appointment、agree_show、custom、custom1、custom2、custom3 ...,<%= t("ask.show_title_trans") %>, <%= t("ask.like") %>{sex_title}-><%= t("#{trans}.sex") %>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<%= t("ask.example") %>:
|
||||||
|
<br>
|
||||||
|
<%= t("ask.example_explain") %>
|
||||||
|
<br>
|
||||||
|
<%= t('ask.print_format') %>:
|
||||||
|
<br>
|
||||||
|
<table border="1" cellpadding="1" cellspacing="1" style="width:500px;">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align: center;"><%= t("ask.example") %></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<table border="1" cellpadding="1" cellspacing="1" style="width:500px;">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>{title_title}</td>
|
||||||
|
<td>{title}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{category_title}</td>
|
||||||
|
<td>{category}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{name_title}</td>
|
||||||
|
<td>{name}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{mail_title}</td>
|
||||||
|
<td>{mail}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{custom_title}</td>
|
||||||
|
<td>{custom}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{custom1_title}</td>
|
||||||
|
<td>{custom1}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<%= t('ask.output_result') %>:
|
||||||
|
<br>
|
||||||
|
<table border="1" cellpadding="1" cellspacing="1" style="width:500px;">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align: center;"><%= t("ask.example") %></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table border="1" cellpadding="1" cellspacing="1" style="width:500px;">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td><%= t('title') %></td>
|
||||||
|
<td>example</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><%= t("#{trans}.ask_category_id") %></td>
|
||||||
|
<td>測試</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><%= t("#{trans}.name") %></td>
|
||||||
|
<td>工程師1號</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><%= t("#{trans}.mail") %></td>
|
||||||
|
<td>test@rulingcom.com</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>test2</td>
|
||||||
|
<td>b</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>test3</td>
|
||||||
|
<td>c</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>test1</td>
|
||||||
|
<td>a</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
|
@ -0,0 +1,173 @@
|
||||||
|
<%= t('ask.setting_type') %>: <%= select_tag "setting_type", options_for_select([[t('ask.field_setting'),'field'],[t('ask.print_setting'),'print']]), :class => "category-selector" %>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$('#setting_type').change(function(){
|
||||||
|
if ($(this).val()=='field'){
|
||||||
|
$('#field').attr('class','fade-in active')
|
||||||
|
$('#print').attr('class','fade-in')
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$('#field').attr('class','fade-in')
|
||||||
|
$('#print').attr('class','fade-in active')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
$(document).ready(function(){
|
||||||
|
$('select[name="category_id"]').change(function(){
|
||||||
|
var cat_id = $(this).val()
|
||||||
|
$(this).parents('form').eq(0).attr('data-cat-id',cat_id)
|
||||||
|
$(this).parents('form').eq(0).attr("class",'category-set-page-with-category')
|
||||||
|
})
|
||||||
|
$('.toggle_tag_group a').click(function(){
|
||||||
|
$(this).parents('.toggle_tag_group').eq(0).find('a').attr('class','toggle_tag')
|
||||||
|
$(this).attr('class','toggle_tag active_in')
|
||||||
|
})
|
||||||
|
$('.field a[data-toggle="tab"]').on('show.bs.tab', function (e) {
|
||||||
|
var id = $(e.target).attr('href')
|
||||||
|
if ($(id).length==0){
|
||||||
|
$.ajax({
|
||||||
|
url : "<%= "/#{I18n.locale}/admin/asks/get_category_setting_field" %>",
|
||||||
|
dataType : "text",
|
||||||
|
type : "post",
|
||||||
|
async: false,
|
||||||
|
data: {id: id.replace(/#/g,'')},
|
||||||
|
error: function(){
|
||||||
|
alert('get data failed, please try again later.')
|
||||||
|
},
|
||||||
|
success: function(data){
|
||||||
|
$('.toggle_tag_group.field').after(data)
|
||||||
|
CKEDITOR.replace($(id).find('.ckeditor')[0])
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
<div class="fade-in active" id="field">
|
||||||
|
<style type="text/css">
|
||||||
|
.category-set-page input[type="submit"],.category-set-page input[type="button"]{
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
.fade-in{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.fade-in.active{
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
form.fade-in.active{
|
||||||
|
border: 0.3em solid #132e8b;
|
||||||
|
padding: 1em;
|
||||||
|
}
|
||||||
|
a.toggle_tag{
|
||||||
|
outline: 0;
|
||||||
|
background: #cad0da;
|
||||||
|
padding: 1em;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
a.toggle_tag.active_in{
|
||||||
|
color: white;
|
||||||
|
background: #495c7a;
|
||||||
|
}
|
||||||
|
a.toggle_tag:not(:first-child){
|
||||||
|
border-left: 0.1em solid #9d3874;
|
||||||
|
}
|
||||||
|
.toggle_tag_group{
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<%
|
||||||
|
set_input_name('ask_category_setting[custom_fields]')
|
||||||
|
%>
|
||||||
|
<script type="text/javascript">
|
||||||
|
function add_new_field(ele){
|
||||||
|
var category_id = $(ele).parents('form').eq(0).data('cat-id')
|
||||||
|
$.ajax({
|
||||||
|
url : "<%= "/#{I18n.locale}/admin/asks/get_new_category_setting_index" %>",
|
||||||
|
dataType : "json",
|
||||||
|
type : "post",
|
||||||
|
data: {category_id: category_id},
|
||||||
|
error: function(){
|
||||||
|
alert('init process failed, please try again later.')
|
||||||
|
},
|
||||||
|
success: function(data){
|
||||||
|
var add_field_html = "<%= custom_field_block(-1).inspect %>"
|
||||||
|
add_field_html = add_field_html.replace(/-1/g,data['key'])
|
||||||
|
$('.add_field').before($('<div/>').html(add_field_html).text().slice(1,-2))
|
||||||
|
$('.add_new_options').sortable({'handle':'.icons-list-2'})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<% if @category_not_add.length != 0 %>
|
||||||
|
<% ask_setting = AskCategorySetting.new %>
|
||||||
|
<%= form_for ask_setting,method: 'post',url: "/#{I18n.locale}/admin/asks/category_setting_save",html: { class: "category-set-page"} do |f| %>
|
||||||
|
<div style="padding-bottom: 2em;border-bottom: 0.1em solid #002bff;">
|
||||||
|
<% prompt = t('ask.select_category') %>
|
||||||
|
<%= t('category') %>: <%= select_tag "category_id", options_for_select(@category_not_add.unshift(prompt),selected: prompt,disabled: prompt), :class => "category-selector" %>
|
||||||
|
<%= render partial: 'ask_setting',locals:{ask_setting: ask_setting,f: f,submit_text: t('submit')} %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
<% index1 = 0 %>
|
||||||
|
<% first_category_added = nil %>
|
||||||
|
<div class="toggle_tag_group field">
|
||||||
|
<% @category_added.each do |category_added| %>
|
||||||
|
<% category = @categories.select{|cat| cat.id.to_s==category_added.category_id.to_s}[0] %>
|
||||||
|
<% if !category.nil? %>
|
||||||
|
<% if first_category_added.nil?
|
||||||
|
first_category_added = category_added
|
||||||
|
end
|
||||||
|
%>
|
||||||
|
<% index1+=1 %>
|
||||||
|
<% name1 = category.title %>
|
||||||
|
<a href="#<%= category_added.id.to_s %>" data-toggle="tab" class="toggle_tag<%= ' active_in' if index1== 1 %>"><%= name1.blank? ? "no name" : name1 %></a>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<% if !first_category_added.nil? %>
|
||||||
|
<%= render partial: 'category_setting_field',locals: {ask_setting: first_category_added} %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="fade-in" id="print">
|
||||||
|
<% if @category_print_not_add.length != 0 %>
|
||||||
|
<form action="/<%= I18n.locale %>/admin/asks/category_print_setting_save" class='category-set-page' method="post">
|
||||||
|
<%= hidden_field_tag :authenticity_token, form_authenticity_token %>
|
||||||
|
<div style="padding-bottom: 2em;border-bottom: 0.1em solid #002bff;">
|
||||||
|
<% prompt = t('ask.select_category') %>
|
||||||
|
<%= t('category') %>: <%= select_tag "category_id", options_for_select(@category_print_not_add.unshift(prompt),selected: prompt,disabled: prompt), :class => "category-selector" %>
|
||||||
|
<%= render partial: 'category_print_setting',locals:{print_setting: AskCategoryPrintSetting.new} %>
|
||||||
|
<input type="submit" class="btn btn-info" value="<%= t('add') %>">
|
||||||
|
<%= render partial: 'print_format_explain' %>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<% else %>
|
||||||
|
<%= render partial: 'print_format_explain' %>
|
||||||
|
<% end %>
|
||||||
|
<% index1 = 0 %>
|
||||||
|
<% categories = []%>
|
||||||
|
<div class="toggle_tag_group" style="margin-top: 1em;">
|
||||||
|
<% @category_print_added.each do |category_print_added| %>
|
||||||
|
<% category = @categories.select{|cat| cat.id.to_s==category_print_added.category_id.to_s}[0] %>
|
||||||
|
<% categories << category %>
|
||||||
|
<% if !category.nil? %>
|
||||||
|
<% index1+=1 %>
|
||||||
|
<% name1 = category.title %>
|
||||||
|
<a href="#<%= category_print_added.id.to_s %>" data-toggle="tab" class="toggle_tag<%= ' active_in' if index1== 1 %>"><%= name1.blank? ? "no name" : name1 %></a>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<% index2 = 0 %>
|
||||||
|
<% @category_print_added.each_with_index do |category_print_added,index1| %>
|
||||||
|
<% if !categories[index1].nil? %>
|
||||||
|
<% index2 = index2 + 1 %>
|
||||||
|
<form action="<%= "/#{I18n.locale}/admin/asks/category_print_setting_save" %>" method="post" id='<%= category_print_added.id.to_s %>' class="fade-in <%= 'active' if index2==1 %>">
|
||||||
|
<%= hidden_field_tag :category_id, category_print_added.category_id %>
|
||||||
|
<%= hidden_field_tag :authenticity_token, form_authenticity_token %>
|
||||||
|
<%= render partial: 'category_print_setting',locals:{print_setting: category_print_added} %>
|
||||||
|
<input class="btn btn-info" type="submit" value="<%= t('ask.modify') %>">
|
||||||
|
<button class="btn btn-danger" type="button" onclick="window.location='<%= "/#{I18n.locale}/admin/asks/category_print_setting_delete?id=#{category_print_added.id}" %>'"><%= t('delete_') %></button>
|
||||||
|
</form>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
|
@ -0,0 +1,48 @@
|
||||||
|
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js">
|
||||||
|
</script>
|
||||||
|
<script src="https://html2canvas.hertzen.com/dist/html2canvas.js"></script>
|
||||||
|
<%= javascript_include_tag "jspdf.min" %>
|
||||||
|
<style>
|
||||||
|
input[type="button"],button,input[type="submit"] {
|
||||||
|
outline: 0;
|
||||||
|
border-radius: 1.3em;
|
||||||
|
background: #d9e4f7;
|
||||||
|
font-weight: bold;
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
input[type="button"]:hover,button:hover,input[type="submit"]:hover {
|
||||||
|
background: #be8a8a;
|
||||||
|
}
|
||||||
|
.print_text{
|
||||||
|
padding: 2em;
|
||||||
|
width: 650px;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
@media print
|
||||||
|
{
|
||||||
|
.no-print, .no-print *
|
||||||
|
{
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript">
|
||||||
|
function save_data(){
|
||||||
|
var filename = '<%= @save_name %>.pdf';
|
||||||
|
$('div.print_text').find('input[type=button]').hide()
|
||||||
|
html2canvas($('div.print_text')[0]).then(canvas => {
|
||||||
|
var pdf = new jsPDF('px', 'mm', 'a4');
|
||||||
|
var width = pdf.internal.pageSize.getWidth()-3;
|
||||||
|
var height = pdf.internal.pageSize.getHeight();
|
||||||
|
pdf.addImage(canvas.toDataURL('image/png'), 'PNG', 0, 0,width ,height );
|
||||||
|
pdf.save(filename);
|
||||||
|
});
|
||||||
|
$('div.print_text').find('input[type=button]').show()
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<div class="no-print" style="text-align: center;">
|
||||||
|
<input onclick="save_data()" value="<%= I18n.t('ask.save_data') %>" type="button">
|
||||||
|
</div>
|
||||||
|
<div class="print_text">
|
||||||
|
<%= @print_text.html_safe %>
|
||||||
|
</div>
|
|
@ -0,0 +1,126 @@
|
||||||
|
<% trans = 'mongoid.attributes.ask_question' %>
|
||||||
|
<div style="font-size: 1.5em;">
|
||||||
|
<%= t('ask.explanation') %>:
|
||||||
|
<br>
|
||||||
|
{ask_time} -> <%= t('ask.ask_time') %>
|
||||||
|
<br>
|
||||||
|
{title} -> <%= t('title') %>
|
||||||
|
<br>
|
||||||
|
{category} -> <%= t("#{trans}.ask_category_id") %>
|
||||||
|
<br>
|
||||||
|
{name} -> <%= t("#{trans}.name") %>
|
||||||
|
<br>
|
||||||
|
{name|mask} -> <%= t("ask.name_mask") %>
|
||||||
|
<br>
|
||||||
|
{sex} -> <%= t("#{trans}.sex") %>
|
||||||
|
(<%= t("#{trans}.male") %>/<%= t("#{trans}.female") %>)
|
||||||
|
<br>
|
||||||
|
{mail} -> <%= t("#{trans}.mail") %>
|
||||||
|
<br>
|
||||||
|
{phone} -> <%= t("#{trans}.phone") %>
|
||||||
|
<br>
|
||||||
|
{appointment} -> <%= t("#{trans}.appointment") %>
|
||||||
|
<br>
|
||||||
|
{agree_show} -> <%= t("#{trans}.agree_show_explain") %>
|
||||||
|
<br>
|
||||||
|
{custom1} -> <%= t("ask.custom1") %>
|
||||||
|
<br>
|
||||||
|
{custom2} -> <%= t("ask.custom2") %>
|
||||||
|
<br>
|
||||||
|
{custom3} -> <%= t("ask.custom3") %>
|
||||||
|
<br>
|
||||||
|
<%= t("ask.and_so_on") %>
|
||||||
|
<br>
|
||||||
|
{custom} -><%= t("ask.custom_explain") %>
|
||||||
|
<br>
|
||||||
|
{custom|format} -><%= t("ask.custom_format_explain") %>
|
||||||
|
<br>
|
||||||
|
{?_title} -> ?<%= t("ask.can_be_filled_with") %>ask_time、title、category、name、sex、mail、phone、appointment、agree_show、custom、custom1、custom2、custom3 ...,<%= t("ask.show_title_trans") %>, <%= t("ask.like") %>{sex_title}-><%= t("#{trans}.sex") %>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<%= t("ask.example") %>:
|
||||||
|
<br>
|
||||||
|
<%= t("ask.example_explain") %>
|
||||||
|
<br>
|
||||||
|
<%= t('ask.print_format') %>:
|
||||||
|
<br>
|
||||||
|
<table border="1" cellpadding="1" cellspacing="1" style="width:500px;">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align: center;"><%= t("ask.example") %></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<table border="1" cellpadding="1" cellspacing="1" style="width:500px;">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>{title_title}</td>
|
||||||
|
<td>{title}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{category_title}</td>
|
||||||
|
<td>{category}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{name_title}</td>
|
||||||
|
<td>{name}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{mail_title}</td>
|
||||||
|
<td>{mail}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{custom_title}</td>
|
||||||
|
<td>{custom}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>{custom1_title}</td>
|
||||||
|
<td>{custom1}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<%= t('ask.output_result') %>:
|
||||||
|
<br>
|
||||||
|
<table border="1" cellpadding="1" cellspacing="1" style="width:500px;">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td style="text-align: center;"><%= t("ask.example") %></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table border="1" cellpadding="1" cellspacing="1" style="width:500px;">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td><%= t('title') %></td>
|
||||||
|
<td>example</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><%= t("#{trans}.ask_category_id") %></td>
|
||||||
|
<td>測試</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><%= t("#{trans}.name") %></td>
|
||||||
|
<td>工程師1號</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><%= t("#{trans}.mail") %></td>
|
||||||
|
<td>test@rulingcom.com</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>test2</td>
|
||||||
|
<td>b</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>test3</td>
|
||||||
|
<td>c</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>test1</td>
|
||||||
|
<td>a</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
|
@ -0,0 +1,36 @@
|
||||||
|
<%= form_for @set,method: 'post',url: @url,html: { class: 'form-horizontal main-forms previewable' } do |f| %>
|
||||||
|
<fieldset>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th></th>
|
||||||
|
<th></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<%= label_tag t('ask.save_name') %>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<%= f.text_field :save_name %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<%= label_tag t('ask.print_format') %>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<%= f.text_area :print_format,class: 'ckeditor' %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" style="text-align: center;">
|
||||||
|
<input class="btn btn-primary" type="submit" value="<%= t('submit')%>">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
<% end %>
|
||||||
|
<%= render partial: 'print_format_explain' %>
|
|
@ -1,89 +1,7 @@
|
||||||
<%
|
<%
|
||||||
set_input_name('ask_setting[custom_fields]')
|
set_input_name('ask_setting[custom_fields]')
|
||||||
%>
|
%>
|
||||||
<style type="text/css">
|
<script>
|
||||||
thead td {
|
|
||||||
text-align: center;
|
|
||||||
color: blueviolet;
|
|
||||||
}
|
|
||||||
.add_new_options,.prompt_word,.time_setting_block{
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.add_new_options.active,.prompt_word.active,.time_setting_block.active{
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
tr td {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
tr.custom_field td:nth-child(1){
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
td{
|
|
||||||
padding: 0.5em;
|
|
||||||
}
|
|
||||||
.tab-content{
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.tab-content.active{
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
.tab-panel{
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
}
|
|
||||||
tr.custom_field {
|
|
||||||
border: 0.1em solid #8e00ff;
|
|
||||||
}
|
|
||||||
tr.custom_field > td >div {
|
|
||||||
padding: 0.5em 0;
|
|
||||||
}
|
|
||||||
input[type=text] {
|
|
||||||
height: 30px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<script type="text/javascript">
|
|
||||||
<%
|
|
||||||
option_multi_lang_tag = multiple_lang_tag(-1,'text_field','options][-2',nil,{placeholder: t('ask.option_name')},create_delete_button('delete_added_select_option').html_safe+hidden_field_tag("ask_setting[custom_fields][-1][options][-2][disabled]",nil,{'class' => 'disabled_field'}))
|
|
||||||
%>
|
|
||||||
function check_available_setting_block(ele){
|
|
||||||
var tmp = $(ele).val()
|
|
||||||
var parent_div = $(ele).parents('.custom_field').eq(0)
|
|
||||||
if (tmp != 'date' && tmp != 'radio_button' && tmp!='checkbox'){
|
|
||||||
parent_div.find('.prompt_word').addClass('active')
|
|
||||||
}else{
|
|
||||||
parent_div.find('.prompt_word').removeClass('active')
|
|
||||||
}
|
|
||||||
if (tmp == 'select' || tmp == 'radio_button' || tmp=='checkbox'){
|
|
||||||
parent_div.find('.add_new_options').addClass('active')
|
|
||||||
}else{
|
|
||||||
parent_div.find('.add_new_options').removeClass('active')
|
|
||||||
}
|
|
||||||
if (tmp == 'date'){
|
|
||||||
parent_div.find('.time_setting_block').addClass('active')
|
|
||||||
}else{
|
|
||||||
parent_div.find('.time_setting_block').removeClass('active')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function delete_field_func(ele){
|
|
||||||
$(ele).parents('tr').remove()
|
|
||||||
var all_delete_field = $('.delete_field').val()
|
|
||||||
all_delete_field = all_delete_field + ',' + $(ele).parents('tr').find('.key').val()
|
|
||||||
$('.delete_field').val(all_delete_field)
|
|
||||||
}
|
|
||||||
function add_new_options_for_field(ele,key){
|
|
||||||
var add_html = "<%= option_multi_lang_tag.inspect %>"
|
|
||||||
add_html = add_html.replace(/-1/g,key)
|
|
||||||
var parent_div = $(ele).parents('.add_new_options')
|
|
||||||
var tab_panel = parent_div.eq(0).find('.tab-panel')
|
|
||||||
var tab_panel_length = tab_panel.length
|
|
||||||
add_html = add_html.replace(/-2/g,tab_panel_length)
|
|
||||||
parent_div.find('input[type="button"]').eq(-1).before($('<div/>').html(add_html).text().slice(1,-2))
|
|
||||||
}
|
|
||||||
function delete_added_select_option(ele){
|
|
||||||
var parent_div = $(ele).parents('.tab-panel')
|
|
||||||
parent_div.find('.disabled_field').val('true')
|
|
||||||
parent_div.hide()
|
|
||||||
}
|
|
||||||
function add_new_field(){
|
function add_new_field(){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url : "<%= get_new_setting_index_admin_asks_path %>",
|
url : "<%= get_new_setting_index_admin_asks_path %>",
|
||||||
|
@ -96,50 +14,16 @@
|
||||||
var add_field_html = "<%= custom_field_block(-1).inspect %>"
|
var add_field_html = "<%= custom_field_block(-1).inspect %>"
|
||||||
add_field_html = add_field_html.replace(/-1/g,data['key'])
|
add_field_html = add_field_html.replace(/-1/g,data['key'])
|
||||||
$('.add_field').before($('<div/>').html(add_field_html).text().slice(1,-2))
|
$('.add_field').before($('<div/>').html(add_field_html).text().slice(1,-2))
|
||||||
|
$('.add_new_options').sortable({'handle':'.icons-list-2'})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
$(document).ready(function(){
|
||||||
|
$('.add_new_options').sortable({'handle':'.icons-list-2'})
|
||||||
|
})
|
||||||
|
</script>
|
||||||
<%= form_for @ask_setting,method: 'post',url: @url,html: { class: 'form-horizontal main-forms previewable' } do |f| %>
|
<%= form_for @ask_setting,method: 'post',url: @url,html: { class: 'form-horizontal main-forms previewable' } do |f| %>
|
||||||
<fieldset>
|
<%= render partial: 'ask_setting',locals:{ask_setting: @ask_setting,f: f,submit_text: t('submit')} %>
|
||||||
<table>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<%= t('ask.field') %>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<%= t('ask.whether_open') %>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<% @ask_setting.default_setting.each do |k,v| %>
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<%= t("mongoid.attributes.ask_question.#{k}") %>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<%= f.select "default_setting[#{k}]",[[t('yes'),'true'],[t('no'),false]] ,selected: v %>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<% end %>
|
|
||||||
<% @ask_setting.custom_fields.each do |k,v| %>
|
|
||||||
<%= custom_field_block(k,v).html_safe %>
|
|
||||||
<% end %>
|
|
||||||
<tr class="add_field">
|
|
||||||
<td colspan="2" style="text-align: center;">
|
|
||||||
<input class="btn btn-info" type="button" value="<%= t('add')%>" onclick="add_new_field()">
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td colspan="2" style="text-align: center;">
|
|
||||||
<%= hidden_field_tag :delete_field, nil,{'class'=> 'delete_field' } %>
|
|
||||||
<%= f.hidden_field :id, value: @ask_setting.id %>
|
|
||||||
<input class="btn btn-primary" type="submit" value="<%= t('submit')%>">
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</fieldset>
|
|
||||||
<% end %>
|
<% end %>
|
|
@ -3,8 +3,8 @@
|
||||||
@categories = data["categories"]
|
@categories = data["categories"]
|
||||||
@tags = data["tags"]
|
@tags = data["tags"]
|
||||||
@module_app = data["module_app"]
|
@module_app = data["module_app"]
|
||||||
ask_setting = AskSetting.first
|
@switch_form = data["switch_form"]
|
||||||
ask_setting = AskSetting.create() if ask_setting.nil?
|
ask_setting = data["ask_setting"]
|
||||||
set_input_name('ask_question')
|
set_input_name('ask_question')
|
||||||
%>
|
%>
|
||||||
<% if data['layout_type'] != 'index' %>
|
<% if data['layout_type'] != 'index' %>
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
<% else %>
|
<% else %>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
#new-ask-question .form-horizontal .control-group > *{
|
#new-ask-question .form-horizontal .control-group > *{
|
||||||
font-size: 1.5em;
|
font-size: 1.125em;
|
||||||
}
|
}
|
||||||
.default_picker label{
|
.default_picker label{
|
||||||
display: none;
|
display: none;
|
||||||
|
@ -65,6 +65,26 @@
|
||||||
<%= stylesheet_link_tag "custom_field" %>
|
<%= stylesheet_link_tag "custom_field" %>
|
||||||
<%# stylesheet_link_tag "jquery-ui-timepicker-addon" %>
|
<%# stylesheet_link_tag "jquery-ui-timepicker-addon" %>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
$(document).ready(function(){
|
||||||
|
$('select[name="ask_question[category_id]"]').change(function(){
|
||||||
|
var category_id = $(this).val()
|
||||||
|
$(this).parents('.ask-question').eq(0).find('select[name="ask_question[category_id]"]').val(category_id)
|
||||||
|
var id
|
||||||
|
if ($('form#'+category_id).length != 0){
|
||||||
|
id = category_id
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
id = 'ask-default-form'
|
||||||
|
}
|
||||||
|
if (id != $(this).parents('form').eq(0).attr('id')){
|
||||||
|
$(this).parents('.ask-question').eq(0).find('form').hide()
|
||||||
|
$(this).parents('.ask-question').eq(0).find('form#'+id).show()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
var datepicker_fn = $.fn.datepicker
|
var datepicker_fn = $.fn.datepicker
|
||||||
var datepicker = $.datepicker
|
var datepicker = $.datepicker
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
|
@ -76,7 +96,6 @@
|
||||||
</script>
|
</script>
|
||||||
<%# javascript_include_tag "lib/bootstrap-datetimepicker" %>
|
<%# javascript_include_tag "lib/bootstrap-datetimepicker" %>
|
||||||
<%# javascript_include_tag "jquery.ui.datepicker.monthyearpicker" %>
|
<%# javascript_include_tag "jquery.ui.datepicker.monthyearpicker" %>
|
||||||
|
|
||||||
<%= javascript_include_tag 'validator' %>
|
<%= javascript_include_tag 'validator' %>
|
||||||
<link href="/assets/ask/ask.css" media="screen" rel="stylesheet">
|
<link href="/assets/ask/ask.css" media="screen" rel="stylesheet">
|
||||||
<div id="new-ask-question" class="ask-question">
|
<div id="new-ask-question" class="ask-question">
|
||||||
|
@ -200,18 +219,37 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<div class="control-group">
|
<% if !ask_setting.usage_rule.blank? %>
|
||||||
<%= f.label :agree_show, class: 'control-label' %>
|
<div class="control-group">
|
||||||
<div class="controls">
|
<%= label_tag :usage_rule,t('ask.usage_rule'), class: 'control-label' %>
|
||||||
<%= f.check_box :agree_show %>
|
<div class="controls">
|
||||||
|
<%= ask_setting.usage_rule.html_safe %>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<% end %>
|
||||||
|
<% if ask_setting.default_setting['agree_usage'] %>
|
||||||
|
<div class="control-group">
|
||||||
|
<%= f.label :agree_usage, class: 'control-label' %>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.check_box :agree_usage %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
<% if ask_setting.default_setting['agree_show'] %>
|
||||||
|
<div class="control-group">
|
||||||
|
<%= f.label :agree_show, class: 'control-label' %>
|
||||||
|
<div class="controls">
|
||||||
|
<%= f.check_box :agree_show %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
<div class="form-actions">
|
<div class="form-actions">
|
||||||
<input type="hidden" name="referer_url" value="<%= request.original_url.split(request.env["HTTP_HOST"]).last %>">
|
<input type="hidden" name="referer_url" value="<%= request.original_url.split(request.env["HTTP_HOST"]).last %>">
|
||||||
<%= f.submit t('submit'), class: 'btn btn-primary', :id => 'button-mail' %>
|
<%= f.submit t('submit'), class: 'btn btn-primary', :id => 'button-mail' %>
|
||||||
<%= f.button t('cancel'), type: 'reset', class: 'btn' %>
|
<%= f.button t('cancel'), type: 'reset', class: 'btn' %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<%= @switch_form.html_safe %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script type='text/javascript'>
|
<script type='text/javascript'>
|
||||||
|
@ -228,8 +266,11 @@
|
||||||
// if( $("#ask_question_content").val()=='' ) $("#ask_question_content").css('border','1px solid #F00');
|
// if( $("#ask_question_content").val()=='' ) $("#ask_question_content").css('border','1px solid #F00');
|
||||||
// });
|
// });
|
||||||
|
|
||||||
$('#new-ask-question .required').each(function() {
|
$('.ask-question .required').each(function() {
|
||||||
$(this).text('*' + $(this).text());
|
var text = $(this).text()
|
||||||
|
if (text[0]!='*'){
|
||||||
|
$(this).text('*' + text);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// $('#new-ask-question form') .submit(function() {
|
// $('#new-ask-question form') .submit(function() {
|
||||||
|
|
|
@ -13,4 +13,6 @@
|
||||||
</tr>
|
</tr>
|
||||||
<% end %>
|
<% end %>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
<% total_pages = data['ask_questions'].total_pages %>
|
||||||
|
<%= create_pagination(total_pages).html_safe if total_pages > 1 %>
|
|
@ -1,7 +1,7 @@
|
||||||
<% ask = data['ask_question'] %>
|
<% ask = data['ask_question'] %>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
.ask-question .form-horizontal .control-group > *{
|
.ask-question .form-horizontal .control-group > *{
|
||||||
font-size: 1.5em;
|
font-size: 1.125em;
|
||||||
}
|
}
|
||||||
.default_picker label{
|
.default_picker label{
|
||||||
display: none;
|
display: none;
|
||||||
|
|
|
@ -2,6 +2,35 @@ en:
|
||||||
situation: Situation
|
situation: Situation
|
||||||
sex: Sex
|
sex: Sex
|
||||||
ask:
|
ask:
|
||||||
|
more_title: See more ask history
|
||||||
|
save_name: Save FileName
|
||||||
|
usage_rule: Usage rule
|
||||||
|
agree_show_checkbox: Agree reply content display on website checkbox
|
||||||
|
agree_usage_checkbox: Agree related usage rule checkbox
|
||||||
|
setting_type: Setting Type
|
||||||
|
field_setting: Field Setting
|
||||||
|
modify: Modify
|
||||||
|
select_category: '-----Select a category-----'
|
||||||
|
save_data: Save as pdf
|
||||||
|
print: Print
|
||||||
|
ask_time: Ask Time
|
||||||
|
custom_format_explain: use checkbox format to show custom-field's value
|
||||||
|
output_result: Output result
|
||||||
|
example: Example
|
||||||
|
example_explain: 'When custom field is test1、test2、test3, and being filled with a、b、c'
|
||||||
|
like: 'Like '
|
||||||
|
and_so_on: and so on
|
||||||
|
custom1: the first custom field
|
||||||
|
custom2: the second custom field
|
||||||
|
custom3: the third custom field
|
||||||
|
can_be_filled_with: can be filled with
|
||||||
|
show_title_trans: which will show the title's label being translated on now local
|
||||||
|
custom_explain: custom field which will automatically include all custom field to table but exclude the fields that are added
|
||||||
|
explanation: Explanation
|
||||||
|
name_mask: 'Name only show the first word,for example: 蔡**'
|
||||||
|
category_setting: Category Management
|
||||||
|
print_setting: Print Format Setting
|
||||||
|
print_format: Print Format
|
||||||
file_field: File Field
|
file_field: File Field
|
||||||
image_field: Image Field
|
image_field: Image Field
|
||||||
upload_file: Upload File
|
upload_file: Upload File
|
||||||
|
@ -46,6 +75,7 @@ en:
|
||||||
mongoid:
|
mongoid:
|
||||||
attributes:
|
attributes:
|
||||||
ask_question:
|
ask_question:
|
||||||
|
agree_usage: Agree related usage rule
|
||||||
ask_category_id: Ask Category
|
ask_category_id: Ask Category
|
||||||
recaptcha: Recaptcha
|
recaptcha: Recaptcha
|
||||||
sex: Sex
|
sex: Sex
|
||||||
|
@ -64,4 +94,5 @@ en:
|
||||||
comment: Comment
|
comment: Comment
|
||||||
status: Status
|
status: Status
|
||||||
send_email: Whether to reply email
|
send_email: Whether to reply email
|
||||||
agree_show: Do you agree on displaying your request and our reply on the webpage without your personal information?
|
agree_show: Do you agree on displaying your request and our reply on the webpage without your personal information?
|
||||||
|
agree_show_explain: Whether to agree on displaying your request and our reply on the webpage without your personal information?
|
|
@ -8,6 +8,35 @@ zh_tw:
|
||||||
errors:
|
errors:
|
||||||
verification_failed: 驗證碼錯誤
|
verification_failed: 驗證碼錯誤
|
||||||
ask:
|
ask:
|
||||||
|
more_title: 查看更多發問紀錄
|
||||||
|
save_name: 檔案儲存名稱
|
||||||
|
usage_rule: 使用規範
|
||||||
|
agree_show_checkbox: 同意回覆內容刊載於網站勾選框
|
||||||
|
agree_usage_checkbox: 同意相關使用規範勾選框
|
||||||
|
setting_type: 設定類型
|
||||||
|
field_setting: 欄位設定
|
||||||
|
modify: 修改
|
||||||
|
select_category: '-----選擇類別-----'
|
||||||
|
save_data: 存為pdf
|
||||||
|
print: 列印
|
||||||
|
ask_time: 詢問時間
|
||||||
|
custom_format_explain: 使用checkbox樣式來呈現單選或多選的欄位
|
||||||
|
output_result: 輸出結果
|
||||||
|
example: 範例
|
||||||
|
example_explain: '當客製化欄位為: test1、test2、test3,被填入: a、b、c'
|
||||||
|
like: 如
|
||||||
|
and_so_on: 以此類推
|
||||||
|
custom1: 客製化欄位的第一個欄位
|
||||||
|
custom2: 客製化欄位的第二個欄位
|
||||||
|
custom3: 客製化欄位的第三個欄位
|
||||||
|
custom_explain: 客製化欄位(會自動將所有新增的客製欄位帶入表格,但排除已使用數字加入的欄位)
|
||||||
|
can_be_filled_with: 可填入
|
||||||
|
show_title_trans: 會顯示當前語言的標籤翻譯
|
||||||
|
explanation: 說明
|
||||||
|
name_mask: 姓名只顯示第一個字,如蔡**
|
||||||
|
category_setting: 類別管理設定
|
||||||
|
print_setting: 列印格式設定
|
||||||
|
print_format: 列印格式
|
||||||
file_field: 檔案欄位
|
file_field: 檔案欄位
|
||||||
image_field: 照片欄位
|
image_field: 照片欄位
|
||||||
upload_file: 上傳檔案
|
upload_file: 上傳檔案
|
||||||
|
@ -59,6 +88,7 @@ zh_tw:
|
||||||
mongoid:
|
mongoid:
|
||||||
attributes:
|
attributes:
|
||||||
ask_question:
|
ask_question:
|
||||||
|
agree_usage: 同意相關使用規範
|
||||||
ask_category_id: 諮詢類別
|
ask_category_id: 諮詢類別
|
||||||
recaptcha: 驗證碼
|
recaptcha: 驗證碼
|
||||||
sex: 性別
|
sex: 性別
|
||||||
|
@ -77,4 +107,5 @@ zh_tw:
|
||||||
comment: 備註
|
comment: 備註
|
||||||
status: 狀態
|
status: 狀態
|
||||||
send_email: 是否回信
|
send_email: 是否回信
|
||||||
agree_show: 是否同意您提出之需求及回覆內容以不呈現發問者資訊方式刊載於網站供他人參考?
|
agree_show: 是否同意您提出之需求及回覆內容以不呈現發問者資訊方式刊載於網站供他人參考?
|
||||||
|
agree_show_explain: 是否同意刊載於網站給他人參考
|
|
@ -5,10 +5,22 @@ Rails.application.routes.draw do
|
||||||
namespace :admin do #backend
|
namespace :admin do #backend
|
||||||
resources :asks do
|
resources :asks do
|
||||||
collection do
|
collection do
|
||||||
|
get ':id/print', to: 'asks#print'
|
||||||
get 'export'
|
get 'export'
|
||||||
get 'setting'
|
get 'setting'
|
||||||
|
get 'category_setting'
|
||||||
|
post 'get_category_setting_field'
|
||||||
|
post 'category_setting_save'
|
||||||
|
get 'category_setting_delete'
|
||||||
|
get 'category_print_setting_delete'
|
||||||
|
post 'category_print_setting_save'
|
||||||
|
get 'category_print_setting_save'
|
||||||
|
get 'get_new_category_setting_index'
|
||||||
|
get 'print_setting'
|
||||||
|
post 'print_setting_save'
|
||||||
post 'setting_save'
|
post 'setting_save'
|
||||||
post 'get_new_setting_index'
|
post 'get_new_setting_index'
|
||||||
|
post 'get_new_category_setting_index'
|
||||||
post 'export', to: 'asks#do_export'
|
post 'export', to: 'asks#do_export'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -27,11 +27,23 @@ module Ask
|
||||||
begin
|
begin
|
||||||
require File.expand_path('../../../app/models/ask_setting', __FILE__)
|
require File.expand_path('../../../app/models/ask_setting', __FILE__)
|
||||||
require File.expand_path('../../../app/models/ask_setting_index', __FILE__)
|
require File.expand_path('../../../app/models/ask_setting_index', __FILE__)
|
||||||
if defined? AskSetting && AskSetting.first.nil?
|
if defined?(AskSetting)
|
||||||
AskSetting.create()
|
if AskSetting.first.nil?
|
||||||
|
AskSetting.create()
|
||||||
|
elsif AskSetting.count > 1
|
||||||
|
AskSetting.all[1..-1].each do |ask_setting|
|
||||||
|
ask_setting.destroy
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
if defined? AskSettingIndex && AskSettingIndex.first.nil?
|
if defined?(AskSettingIndex)
|
||||||
AskSettingIndex.create()
|
if AskSettingIndex.first.nil?
|
||||||
|
AskSettingIndex.create()
|
||||||
|
elsif AskSettingIndex.count > 1
|
||||||
|
AskSettingIndex.all[1..-1].each do |ask_setting_index|
|
||||||
|
ask_setting_index.destroy
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
rescue => e
|
rescue => e
|
||||||
puts ['AskSetting not found',e]
|
puts ['AskSetting not found',e]
|
||||||
|
@ -63,11 +75,6 @@ module Ask
|
||||||
:priority=>1,
|
:priority=>1,
|
||||||
:active_for_action=>{'admin/asks'=>'index'},
|
:active_for_action=>{'admin/asks'=>'index'},
|
||||||
:available_for => 'users'
|
:available_for => 'users'
|
||||||
context_link 'ask.setting',
|
|
||||||
:link_path=>"setting_admin_asks_path" ,
|
|
||||||
:priority=>5,
|
|
||||||
:active_for_action=>{'admin/asks'=>'setting'},
|
|
||||||
:available_for => 'managers'
|
|
||||||
context_link 'categories',
|
context_link 'categories',
|
||||||
:link_path=>"admin_module_app_categories_path" ,
|
:link_path=>"admin_module_app_categories_path" ,
|
||||||
:link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'ask').id}",
|
:link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'ask').id}",
|
||||||
|
@ -80,16 +87,6 @@ module Ask
|
||||||
:priority=>3,
|
:priority=>3,
|
||||||
:active_for_action=>{'admin/asks'=>'acknowledgements'},
|
:active_for_action=>{'admin/asks'=>'acknowledgements'},
|
||||||
:available_for => 'managers'
|
:available_for => 'managers'
|
||||||
context_link 'ask.admins',
|
|
||||||
:link_path=>"admin_ask_admins_path" ,
|
|
||||||
:priority=>4,
|
|
||||||
:active_for_action=>{'admin/asks'=>'admins'},
|
|
||||||
:available_for => 'managers'
|
|
||||||
context_link 'ask.exports',
|
|
||||||
:link_path=>"export_admin_asks_path" ,
|
|
||||||
:priority=>5,
|
|
||||||
:active_for_action=>{'admin/asks'=>'exports'},
|
|
||||||
:available_for => 'managers'
|
|
||||||
context_link 'tags',
|
context_link 'tags',
|
||||||
:link_path=>"admin_module_app_tags_path" ,
|
:link_path=>"admin_module_app_tags_path" ,
|
||||||
:link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'ask').id}",
|
:link_arg=>"{:module_app_id=>ModuleApp.find_by(:key=>'ask').id}",
|
||||||
|
@ -97,6 +94,31 @@ module Ask
|
||||||
:active_for_action=>{'admin/ask'=>'tags'},
|
:active_for_action=>{'admin/ask'=>'tags'},
|
||||||
:active_for_tag => 'Ask',
|
:active_for_tag => 'Ask',
|
||||||
:available_for => 'managers'
|
:available_for => 'managers'
|
||||||
|
context_link 'ask.admins',
|
||||||
|
:link_path=>"admin_ask_admins_path" ,
|
||||||
|
:priority=>5,
|
||||||
|
:active_for_action=>{'admin/asks'=>'admins'},
|
||||||
|
:available_for => 'managers'
|
||||||
|
context_link 'ask.exports',
|
||||||
|
:link_path=>"export_admin_asks_path" ,
|
||||||
|
:priority=>6,
|
||||||
|
:active_for_action=>{'admin/asks'=>'exports'},
|
||||||
|
:available_for => 'managers'
|
||||||
|
context_link 'ask.setting',
|
||||||
|
:link_path=>"setting_admin_asks_path" ,
|
||||||
|
:priority=>7,
|
||||||
|
:active_for_action=>{'admin/asks'=>'setting'},
|
||||||
|
:available_for => 'managers'
|
||||||
|
context_link 'ask.category_setting',
|
||||||
|
:link_path=>"category_setting_admin_asks_path" ,
|
||||||
|
:priority=>7,
|
||||||
|
:active_for_action=>{'admin/asks'=>'category_setting'},
|
||||||
|
:available_for => 'managers'
|
||||||
|
context_link 'ask.print_setting',
|
||||||
|
:link_path=>"print_setting_admin_asks_path" ,
|
||||||
|
:priority=>8,
|
||||||
|
:active_for_action=>{'admin/asks'=>'print_setting'},
|
||||||
|
:available_for => 'managers'
|
||||||
# context_link 'new_',
|
# context_link 'new_',
|
||||||
# :link_path=>"new_admin_ask_path" ,
|
# :link_path=>"new_admin_ask_path" ,
|
||||||
# :priority=>2,
|
# :priority=>2,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<div class="widget-ask widget1">
|
<div class="widget-ask widget1">
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
#new-ask-question .form-horizontal .control-group > *{
|
#new-ask-question .form-horizontal .control-group > *{
|
||||||
font-size: 1.2em;
|
font-size: 1.125em;
|
||||||
}
|
}
|
||||||
.default_picker label{
|
.default_picker label{
|
||||||
display: none;
|
display: none;
|
||||||
|
@ -51,9 +51,34 @@
|
||||||
<link href="/assets/custom_field.css" media="screen" rel="stylesheet">
|
<link href="/assets/custom_field.css" media="screen" rel="stylesheet">
|
||||||
<script src="/assets/validator"></script>
|
<script src="/assets/validator"></script>
|
||||||
<link href="/assets/ask/ask.css" media="screen" rel="stylesheet">
|
<link href="/assets/ask/ask.css" media="screen" rel="stylesheet">
|
||||||
|
<h3 class="widget-title">
|
||||||
|
<span>{{widget-title}}</span>
|
||||||
|
</h3>
|
||||||
|
<div id="new-ask-question" class="ask-question">
|
||||||
|
<form action="{{form_url}}" enctype="multipart/form-data" method="post" class="form-horizontal" accept-charset="UTF-8">
|
||||||
|
{{token_tag}}
|
||||||
|
<div data-level="0" data-list="fields">
|
||||||
|
<div class="control-group" style="{{style_html}}">
|
||||||
|
{{label}}
|
||||||
|
<div class="controls">
|
||||||
|
{{content}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-actions">
|
||||||
|
<input type="hidden" name="referer_url" value="{{referer_url}}">
|
||||||
|
{{submit_tag}}
|
||||||
|
{{close_tag}}
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{{switch_form}}
|
||||||
|
</div>
|
||||||
<script type='text/javascript'>
|
<script type='text/javascript'>
|
||||||
$('#new-ask-question .required').each(function() {
|
$('.ask-question .required').each(function() {
|
||||||
$(this).text('*' + $(this).text());
|
var text = $(this).text()
|
||||||
|
if (text[0]!='*'){
|
||||||
|
$(this).text('*' + text);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
$(function(){
|
$(function(){
|
||||||
var fv = new FormValidator($("#new_ask_question"));
|
var fv = new FormValidator($("#new_ask_question"));
|
||||||
|
@ -67,25 +92,4 @@
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
<h3 class="widget-title">
|
|
||||||
<span>{{widget-title}}</span>
|
|
||||||
</h3>
|
|
||||||
<div id="new-ask-question" class="ask-question">
|
|
||||||
<form action="{{form_url}}" enctype="multipart/form-data" method="post" class="form-horizontal" accept-charset="UTF-8">
|
|
||||||
{{token_tag}}
|
|
||||||
<div data-level="0" data-list="fields">
|
|
||||||
<div class="control-group">
|
|
||||||
{{label}}
|
|
||||||
<div class="controls">
|
|
||||||
{{content}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-actions">
|
|
||||||
<input type="hidden" name="referer_url" value="{{referer_url}}">
|
|
||||||
{{submit_tag}}
|
|
||||||
{{close_tag}}
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
|
@ -14,4 +14,5 @@
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
<div style="background: #337ab7; border: 1px solid rgb(204, 204, 204); padding: 5px 10px; text-align: right;"><span style="color:inherit;"><a href="{{more_href}}" title="{{more_title}}"><span style="color:#FFFFFF;">{{more_title}}</span></a></span></div>
|
||||||
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue