2014-10-02 06:00:35 +00:00
|
|
|
module Admin::AsksHelper
|
2020-07-04 13:36:32 +00:00
|
|
|
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
|
2022-09-22 08:06:12 +00:00
|
|
|
def get_categories_info_for_ask
|
2022-03-26 07:52:56 +00:00
|
|
|
current_user = OrbitHelper.current_user
|
|
|
|
OrbitHelper.set_params(params,current_user)
|
|
|
|
OrbitHelper.set_this_module_app("ask")
|
|
|
|
cats_relations = []
|
|
|
|
access_level = OrbitHelper.user_access_level?
|
2022-07-07 08:54:09 +00:00
|
|
|
include_all = false
|
|
|
|
cats = []
|
2022-03-26 07:52:56 +00:00
|
|
|
if access_level == "sub_manager"
|
2022-07-07 08:54:09 +00:00
|
|
|
cats = current_user.approved_categories_for_module(@module_app)
|
2022-05-12 07:35:53 +00:00
|
|
|
elsif access_level && access_level != "user"
|
2022-03-26 07:52:56 +00:00
|
|
|
cats = @module_app.categories.enabled
|
2022-07-07 08:54:09 +00:00
|
|
|
include_all = true
|
|
|
|
end
|
|
|
|
if (@module_app.asc rescue true)
|
|
|
|
cats = cats.sort_by{|category| (category.sort_number.to_i rescue category.id) }
|
|
|
|
else
|
|
|
|
cats = cats.sort_by{|category| (-category.sort_number.to_i rescue category.id)}
|
|
|
|
end
|
|
|
|
cats_relations = cats.map{|c| [c.id.to_s, c.title]}
|
2022-10-11 15:16:34 +00:00
|
|
|
if include_all && cats_relations.count != 1
|
2022-07-07 08:54:09 +00:00
|
|
|
cats_relations.insert(0, ["",t(:all)])
|
2022-03-26 07:52:56 +00:00
|
|
|
end
|
|
|
|
cats_relations
|
|
|
|
end
|
2022-09-21 10:07:01 +00:00
|
|
|
def set_input_name_for_ask(input_name)
|
2020-03-21 15:36:33 +00:00
|
|
|
@input_name = input_name
|
|
|
|
end
|
2022-09-21 10:07:01 +00:00
|
|
|
def get_input_name_for_ask
|
2020-03-21 15:36:33 +00:00
|
|
|
@input_name
|
|
|
|
end
|
2022-09-22 08:06:12 +00:00
|
|
|
def create_lang_panel_for_ask(field)
|
2020-03-21 15:36:33 +00:00
|
|
|
tmp2 = content_tag(:div,:class => 'btn-group', :data=>{:toggle=>"buttons-radio"}) do
|
|
|
|
I18n.available_locales.collect do |key|
|
|
|
|
link_entry_ary = ["##{field}","_#{key}"]
|
|
|
|
link_entry = link_entry_ary.join
|
|
|
|
link_to(I18n.t(key),link_entry,:data=>{:toggle=>"tab"},:class=>"btn #{(key == I18n.locale ? "active" : nil)}",:for=>key)
|
|
|
|
end.join.html_safe
|
|
|
|
end
|
|
|
|
end
|
2022-09-22 08:06:12 +00:00
|
|
|
def multiple_lang_show_tag_for_ask(field_name, index1,field,value=nil,combine_element='',exteral_options={},sortable=false)
|
2022-07-07 08:54:09 +00:00
|
|
|
if !index1.nil?
|
2022-09-21 10:07:01 +00:00
|
|
|
all_field = (get_input_name_for_ask + "[#{index1}][#{field}][parant]").gsub(/[\[@]/,'_').gsub(/\]/,'')
|
2022-07-07 08:54:09 +00:00
|
|
|
else
|
2022-09-21 10:07:01 +00:00
|
|
|
all_field = (get_input_name_for_ask + "[#{field}][parant]").gsub(/[\[@]/,'_').gsub(/\]/,'')
|
2022-07-07 08:54:09 +00:00
|
|
|
end
|
|
|
|
tmp = (I18n.available_locales.collect do |locale|
|
|
|
|
active_flag = ((locale == I18n.locale) ? ' active' : '')
|
|
|
|
content_tag(:div,:class => "tab-content#{active_flag}",:id=>"#{all_field}_#{locale}") do
|
|
|
|
value_locale = value[locale.to_s] rescue nil
|
2022-09-21 10:07:01 +00:00
|
|
|
"<div class=\"show_field\" id=\"#{index1 ? "#{get_input_name_for_ask}[#{index1}][#{field}][#{locale}]" : "#{get_input_name_for_ask}[#{field}][#{locale}]"}\">#{value_locale}</div>".html_safe
|
2022-07-07 08:54:09 +00:00
|
|
|
end
|
2022-09-22 08:06:12 +00:00
|
|
|
end.join + create_lang_panel_for_ask(all_field)).html_safe + combine_element
|
2022-07-07 08:54:09 +00:00
|
|
|
|
|
|
|
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
|
|
|
|
tmp = 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
|
|
|
|
tmp = content_tag(:div,{:class => "tab-panel"}.merge(exteral_options)) do
|
|
|
|
tmp
|
|
|
|
end
|
|
|
|
end
|
|
|
|
tmp = "<tr><td>#{field_name}".html_safe + ":</td><td>".html_safe + tmp + "</td></tr>".html_safe
|
|
|
|
end
|
2022-09-22 08:06:12 +00:00
|
|
|
def multiple_lang_tag_for_ask(index1,type_of_tag,field,value=nil,custom_options={},combine_element='',exteral_options={},sortable=false)
|
2020-07-04 13:36:32 +00:00
|
|
|
if !index1.nil?
|
2022-09-21 10:07:01 +00:00
|
|
|
all_field = (get_input_name_for_ask + "[#{index1}][#{field}][parant]").gsub(/[\[@]/,'_').gsub(/\]/,'')
|
2020-07-04 13:36:32 +00:00
|
|
|
else
|
2022-09-21 10:07:01 +00:00
|
|
|
all_field = (get_input_name_for_ask + "[#{field}][parant]").gsub(/[\[@]/,'_').gsub(/\]/,'')
|
2020-07-04 13:36:32 +00:00
|
|
|
end
|
|
|
|
tmp = (I18n.available_locales.collect do |locale|
|
|
|
|
active_flag = ((locale == I18n.locale) ? ' active' : '')
|
|
|
|
content_tag(:div,:class => "tab-content#{active_flag}",:id=>"#{all_field}_#{locale}") do
|
|
|
|
value_locale = value[locale.to_s] rescue nil
|
|
|
|
if !index1.nil?
|
2022-09-21 10:07:01 +00:00
|
|
|
self.__send__("#{type_of_tag}_tag","#{get_input_name_for_ask}[#{index1}][#{field}][#{locale}]",value_locale,custom_options)
|
2020-07-04 13:36:32 +00:00
|
|
|
else
|
2022-09-21 10:07:01 +00:00
|
|
|
self.__send__("#{type_of_tag}_tag","#{get_input_name_for_ask}[#{field}][#{locale}]",value_locale,custom_options)
|
2020-07-04 13:36:32 +00:00
|
|
|
end
|
|
|
|
end
|
2022-09-22 08:06:12 +00:00
|
|
|
end.join + create_lang_panel_for_ask(all_field)).html_safe + combine_element
|
2020-07-04 13:36:32 +00:00
|
|
|
|
|
|
|
if sortable
|
|
|
|
if exteral_options['style'].nil?
|
|
|
|
exteral_options['style'] = 'display: flex;align-items: center;flex-wrap: nowrap;'
|
2020-04-30 05:18:02 +00:00
|
|
|
else
|
2020-07-04 13:36:32 +00:00
|
|
|
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
|
2020-04-30 05:18:02 +00:00
|
|
|
end
|
2020-03-21 15:36:33 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
def time_setting_block(key,value={})
|
|
|
|
class_block = (value['type'] != 'date') ? "time_setting_block" : "time_setting_block active"
|
|
|
|
format_selected = (value['type'] != 'date') ? nil : value['format']
|
|
|
|
range_selected = (value['type'] != 'date') ? nil : value['range_flag']
|
|
|
|
options1 = [['YYYY / MM / DD HH:mm','format1'],['YYYY / MM / DD','format2'],['YYYY / MM','format3'],['YYYY','format4']]
|
|
|
|
options2 = [[t('yes'),'true'],[t('no'),'false']]
|
2022-09-22 08:06:12 +00:00
|
|
|
format_setting_tag = field_select_tag_for_ask(key,'format',options1,format_selected)
|
|
|
|
range_setting_tag = field_select_tag_for_ask(key,'range_flag',options2,range_selected)
|
2020-03-21 15:36:33 +00:00
|
|
|
"<div class=\"#{class_block}\">
|
|
|
|
<table>
|
|
|
|
<tbody>
|
|
|
|
<tr>
|
|
|
|
<td>#{t('ask.format')}:</td><td>#{format_setting_tag}</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>#{t('ask.enable_range_setting')}:</td><td>#{range_setting_tag}</td>
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>"
|
|
|
|
end
|
2022-09-22 08:06:12 +00:00
|
|
|
def field_select_tag_for_ask(index1,field,options,selected=nil,custom_options={})
|
2022-09-21 10:07:01 +00:00
|
|
|
select_tag("#{get_input_name_for_ask}[#{index1}][#{field}]",options_for_select(options,selected: selected),custom_options)
|
2020-03-21 15:36:33 +00:00
|
|
|
end
|
2022-08-18 03:07:45 +00:00
|
|
|
def field_radio_button_tag(index1,field,show_value,checked,custom_options={})
|
2022-09-21 10:07:01 +00:00
|
|
|
radio_button_tag("#{get_input_name_for_ask}[#{index1}][#{field}]",show_value,checked,custom_options)
|
2020-03-21 15:36:33 +00:00
|
|
|
end
|
|
|
|
def render_date_block(field_name,v,i,value)
|
|
|
|
case v['format']
|
|
|
|
when 'format1'
|
|
|
|
t1 = text_field_tag("#{field_name}[datetime][date][#{i}]",(value['datetime']['date']["#{i}"] rescue nil),{:required => v['required']=='true',autocomplete: 'off',placeholder: t('ask.datepicker'),style:'width:100%;'})
|
2020-03-22 04:27:46 +00:00
|
|
|
#t2_value = value['datetime']['h']["#{i}"] rescue nil
|
|
|
|
#t3_value = value['datetime']['m']["#{i}"] rescue nil
|
|
|
|
#t2 = select_tag("#{field_name}[datetime][h][#{i}]",options_for_select((1..24).collect{|v1| v1.to_s.rjust(2, "0")},selected: t2_value))
|
|
|
|
#t3 = select_tag("#{field_name}[datetime][m][#{i}]",options_for_select((0..59).collect{|v1| v1.to_s.rjust(2, "0")},selected: t3_value))
|
|
|
|
#t4 = "#{t2}<b style=\"padding: 0 0.1em;\">:</b>#{t3}"
|
|
|
|
"<div class=\"datetime_selector\">#{t1}</div>
|
2020-03-21 15:36:33 +00:00
|
|
|
<script>
|
|
|
|
jQuery(document).ready(function( $ ) {
|
2020-03-22 15:58:53 +00:00
|
|
|
$(\"input[name='#{field_name}[datetime][date][#{i}]']\").ui_datetimepicker({dateFormat: 'yy-mm-dd',controlType: 'select',timeInput: true,oneLine: true,timeFormat: 'HH:mm'});
|
2020-03-21 15:36:33 +00:00
|
|
|
})
|
|
|
|
</script>".html_safe
|
|
|
|
when 'format2'
|
|
|
|
t1 = text_field_tag("#{field_name}[datetime][date][#{i}]",(value['datetime']['date']["#{i}"] rescue nil),{:required => v['required']=='true',autocomplete: 'off',placeholder: t('ask.datepicker')})
|
2020-03-22 04:27:46 +00:00
|
|
|
"<div class=\"datetime_selector\">#{t1}</div>
|
2020-03-21 15:36:33 +00:00
|
|
|
<script>
|
|
|
|
jQuery(document).ready(function( $ ) {
|
2020-04-30 05:18:02 +00:00
|
|
|
$(\"input[name='#{field_name}[datetime][date][#{i}]']\").ui_datepicker({dateFormat: 'yy-mm-dd'});
|
2020-03-21 15:36:33 +00:00
|
|
|
})
|
|
|
|
</script>".html_safe
|
|
|
|
when 'format3'
|
|
|
|
t1 = text_field_tag("#{field_name}[datetime][date][#{i}]",(value['datetime']['date']["#{i}"] rescue nil),{:required => v['required']=='true',autocomplete: 'off',placeholder: t('ask.datepicker'),:class => 'yearpicker'})
|
|
|
|
"#{t1}
|
|
|
|
<script>
|
|
|
|
jQuery(document).ready(function( $ ) {
|
|
|
|
$(\"input[name='#{field_name}[datetime][date][#{i}]']\").ui_datepicker({dateFormat: 'yy-mm',show_view: 'month'});
|
|
|
|
})
|
|
|
|
</script>
|
|
|
|
"
|
|
|
|
when 'format4'
|
|
|
|
t1 = text_field_tag("#{field_name}[datetime][date][#{i}]",(value['datetime']['date']["#{i}"] rescue nil),{:required => v['required']=='true',autocomplete: 'off',placeholder: t('ask.datepicker'),:class => 'yearpicker'})
|
|
|
|
"#{t1}
|
|
|
|
<script>
|
|
|
|
jQuery(document).ready(function( $ ) {
|
|
|
|
$(\"input[name='#{field_name}[datetime][date][#{i}]']\").ui_datepicker({dateFormat: 'yy',show_view: 'year'});
|
|
|
|
})
|
|
|
|
</script>
|
|
|
|
"
|
|
|
|
end
|
|
|
|
end
|
2020-04-30 05:18:02 +00:00
|
|
|
def ask_label(value,required='false')
|
|
|
|
label_tag(nil,value,{:class=>"control-label#{required=='true' ? ' required' : ''}"})
|
|
|
|
end
|
2020-07-04 13:36:32 +00:00
|
|
|
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)
|
2022-09-21 10:07:01 +00:00
|
|
|
field_name = "#{get_input_name_for_ask}[custom_values][#{k}]"
|
2020-03-21 15:36:33 +00:00
|
|
|
begin
|
|
|
|
case v['type']
|
|
|
|
when 'text_field'
|
2020-04-30 05:18:02 +00:00
|
|
|
readonly ? value : text_field_tag(field_name,value,{:required => v['required']=='true',placeholder: v['prompt_word'][I18n.locale]})
|
2022-07-07 08:54:09 +00:00
|
|
|
when 'instructions'
|
|
|
|
(v['instructions'][I18n.locale].html_safe rescue "")
|
2020-03-21 15:36:33 +00:00
|
|
|
when 'select'
|
|
|
|
prompt_hash = v['prompt_word'][I18n.locale].blank? ? {} : {prompt: v['prompt_word'][I18n.locale]}
|
|
|
|
prompt_hash.merge(:required => v['required']=='true')
|
2020-07-04 13:36:32 +00:00
|
|
|
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
|
2020-03-21 15:36:33 +00:00
|
|
|
when 'date'
|
2020-04-30 05:18:02 +00:00
|
|
|
if value.nil?
|
|
|
|
value = {}
|
|
|
|
end
|
2020-03-21 15:36:33 +00:00
|
|
|
if v['range_flag']=='true'
|
2022-08-18 03:07:45 +00:00
|
|
|
if readonly
|
|
|
|
format_str = "%Y/%m/%d %H:%M"
|
|
|
|
case v['format']
|
|
|
|
when 'format1'
|
|
|
|
format_str = "%Y/%m/%d %H:%M"
|
|
|
|
when 'format2'
|
|
|
|
format_str = "%Y/%m/%d"
|
|
|
|
when 'format3'
|
|
|
|
format_str = "%Y/%m"
|
|
|
|
when 'format4'
|
|
|
|
format_str = "%Y"
|
|
|
|
end
|
|
|
|
tmp = value['datetime']['date'] rescue {}
|
|
|
|
"#{DateTime.parse(tmp['0']).strftime(format_str) rescue ''}~#{DateTime.parse(tmp['1']).strftime(format_str) rescue ''}"
|
|
|
|
else
|
|
|
|
"<div style=\"display:inline-flex;flex-direction:column;\">
|
2020-03-21 15:36:33 +00:00
|
|
|
#{render_date_block(field_name,v,0,value)}
|
|
|
|
<div style=\"display: inline-flex;align-items: center;writing-mode: tb-rl;padding: 0.3em;\">~</div>
|
|
|
|
#{render_date_block(field_name,v,1,value)}
|
2022-08-18 03:07:45 +00:00
|
|
|
</div>".html_safe
|
|
|
|
end
|
2020-03-21 15:36:33 +00:00
|
|
|
else
|
2022-08-18 03:07:45 +00:00
|
|
|
if readonly
|
|
|
|
format_str = "%Y/%m/%d %H:%M"
|
|
|
|
case v['format']
|
|
|
|
when 'format1'
|
|
|
|
format_str = "%Y/%m/%d %H:%M"
|
|
|
|
when 'format2'
|
|
|
|
format_str = "%Y/%m/%d"
|
|
|
|
when 'format3'
|
|
|
|
format_str = "%Y/%m"
|
|
|
|
when 'format4'
|
|
|
|
format_str = "%Y"
|
|
|
|
end
|
|
|
|
tmp = value['datetime']['date'] rescue {}
|
|
|
|
(DateTime.parse(tmp['0']).strftime(format_str) rescue '')
|
|
|
|
else
|
|
|
|
render_date_block(field_name,v,0,value)
|
|
|
|
end
|
2020-03-21 15:36:33 +00:00
|
|
|
end
|
|
|
|
when 'text_area'
|
2020-04-30 05:18:02 +00:00
|
|
|
readonly ? value : text_area_tag(field_name,value,{:required => v['required']=='true',:placeholder=> v['prompt_word'][I18n.locale],:class=>'ckeditor'})
|
2020-03-21 15:36:33 +00:00
|
|
|
when 'radio_button'
|
|
|
|
if value.nil?
|
|
|
|
value = {}
|
|
|
|
end
|
2020-07-04 13:36:32 +00:00
|
|
|
if lock
|
|
|
|
format_checkbox(v['options'],value)
|
|
|
|
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
|
2020-03-21 15:36:33 +00:00
|
|
|
when 'checkbox'
|
|
|
|
if value.nil?
|
|
|
|
value = {}
|
|
|
|
end
|
2020-07-04 13:36:32 +00:00
|
|
|
if lock
|
|
|
|
format_checkbox(v['options'],value,true)
|
|
|
|
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
|
2020-05-30 14:20:10 +00:00
|
|
|
when 'file'
|
|
|
|
file_value = value[0] rescue nil
|
|
|
|
file_path = value[1] rescue nil
|
|
|
|
file_required = v['required']=='true' ? 'required="required"' : ''
|
|
|
|
readonly ? "<a href=\"#{file_path}\" title=\"file\">#{file_value}</a>" : "<div class=\"file-selector\"><label class=\"ui-button\">
|
2022-07-07 08:54:09 +00:00
|
|
|
<input data-src=\"#{file_path}\" style=\"position: absolute;width:0.1em;opacity: 0;padding: 0;border: 0;opacity: 0;left: 50%;top: 0;\" class=\"upload\" name=\"#{field_name}\" #{file_required} type=\"file\" value=\"#{file_value}\"/>
|
2020-05-30 14:20:10 +00:00
|
|
|
<i class=\"fa fa-file\"></i> #{t('ask.upload_file')}
|
|
|
|
</label><div class=\"filename\"></div></div>"
|
|
|
|
when 'image'
|
|
|
|
file_value = value[0] rescue nil
|
|
|
|
file_path = value[1] rescue nil
|
|
|
|
file_required = v['required']=='true' ? 'required="required"' : ''
|
|
|
|
readonly ? "<img src=\"#{file_path}\" alt=\"#{file_value}\">" : "<div class=\"file-selector\"><label class=\"ui-button\">
|
2022-07-07 08:54:09 +00:00
|
|
|
<input data-image-src=\"#{file_path}\" style=\"position: absolute;width:0.1em;padding: 0;border: 0;opacity: 0;left: 50%;top: 0;\" accept=\"image/*\" class=\"upload\" name=\"#{field_name}\" #{file_required} type=\"file\" value=\"#{file_value}\"/>
|
2020-05-30 14:20:10 +00:00
|
|
|
<i class=\"fa fa-photo\"></i> #{t('ask.upload_image')}
|
|
|
|
</label><div class=\"filename\"></div></div>"
|
2020-03-21 15:36:33 +00:00
|
|
|
end
|
|
|
|
rescue => e
|
2020-07-04 13:36:32 +00:00
|
|
|
"<pre>#{e.inspect}<br>#{e.backtrace.to_yaml}</pre>"
|
2020-03-21 15:36:33 +00:00
|
|
|
end
|
|
|
|
end
|
2022-09-22 08:06:12 +00:00
|
|
|
def custom_field_block_for_ask(k,v={},show_only=false, other_first_rows="",extra_class="")
|
2022-07-07 08:54:09 +00:00
|
|
|
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'],[t('ask.instructions'),'instructions']]
|
|
|
|
if show_only
|
2022-09-22 08:06:12 +00:00
|
|
|
multi_lang_tag = multiple_lang_show_tag_for_ask(t('ask.field_name'),k,'field',v['field'])
|
2022-07-07 08:54:09 +00:00
|
|
|
require_ask_tag = "<tr><td>#{t('ask.required')}:</td><td>#{v['required']=='true' ? t('ask.yes') : t('ask.no')}</td></tr>"
|
|
|
|
markups = markups.map{|k,v| [v,k]}.to_h
|
|
|
|
tmp = markups[v['type']]
|
|
|
|
tmp = markups.values[0] if tmp.nil?
|
2022-09-22 08:06:12 +00:00
|
|
|
tmp_field_select_tag_for_ask = "<tr><td>#{t('ask.setting_type')}:</td><td><div id=\"#{get_input_name_for_ask}[#{k}][type]\">#{tmp}</div></td></tr>"
|
2022-07-07 08:54:09 +00:00
|
|
|
active_prompt_class = ['date','radio_button','checkbox'].exclude?(v['type']) ? ' active' : ''
|
|
|
|
active_class = ['select','radio_button','checkbox'].include?(v['type']) ? ' active' : ''
|
2022-09-22 08:06:12 +00:00
|
|
|
multi_lang_prompt_tag = multiple_lang_show_tag_for_ask(t('ask.prompt_word'),k,'prompt_word',v['prompt_word'])
|
2022-07-07 08:54:09 +00:00
|
|
|
field_html = "
|
|
|
|
<style>
|
|
|
|
.show_field {
|
|
|
|
border: 1px solid black;
|
|
|
|
padding: 3px;
|
|
|
|
min-width: 1em;
|
|
|
|
height: 20px;
|
|
|
|
overflow-y: auto;
|
|
|
|
}
|
|
|
|
</style>
|
2022-08-18 03:07:45 +00:00
|
|
|
<tbody class=\"custom_field #{extra_class}\" data-key=\"#{k}\">
|
|
|
|
#{other_first_rows}
|
2020-03-21 15:36:33 +00:00
|
|
|
#{multi_lang_tag}
|
|
|
|
#{require_ask_tag}
|
2022-09-22 08:06:12 +00:00
|
|
|
#{tmp_field_select_tag_for_ask}
|
2020-03-21 15:36:33 +00:00
|
|
|
#{multi_lang_prompt_tag}
|
2022-07-07 08:54:09 +00:00
|
|
|
</tbody>"
|
|
|
|
else
|
2022-08-18 03:07:45 +00:00
|
|
|
not_editable = k.to_s.include?('default@')
|
|
|
|
hint_text = ""
|
|
|
|
if not_editable
|
|
|
|
hint_text = "<div style=\"font-weight: bold;\">" + t('ask.this_field_is_default_custom_fields') + "</div>"
|
|
|
|
end
|
2022-09-30 10:50:53 +00:00
|
|
|
disabled_attr = (not_editable ? 'disabled' : nil)
|
|
|
|
multi_lang_tag = multiple_lang_tag_for_ask(k,'text_field','field',v['field'],{placeholder: t('ask.field_name'), disabled: disabled_attr})
|
|
|
|
tmp_field_select_tag_for_ask = field_select_tag_for_ask(k,'type',markups,v['type'],{:onchange=>'check_available_setting_block(this)', :disabled=>disabled_attr})
|
2022-09-21 10:07:01 +00:00
|
|
|
key = hidden_field_tag "#{get_input_name_for_ask}[#{k}][key]",k,{'class' => 'key'}
|
2022-07-07 08:54:09 +00:00
|
|
|
all_new_options = Array(v['options']).collect do |key,value|
|
2022-09-22 08:06:12 +00:00
|
|
|
tmp = create_delete_button_for_ask('delete_added_select_option').html_safe+hidden_field_tag("#{get_input_name_for_ask}[#{k}][options][#{key}][disabled]",value['disabled'],{'class' => 'disabled_field'})
|
2022-07-07 08:54:09 +00:00
|
|
|
hidden_style = value['disabled'] == 'true' ? {style: 'display:none;'} : {}
|
2022-09-30 10:50:53 +00:00
|
|
|
"#{multiple_lang_tag_for_ask(k,'text_field',"options][#{key}",value,{placeholder: t('ask.option_name'), :disabled=>disabled_attr},tmp,hidden_style,true)}"
|
2022-07-07 08:54:09 +00:00
|
|
|
end.join
|
|
|
|
active_class = ['select','radio_button','checkbox'].include?(v['type']) ? ' active' : ''
|
|
|
|
active_prompt_class = ['date','radio_button','checkbox'].exclude?(v['type']) ? ' active' : ''
|
2022-09-30 10:50:53 +00:00
|
|
|
multi_lang_prompt_tag = "<div class=\"prompt_word#{active_prompt_class}\">#{multiple_lang_tag_for_ask(k,'text_field','prompt_word',v['prompt_word'],{placeholder: t('ask.prompt_word'), disabled: disabled_attr})}</div>"
|
|
|
|
instructions_text_area = "<div class=\"instructions_text_area#{v['type'] == 'instructions' ? '' : ' hide'}\">#{multiple_lang_tag_for_ask(k,'text_area','instructions',v['instructions'],{placeholder: t('ask.prompt_word'), class: 'ckeditor', disabled: disabled_attr})}</div>"
|
|
|
|
require_ask_tag = "<div>#{t('ask.required')}: #{field_radio_button_tag(k,'required','true',v['required']=='true',{disabled: disabled_attr})}#{t('ask.yes')}#{field_radio_button_tag(k,'required','false',v['required']!='true',{disabled: disabled_attr})}#{t('ask.no')}</div>"
|
2022-07-07 08:54:09 +00:00
|
|
|
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>"
|
2022-08-18 03:07:45 +00:00
|
|
|
field_html = "<tr class=\"custom_field #{extra_class}\" data-key=\"#{k}\">
|
2022-07-07 08:54:09 +00:00
|
|
|
<td>
|
2022-08-18 03:07:45 +00:00
|
|
|
#{other_first_rows}
|
|
|
|
#{hint_text}
|
2022-07-07 08:54:09 +00:00
|
|
|
#{multi_lang_tag}
|
|
|
|
#{require_ask_tag}
|
2022-09-22 08:06:12 +00:00
|
|
|
#{tmp_field_select_tag_for_ask}<br>
|
2022-07-07 08:54:09 +00:00
|
|
|
#{multi_lang_prompt_tag}
|
|
|
|
#{instructions_text_area}
|
|
|
|
#{time_setting_block(k,v)}
|
|
|
|
#{tmp}
|
|
|
|
#{key}
|
|
|
|
</td>
|
|
|
|
<td>
|
2022-09-22 08:06:12 +00:00
|
|
|
#{create_delete_button_for_ask('delete_field_func')}
|
2022-07-07 08:54:09 +00:00
|
|
|
</td>
|
|
|
|
</tr>"
|
|
|
|
end
|
2020-03-21 15:36:33 +00:00
|
|
|
end
|
2022-09-22 08:06:12 +00:00
|
|
|
def create_delete_button_for_ask(func_name)
|
2020-03-21 15:36:33 +00:00
|
|
|
"<input class=\"btn btn-danger\" type=\"button\" value=\"#{t('delete_')}\" onclick=\"#{func_name}(this)\">"
|
|
|
|
end
|
2014-10-02 06:00:35 +00:00
|
|
|
def page_for_askquestion(askquestion)
|
|
|
|
ann_page = nil
|
|
|
|
pages = Page.where(:module=>'ask')
|
|
|
|
|
|
|
|
pages.each do |page|
|
|
|
|
if page.categories.count ==1
|
|
|
|
if page.categories.include?(askquestion.category.id.to_s)
|
|
|
|
ann_page = page
|
|
|
|
end
|
|
|
|
end
|
|
|
|
break if !ann_page.nil?
|
|
|
|
end
|
|
|
|
|
|
|
|
if ann_page.nil?
|
|
|
|
pages.each do |page|
|
|
|
|
if page.categories.include?(askquestion.category.id.to_s)
|
|
|
|
ann_page = page
|
|
|
|
end
|
|
|
|
break if !ann_page.nil?
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
ann_page = pages.first if ann_page.nil?
|
|
|
|
request.protocol+(request.host_with_port+ann_page.url+'/'+askquestion.to_param).gsub('//','/') rescue "/"
|
|
|
|
end
|
|
|
|
end
|