merge new feature #15
|
@ -182,6 +182,19 @@ module Admin::SeminarsFieldHelper
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def render_file_field
|
||||||
|
a = control_group_wrapper_for_sm do |key,value|
|
||||||
|
add_more_blank = can_add_more ? "[]" : ""
|
||||||
|
key_field = can_muti_lang_input? ? "[#{key}]" : ""
|
||||||
|
field_name = [get_field_name_base,add_more_blank,key_field].join
|
||||||
|
file_required =@require ? 'required="required"' : ''
|
||||||
|
"<div class=\"file-selector\"><label class=\"ui-button\">
|
||||||
|
<input 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\" />
|
||||||
|
<i class=\"fa fa-file\"></i> #{I18n.t('file.upload')}
|
||||||
|
</label><div class=\"filename\"></div></div>#{value}".html_safe
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def date_is_range?
|
def date_is_range?
|
||||||
is_range = "false"
|
is_range = "false"
|
||||||
data = get_data
|
data = get_data
|
||||||
|
@ -198,7 +211,7 @@ protected
|
||||||
[I18n.locale]+(site.valid_locales-[I18n.locale])
|
[I18n.locale]+(site.valid_locales-[I18n.locale])
|
||||||
end
|
end
|
||||||
|
|
||||||
def lang_panel_tabbable_wrapper(add_more_params,&block)
|
def lang_panel_tabbable_wrapper_for_sm(add_more_params,&block)
|
||||||
add_more_counter = ''
|
add_more_counter = ''
|
||||||
|
|
||||||
if self.markup=='text_area' #or self.markup=='address'
|
if self.markup=='text_area' #or self.markup=='address'
|
||||||
|
@ -311,7 +324,7 @@ protected
|
||||||
end
|
end
|
||||||
|
|
||||||
if can_muti_lang_input_for_sm?
|
if can_muti_lang_input_for_sm?
|
||||||
result << lang_panel_tabbable_wrapper(add_more_params,&block)
|
result << lang_panel_tabbable_wrapper_for_sm(add_more_params,&block)
|
||||||
result << gen_modal_dialog if self.markup == "address"
|
result << gen_modal_dialog if self.markup == "address"
|
||||||
# result << add_more_unt if can_add_more
|
# result << add_more_unt if can_add_more
|
||||||
else #cross lang field
|
else #cross lang field
|
||||||
|
|
|
@ -3,111 +3,4 @@ module Admin::SeminarsValuesHelper
|
||||||
markup = attribute_field.markup
|
markup = attribute_field.markup
|
||||||
$seminar_list[:markups][markup]["panel"] == type ? type : [type,'hide'].join(" ")
|
$seminar_list[:markups][markup]["panel"] == type ? type : [type,'hide'].join(" ")
|
||||||
end
|
end
|
||||||
def show_west_calender(from_to=nil)
|
|
||||||
case from_to
|
|
||||||
when :to
|
|
||||||
date = get_date(:to)
|
|
||||||
when :from
|
|
||||||
date = get_date(:from)
|
|
||||||
when nil
|
|
||||||
date = get_date
|
|
||||||
end
|
|
||||||
|
|
||||||
# case self.member_profile_field["typeC"]["format"]
|
|
||||||
# when 'format1' # Y/M/D h:m
|
|
||||||
# date.strftime("%Y/%m/%d %H:%M")
|
|
||||||
# when 'format2' # Y/M/D
|
|
||||||
# date.strftime("%Y/%m/%d")
|
|
||||||
# when 'format3' # Y/M
|
|
||||||
# date.strftime("%Y/%m")
|
|
||||||
# when 'format4' # Y
|
|
||||||
# date.strftime("%Y")
|
|
||||||
# end # of case west cal format
|
|
||||||
end
|
|
||||||
|
|
||||||
def show_minguo_calendar(from_to=nil)
|
|
||||||
get_minguo
|
|
||||||
|
|
||||||
case from_to
|
|
||||||
when :to
|
|
||||||
date = get_date(:to)
|
|
||||||
when :from
|
|
||||||
date = get_date(:from)
|
|
||||||
when nil
|
|
||||||
date = get_date
|
|
||||||
end
|
|
||||||
|
|
||||||
@date = date.split('/')
|
|
||||||
date_year = @date[0].to_i
|
|
||||||
|
|
||||||
year_str = ""
|
|
||||||
unless date_year == 1912
|
|
||||||
m_year = (date_year - 1912).abs.to_s + I18n.t("date.minguo_calendar.year")
|
|
||||||
year_str = minguo_format_year(m_year)
|
|
||||||
end
|
|
||||||
get_minguo_year(from_to) + minguo_m_y_d_time(from_to)
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_minguo_year(from_to=nil)
|
|
||||||
case from_to
|
|
||||||
when :to
|
|
||||||
date = get_date(:to)
|
|
||||||
when :from
|
|
||||||
date = get_date(:from)
|
|
||||||
when nil
|
|
||||||
date = get_date
|
|
||||||
end
|
|
||||||
|
|
||||||
@date = date.split('/')
|
|
||||||
date_year = @date[0].to_i
|
|
||||||
|
|
||||||
m_year = (date_year - 1911).abs
|
|
||||||
year_end = I18n.t("date.minguo_calendar.year")
|
|
||||||
case
|
|
||||||
when date_year <1912
|
|
||||||
I18n.t("date.minguo_calendar.before") + (m_year+1).to_s + year_end
|
|
||||||
when date_year ==1912
|
|
||||||
I18n.t("date.minguo_calendar.first_year")
|
|
||||||
when date_year >1912
|
|
||||||
I18n.t("date.minguo_calendar.after")+ (m_year).to_s + year_end
|
|
||||||
end # of case tw_calendar year
|
|
||||||
end
|
|
||||||
|
|
||||||
def minguo_m_y_d_time(from_to=nil)
|
|
||||||
case from_to
|
|
||||||
when :to
|
|
||||||
date = get_date(:to)
|
|
||||||
when :from
|
|
||||||
date = get_date(:from)
|
|
||||||
when nil
|
|
||||||
date = get_date
|
|
||||||
end
|
|
||||||
@date = date.split('/')
|
|
||||||
|
|
||||||
case self.seminar_signup_field["typeC"]["format"]
|
|
||||||
when 'format1' # Y/M/D h:m
|
|
||||||
"/#{@date[1]}/#{@date[2]}"
|
|
||||||
when 'format2' # Y/M/D
|
|
||||||
"/#{@date[1]}/#{@date[2]}"
|
|
||||||
when 'format3' # Y/M
|
|
||||||
|
|
||||||
"/#{@date[1]}#{I18n.t("date.minguo_calendar.month")}"\
|
|
||||||
when 'format4' # Y
|
|
||||||
''
|
|
||||||
end # of case
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_date_by_format(from_to = nil)
|
|
||||||
case I18n.locale
|
|
||||||
when :zh_tw
|
|
||||||
case
|
|
||||||
when self.seminar_signup_field["typeC"]["calendar"] == "west_calendar"
|
|
||||||
show_west_calender(from_to)
|
|
||||||
when self.seminar_signup_field["typeC"]["calendar"] == "tw_calendar"
|
|
||||||
show_minguo_calendar(from_to)
|
|
||||||
end #case self.seminar_signup_field["typeC"]["calendar"]
|
|
||||||
when :en
|
|
||||||
show_west_calender(from_to)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
|
@ -47,7 +47,8 @@ class SeminarSignupField
|
||||||
end
|
end
|
||||||
|
|
||||||
def locale
|
def locale
|
||||||
get_data["cross_lang"] == "true" ? false : true
|
tmp = get_data
|
||||||
|
!tmp || get_data["cross_lang"] == "true" ? false : true
|
||||||
end
|
end
|
||||||
|
|
||||||
def self_defined_markup_options?
|
def self_defined_markup_options?
|
||||||
|
|
|
@ -2,228 +2,9 @@ class SeminarSignupValue
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
include Mongoid::Attributes::Dynamic
|
include Mongoid::Attributes::Dynamic
|
||||||
|
belongs_to :seminar_signup_field #must for FieldParser
|
||||||
include ::AttributeValuesHelper
|
include ::AttributeValuesHelper
|
||||||
include ::Admin::SeminarsValuesHelper
|
include ::Admin::SeminarsValuesHelper
|
||||||
|
|
||||||
field :key, type: String
|
|
||||||
|
|
||||||
belongs_to :seminar_signup_field
|
|
||||||
belongs_to :seminar_signup
|
belongs_to :seminar_signup
|
||||||
|
|
||||||
before_save :check_key
|
|
||||||
before_save :data_proc
|
|
||||||
|
|
||||||
def add_more_counter
|
|
||||||
index_max = self["val"].count rescue 0
|
|
||||||
index_max == 0 ? 1 : index_max
|
|
||||||
end
|
|
||||||
|
|
||||||
def value(index = nil)
|
|
||||||
site = Site.first
|
|
||||||
result = case self.seminar_signup_field.markup
|
|
||||||
when 'text_field','text_area'
|
|
||||||
if self.seminar_signup_field.add_more and (self.seminar_signup_field.markup == "text_field")
|
|
||||||
index.nil? ? self["val"] : self["val"][index]
|
|
||||||
else
|
|
||||||
self.seminar_signup_field.get_data["cross_lang"] =="true" ? self["val"] : Hash[site.valid_locales.collect{|lang| [lang,self[lang.to_sym]]}]
|
|
||||||
end
|
|
||||||
when 'select','radio_button','address'
|
|
||||||
self["val"]
|
|
||||||
when 'date'
|
|
||||||
if !self["val"].blank? and !self["val"]['(1i)'].blank?
|
|
||||||
"#{self["val"]['(1i)']}/#{self["val"]['(2i)']}/#{self["val"]['(3i)']}"
|
|
||||||
else
|
|
||||||
self["val"]
|
|
||||||
end
|
|
||||||
when 'checkbox'
|
|
||||||
self["val"]
|
|
||||||
end #end of case self.seminar_signup_field.markup
|
|
||||||
end
|
|
||||||
|
|
||||||
def value=(value)
|
|
||||||
#save everything to temp_data waiting for futher process
|
|
||||||
self[:temp_data] = value
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_field_value
|
|
||||||
seminar_signup_field = self.seminar_signup_field
|
|
||||||
if (seminar_signup_field.markup.eql?("text_field") || seminar_signup_field.markup.eql?("text_area"))
|
|
||||||
if self.value.class == String
|
|
||||||
field_value = self.value
|
|
||||||
else
|
|
||||||
field_value = self.value[I18n.locale]
|
|
||||||
end
|
|
||||||
elsif (seminar_signup_field.markup.eql?("select") || seminar_signup_field.markup.eql?("radio_button"))
|
|
||||||
field_value = seminar_signup_field.markup_value["#{self.value}"][I18n.locale] rescue nil
|
|
||||||
elsif seminar_signup_field.markup.eql?("address")
|
|
||||||
field_value = rf[:address_key][I18n.locale].map{|k,v| v}.delete_if(&:blank?).join(', ')
|
|
||||||
elsif seminar_signup_field.markup.eql?("date")
|
|
||||||
case seminar_signup_field.typeC['format']
|
|
||||||
when 'format1'
|
|
||||||
field_value = self.value.to_date.strftime("%Y/%m/%d")
|
|
||||||
when 'format2'
|
|
||||||
field_value = self.value.to_date.strftime("%Y/%m/%d")
|
|
||||||
when 'format3'
|
|
||||||
field_value = self.value.to_date.strftime("%Y/%m")
|
|
||||||
when 'format4'
|
|
||||||
field_value = self.value.to_date.strftime("%Y")
|
|
||||||
end
|
|
||||||
elsif seminar_signup_field.markup.eql?("checkbox")
|
|
||||||
field_value = self.value.map {|v| seminar_signup_field.markup_value["#{v}"][I18n.locale]}.join(', ') rescue nil
|
|
||||||
end
|
|
||||||
|
|
||||||
field_value = (field_value =~ /\A#{URI::regexp(['http', 'https'])}\z/) ? "<a href='#{field_value}' target='blank'>#{field_value}</a>" : field_value
|
|
||||||
field_value = (field_value =~ /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i) ? "<a href='mailto:#{field_value}'>#{field_value}</a>" : field_value
|
|
||||||
|
|
||||||
if !field_value.blank?
|
|
||||||
{
|
|
||||||
"key" => seminar_signup_field.key,
|
|
||||||
"title" => seminar_signup_field.title,
|
|
||||||
"value" => field_value,
|
|
||||||
"val" => field_value = self.value
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
"key" => seminar_signup_field.key,
|
|
||||||
"title" => seminar_signup_field.title,
|
|
||||||
"value" => "",
|
|
||||||
"val" => field_value = self.value
|
|
||||||
}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_value_by_locale(locale,add_more_index=nil)
|
|
||||||
seminar_signup_field = self.seminar_signup_field
|
|
||||||
case seminar_signup_field.markup
|
|
||||||
when "text_field"
|
|
||||||
case seminar_signup_field.add_more
|
|
||||||
when true
|
|
||||||
if seminar_signup_field.locale
|
|
||||||
add_more_index.nil? ? self.value.collect{|t| t[locale.to_s]}.join(",") : self.value(add_more_index)[locale]
|
|
||||||
else
|
|
||||||
add_more_index.nil? ? self.value.join(",") : self.value(add_more_index)
|
|
||||||
end
|
|
||||||
|
|
||||||
when false
|
|
||||||
seminar_signup_field.locale ? self[locale.to_s] : self.value
|
|
||||||
end
|
|
||||||
|
|
||||||
when "select"
|
|
||||||
markup_values = seminar_signup_field.self_defined_markup_options? ? seminar_signup_field.markup_value : self.seminar_signup_field.markup_value
|
|
||||||
markup_values[self.value][locale.to_s] rescue 'NoData'
|
|
||||||
|
|
||||||
when "text_area"
|
|
||||||
seminar_signup_field.locale ? self[locale.to_s] : self.value
|
|
||||||
|
|
||||||
when "date"
|
|
||||||
if seminar_signup_field.date_is_range?
|
|
||||||
get_date_by_format(:from) + ' ~ ' + get_date_by_format(:to)
|
|
||||||
# self.value["from"] + ' ~ ' + self.value["to"]
|
|
||||||
else
|
|
||||||
get_date_by_format
|
|
||||||
# self.value
|
|
||||||
end
|
|
||||||
|
|
||||||
when "address"
|
|
||||||
self.value[locale.to_s]
|
|
||||||
|
|
||||||
when "radio_button"
|
|
||||||
markup_values = seminar_signup_field.markup_value
|
|
||||||
markup_values[self.value][locale.to_s]
|
|
||||||
|
|
||||||
when "checkbox"
|
|
||||||
markup_values = seminar_signup_field.markup_value
|
|
||||||
self.value.collect{|key| markup_values["#{key}"][I18n.locale]}.join(",")
|
|
||||||
when "date_durnation"
|
|
||||||
self.value
|
|
||||||
|
|
||||||
else
|
|
||||||
seminar_signup_field.locale ? self[locale.to_s] : self.value
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_date(item = nil)
|
|
||||||
case item
|
|
||||||
when :from
|
|
||||||
# data = self[:val]["from"]
|
|
||||||
data = self.value["from"]
|
|
||||||
when :to
|
|
||||||
# data = self[:val]["to"]
|
|
||||||
data = self.value["to"]
|
|
||||||
when nil
|
|
||||||
# data = self[:val]
|
|
||||||
data = self.value
|
|
||||||
end
|
|
||||||
|
|
||||||
# Date.new(data["(1i)"].to_i,data["(2i)"].to_i,data["(3i)"].to_i) rescue nil
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.put_field_values(member, field_value_param, field_value_id=nil,field_value_status)
|
|
||||||
if field_value_status.eql?(true)
|
|
||||||
@seminar_signup_field_value = member.seminar_signup_values.find(field_value_id) rescue nil
|
|
||||||
if @seminar_signup_field_value!=nil
|
|
||||||
@seminar_signup_field_value.update(field_value_param) rescue nil
|
|
||||||
@seminar_signup_field_value.save rescue nil
|
|
||||||
end
|
|
||||||
else
|
|
||||||
@seminar_signup_field_value = member.seminar_signup_values.build(field_value_param) rescue nil
|
|
||||||
@seminar_signup_field_value.save
|
|
||||||
end
|
|
||||||
return @seminar_signup_field_value
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
protected
|
|
||||||
|
|
||||||
def unset_all_lang_values
|
|
||||||
VALID_LOCALES.each{|t| self.unset t}
|
|
||||||
end
|
|
||||||
|
|
||||||
def data_proc
|
|
||||||
seminar_signup_field = self.seminar_signup_field
|
|
||||||
unless self[:temp_data].nil?
|
|
||||||
case seminar_signup_field.markup
|
|
||||||
when "address"
|
|
||||||
self["val"] = self["temp_data"]
|
|
||||||
when 'text_field','text_area'
|
|
||||||
if seminar_signup_field.add_more
|
|
||||||
self["val"] = self["temp_data"]
|
|
||||||
else # if not add_more
|
|
||||||
if seminar_signup_field.can_muti_lang_input?
|
|
||||||
self[:temp_data].each do |key,val|
|
|
||||||
self[key] = val
|
|
||||||
end if(!seminar_signup_field.get_data[:cross_lang])
|
|
||||||
else
|
|
||||||
self["val"] = self[:temp_data]
|
|
||||||
end
|
|
||||||
end # of self.seminar_signup_field.add_more
|
|
||||||
|
|
||||||
when 'select','date','radio_button'
|
|
||||||
self["val"] = self[:temp_data]
|
|
||||||
when 'checkbox'
|
|
||||||
self["val"] = self[:temp_data].keys
|
|
||||||
end #end of case self.seminar_signup_field.markup
|
|
||||||
end # of self[:temp_data].nil?
|
|
||||||
self.unset('temp_data')
|
|
||||||
self.unset('temp')
|
|
||||||
end #of data_proc
|
|
||||||
|
|
||||||
def check_key
|
|
||||||
if self.seminar_signup_field_id.present? && self.seminar_signup_field.nil?
|
|
||||||
begin
|
|
||||||
self.seminar_signup_field = SeminarSignupField.find(self.seminar_signup_field_id)
|
|
||||||
rescue
|
|
||||||
nil
|
|
||||||
end
|
|
||||||
end
|
|
||||||
self.key = self.seminar_signup_field.key rescue nil
|
|
||||||
end
|
|
||||||
|
|
||||||
def method_missing(*field)
|
|
||||||
if field.size < 1
|
|
||||||
self[field[0]]
|
|
||||||
else
|
|
||||||
self[(field[0].to_s.delete "=")] = field[1]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<%= form_for @seminar_signup, url: seminars_path, html: {class: "content form-horizontal" , :id=>"new-seminar-signup"} do |f| %>
|
<%= form_for @seminar_signup, url: seminars_path, html: {class: "content form-horizontal" , :id=>"new-seminar-signup", multipart: true} do |f| %>
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
|
||||||
<!-- Title -->
|
<!-- Title -->
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
<div class="highlight seminar_privacy">
|
<div class="highlight seminar_privacy">
|
||||||
|
|
||||||
<%= @seminar_agreement.content.html_safe %>
|
<%= @seminar_agreement.content.html_safe rescue '' %>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,9 @@ markups:
|
||||||
muti_lang_input_supprt: false
|
muti_lang_input_supprt: false
|
||||||
ext_support: false
|
ext_support: false
|
||||||
panel: member_relations
|
panel: member_relations
|
||||||
|
file_field:
|
||||||
|
muti_lang_input_supprt: false
|
||||||
|
ext_support: false
|
||||||
seminar_preferred_session:
|
seminar_preferred_session:
|
||||||
muti_lang_input_supprt: false
|
muti_lang_input_supprt: false
|
||||||
ext_support: false
|
ext_support: false
|
||||||
|
|
Loading…
Reference in New Issue