address field. js and style is broken
This commit is contained in:
parent
be448d42c9
commit
a85e5fcc0d
|
@ -0,0 +1,80 @@
|
||||||
|
jQuery(document).ready(function($) {
|
||||||
|
// Stuff to do as soon as the DOM is ready. Use $() w/o colliding with other libs;
|
||||||
|
var current_textarea = {};
|
||||||
|
current_textarea['en'] = $("textarea[for=en]").val();
|
||||||
|
current_textarea['zh_tw'] = $("textarea[for=zh_tw]").val();
|
||||||
|
$("div.controls").on("click","a.edit-btn",function(){
|
||||||
|
switch($(this).parent().parent().find("ul li.active a").attr("href")){
|
||||||
|
case ".tab1":
|
||||||
|
$("#tab3").addClass("active in");
|
||||||
|
$(".modal-body li").eq(0).addClass("active");
|
||||||
|
break;
|
||||||
|
case ".tab2":
|
||||||
|
$("#tab4").addClass("active in");
|
||||||
|
$(".modal-body li").eq(1).addClass("active");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
var lang = ["en","zh_tw"];
|
||||||
|
for(i=0;i<2;i++){
|
||||||
|
|
||||||
|
var sa = $(".tab-content input.street_address_"+lang[i]).val();
|
||||||
|
var city = $(".tab-content input.city_"+lang[i]).val();
|
||||||
|
var county = $(".tab-content input.county_"+lang[i]).val();
|
||||||
|
var zip = $(".tab-content input.zip_"+lang[i]).val();
|
||||||
|
var country = $(".tab-content input.country_"+lang[i]).val();
|
||||||
|
$(".modal-body").find('#street_address_'+lang[i]).val(sa)
|
||||||
|
$(".modal-body").find('#city_'+lang[i]).val(city);
|
||||||
|
$(".modal-body").find('#counties_'+lang[i]).val(county);
|
||||||
|
$(".modal-body").find('#zip_'+lang[i]).val(zip);
|
||||||
|
$(".modal-body").find('#country_'+lang[i]).val(country);
|
||||||
|
var verify = sa + city + country +county + zip;
|
||||||
|
var combined = "";
|
||||||
|
if(verify!="")
|
||||||
|
combined = sa + "\n" + city + "\n" + county + "\n" + zip + "\n" + country;
|
||||||
|
|
||||||
|
if($(".tab-content textarea[for="+lang[i]+"]").val() != combined){
|
||||||
|
$(".tab-content").find('#street_address_'+lang[i]).val($(".tab-content textarea[for="+lang[i]+"]").val());
|
||||||
|
$(".modal-body input").val("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
$("textarea.dummy").change(function(){
|
||||||
|
var lang = $(this).attr("for");
|
||||||
|
if(current_textarea[lang] != $(this).val())
|
||||||
|
$("input.indicator_"+lang).val("true");
|
||||||
|
else
|
||||||
|
$("input.indicator_"+lang).val("false");
|
||||||
|
})
|
||||||
|
|
||||||
|
$(".address-edit").on("hidden",function(){
|
||||||
|
$("#tab3").removeClass("active in");
|
||||||
|
$("#tab4").removeClass("active in");
|
||||||
|
$(".modal-body li").removeClass("active");
|
||||||
|
$(".modal-body input, .modal-body textarea").val("");
|
||||||
|
|
||||||
|
})
|
||||||
|
$(".bt-save").click(function(){
|
||||||
|
var lang = ["en","zh_tw"];
|
||||||
|
for(i=0;i<2;i++){
|
||||||
|
var sa = $(".tab-content").find('#street_address_'+lang[i]).val();
|
||||||
|
var city = $(".tab-content").find('#city_'+lang[i]).val();
|
||||||
|
var county = $(".tab-content").find('#counties_'+lang[i]).val();
|
||||||
|
var zip = $(".tab-content").find('#zip_'+lang[i]).val();
|
||||||
|
var country = $(".tab-content").find('#country_'+lang[i]).val();
|
||||||
|
$(".tab-content input.street_address_"+lang[i]).val(sa);
|
||||||
|
$(".tab-content input.city_"+lang[i]).val(city);
|
||||||
|
$(".tab-content input.county_"+lang[i]).val(county);
|
||||||
|
$(".tab-content input.zip_"+lang[i]).val(zip);
|
||||||
|
$(".tab-content input.country_"+lang[i]).val(country);
|
||||||
|
var verify = sa + city + country +county + zip;
|
||||||
|
var combined = "";
|
||||||
|
if(verify!="")
|
||||||
|
combined = sa + "\n" + city + "\n" + county + "\n" + zip + "\n" + country;
|
||||||
|
$(".tab-content textarea[for="+lang[i]+"]").val(combined);
|
||||||
|
$("input.indicator_"+lang[i]).val("false");
|
||||||
|
current_textarea[lang[i]] = combined;
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
});
|
|
@ -0,0 +1,26 @@
|
||||||
|
function checkMultipleInput() {
|
||||||
|
$(".multipleInput").each(function() {
|
||||||
|
$(this).children('.controls').length==1 ? $(this).addClass("plural") : $(this).removeClass("plural")
|
||||||
|
});
|
||||||
|
}
|
||||||
|
function removeInput(){
|
||||||
|
$(".removeInput").click(function (){
|
||||||
|
$(this).parents(".controls").remove();
|
||||||
|
checkMultipleInput();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
$(document).ready(function(){
|
||||||
|
var $modalNumber = 0;
|
||||||
|
checkMultipleInput();
|
||||||
|
removeInput();
|
||||||
|
$(".addinput").click(function (){
|
||||||
|
$modalNumber+=1;
|
||||||
|
var $CloneTarget = $(this).parents(".controls").prev(".multipleInput").children('.controls:last');
|
||||||
|
$(this).parents(".controls").prev(".multipleInput").append($CloneTarget.clone());
|
||||||
|
$(this).parents(".controls").prev(".multipleInput").children('.controls:last input').val("");
|
||||||
|
removeInput();
|
||||||
|
checkMultipleInput();
|
||||||
|
return false;
|
||||||
|
})
|
||||||
|
});
|
|
@ -280,7 +280,7 @@
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
}
|
}
|
||||||
.nav-tabs li a {
|
.nav-tabs li a {
|
||||||
padding-right: 32px;
|
/*padding-right: 32px;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
.user-role {
|
.user-role {
|
||||||
|
@ -314,7 +314,8 @@
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
.role-block .nav-pills {
|
.role-block .nav-pills {
|
||||||
margin-bottom: 0;g
|
margin-bottom: 0;
|
||||||
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
.role-block .nav-pills > li > a {
|
.role-block .nav-pills > li > a {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
|
@ -345,7 +346,13 @@
|
||||||
-moz-border-radius: 0 3px 3px 0;
|
-moz-border-radius: 0 3px 3px 0;
|
||||||
border-radius: 0 3px 3px 0;
|
border-radius: 0 3px 3px 0;
|
||||||
}
|
}
|
||||||
.language-swich .tab-pane {
|
.input-append > .active {
|
||||||
margin-bottom: 5px;
|
display: inline-block;
|
||||||
margin-right: 10px;
|
}
|
||||||
|
.input-append .active {
|
||||||
|
background-color: transparent;
|
||||||
|
border-color: transparent;
|
||||||
|
}
|
||||||
|
.language-swich .tab-pane {
|
||||||
|
/*margin-bottom: 5px;*/
|
||||||
}
|
}
|
|
@ -111,7 +111,7 @@
|
||||||
.role-block .form-horizontal .controls {
|
.role-block .form-horizontal .controls {
|
||||||
margin-left: 120px;
|
margin-left: 120px;
|
||||||
}
|
}
|
||||||
.role-block .form-horizontal .controls>.input-append {
|
.role-block .form-horizontal .controls .input-append {
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
.role-block .form-horizontal legend .onoff {
|
.role-block .form-horizontal legend .onoff {
|
||||||
|
|
|
@ -5,7 +5,7 @@ module AttributeFieldsHelper
|
||||||
include ActionView::Helpers::DateHelper
|
include ActionView::Helpers::DateHelper
|
||||||
include ActionView::Helpers::TagHelper
|
include ActionView::Helpers::TagHelper
|
||||||
include ActionView::Helpers::RenderingHelper
|
include ActionView::Helpers::RenderingHelper
|
||||||
|
include OrbitBasis::RenderAnywhere
|
||||||
def block_helper(user,index,disable = false)
|
def block_helper(user,index,disable = false)
|
||||||
unless self.disabled
|
unless self.disabled
|
||||||
@index = index
|
@index = index
|
||||||
|
@ -26,37 +26,22 @@ module AttributeFieldsHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def render_address
|
def render_address
|
||||||
#NP
|
|
||||||
control_group_wrapper do |key,value|
|
control_group_wrapper do |key,value|
|
||||||
result = '<div class="input-append">'.html_safe
|
value = (can_muti_lang_input? ? @prefiled_value[key] : @prefiled_value) rescue nil
|
||||||
|
key_field = can_muti_lang_input? ? "[#{key}]" : ""
|
||||||
|
place_holder= @panel_setting["placeholder"][key] rescue ''
|
||||||
|
result = text_area_tag(get_field_name_base + key_field, value,@markup_options.merge(:placeholder=>place_holder))
|
||||||
|
|
||||||
if(add_more and value.is_a?(Array))
|
result << hidden_field_tag(get_basic_field_name_base+"[temp][street_address][#{key}]",nil,:class=>"street_address_#{key}")
|
||||||
values = value
|
result << hidden_field_tag(get_basic_field_name_base+"[temp][city][#{key}]",nil,:class=>"city_#{key}")
|
||||||
result << values.each_with_index.collect do |value,index|
|
result << hidden_field_tag(get_basic_field_name_base+"[temp][zip][#{key}]",nil,:class=>"zip_#{key}")
|
||||||
text_field_tag(get_field_name_base + (key.nil? ? '' : "[#{key}][#{index}]"), value.last,@markup_options)
|
result << hidden_field_tag(get_basic_field_name_base+"[temp][country][#{key}]",nil,:class=>"country_#{key}")
|
||||||
end.join.html_safe
|
result << hidden_field_tag(get_basic_field_name_base+"[temp][indicator][#{key}]",nil,:class=>"indicator_#{key}")
|
||||||
else
|
|
||||||
result << text_field_tag(get_field_name_base + (key.nil? ? '' : "[#{key}]"), value,@markup_options)
|
|
||||||
end
|
|
||||||
|
|
||||||
result << ('<a href="#'+self.key+'-edit" class="btn" type="button" data-toggle="modal"><i class="icon-edit"></i></a>').html_safe
|
|
||||||
result << '<a href="#" class="btn" type="button"><i class="icon-trash"></i></a>'.html_safe
|
|
||||||
result << '</div>'.html_safe
|
|
||||||
result << gen_modal_dialog
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def render_checkbox
|
def render_checkbox
|
||||||
@prefiled_value ||=[]
|
@prefiled_value ||=[]
|
||||||
# @prefiled_value = @prefiled_value.keys unless @prefiled_value ==[]
|
|
||||||
# begin
|
|
||||||
# markup_value = eval(self.markup_value)
|
|
||||||
# rescue
|
|
||||||
# markup_value = self.markup_value
|
|
||||||
# ensure
|
|
||||||
# markup_value ||= {}
|
|
||||||
# end
|
|
||||||
|
|
||||||
control_group_wrapper do
|
control_group_wrapper do
|
||||||
a = self[:option_list].collect do |key,value|
|
a = self[:option_list].collect do |key,value|
|
||||||
label_tag(key,check_box_tag(get_field_name_base+"[#{key}]", true , (@prefiled_value.include?(key) ? true : false), {})+value[I18n.locale.to_s],@markup_options.merge(:class=>"control-label"))
|
label_tag(key,check_box_tag(get_field_name_base+"[#{key}]", true , (@prefiled_value.include?(key) ? true : false), {})+value[I18n.locale.to_s],@markup_options.merge(:class=>"control-label"))
|
||||||
|
@ -65,7 +50,6 @@ module AttributeFieldsHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
def render_date
|
def render_date
|
||||||
#NP
|
|
||||||
control_group_wrapper{date_select(get_field_name_base,nil,@markup_options.merge(:default=>@prefiled_value),:class=>"input-small")}
|
control_group_wrapper{date_select(get_field_name_base,nil,@markup_options.merge(:default=>@prefiled_value),:class=>"input-small")}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -75,13 +59,6 @@ module AttributeFieldsHelper
|
||||||
|
|
||||||
def render_radio_button
|
def render_radio_button
|
||||||
@prefiled_value ||=[]
|
@prefiled_value ||=[]
|
||||||
# begin
|
|
||||||
# markup_value = eval(self.markup_value)
|
|
||||||
# rescue
|
|
||||||
# markup_value = self.markup_value
|
|
||||||
# ensure
|
|
||||||
# markup_value ||= {}
|
|
||||||
# end
|
|
||||||
control_group_wrapper do
|
control_group_wrapper do
|
||||||
self[:option_list].collect do |key,value|
|
self[:option_list].collect do |key,value|
|
||||||
label_tag(key,radio_button_tag(get_field_name_base, key , (@prefiled_value.include?(key) ? true : false), {})+value[I18n.locale.to_s],@markup_options.merge(:class=>"control-label"))
|
label_tag(key,radio_button_tag(get_field_name_base, key , (@prefiled_value.include?(key) ? true : false), {})+value[I18n.locale.to_s],@markup_options.merge(:class=>"control-label"))
|
||||||
|
@ -92,25 +69,15 @@ module AttributeFieldsHelper
|
||||||
def render_select
|
def render_select
|
||||||
prompt = @panel_setting["initial"][I18n.locale.to_s] rescue nil
|
prompt = @panel_setting["initial"][I18n.locale.to_s] rescue nil
|
||||||
@markup_options.merge!(:prompt => prompt) unless prompt.nil?
|
@markup_options.merge!(:prompt => prompt) unless prompt.nil?
|
||||||
# markup_value = (self.markup_value.is_a?(Hash) ? self.markup_value : eval(self.markup_value) )rescue {}
|
|
||||||
# check self[:option_list].collect{|p| [p[1][I18n.locale.to_s],p[0]]}
|
|
||||||
control_group_wrapper{select_tag( get_field_name_base,options_for_select(self.option_list.collect{|p| [p[1][I18n.locale.to_s],p[0]]},@prefiled_value),@markup_options)} rescue ""
|
control_group_wrapper{select_tag( get_field_name_base,options_for_select(self.option_list.collect{|p| [p[1][I18n.locale.to_s],p[0]]},@prefiled_value),@markup_options)} rescue ""
|
||||||
end
|
end
|
||||||
|
|
||||||
def render_text_area
|
def render_text_area
|
||||||
control_group_wrapper do |key,value|
|
control_group_wrapper do |key,value|
|
||||||
# if(add_more and value.is_a?(Hash))
|
value = can_muti_lang_input? ? @prefiled_value[key] : @prefiled_value
|
||||||
# values = value
|
key = can_muti_lang_input? ? "[#{key}]" : ""
|
||||||
# values.each_with_index.collect do |value,index|
|
|
||||||
# place_holder= @panel_setting["placeholder"][key]
|
|
||||||
# text_area_tag(get_field_name_base + (key.nil? ? '' : "[#{key}][#{index}]"), value.last,@markup_options.merge(:placeholder=>place_holder))
|
|
||||||
# end.join.html_safe
|
|
||||||
# else
|
|
||||||
value = can_muti_lang_input ? @prefiled_value[key] : @prefiled_value
|
|
||||||
key = can_muti_lang_input ? "[#{key}]" : ""
|
|
||||||
place_holder= @panel_setting["placeholder"][I18n.locale.to_s] rescue ''
|
place_holder= @panel_setting["placeholder"][I18n.locale.to_s] rescue ''
|
||||||
text_area_tag(get_field_name_base + key, value,@markup_options.merge(:placeholder=>place_holder))
|
text_area_tag(get_field_name_base + key, value,@markup_options.merge(:placeholder=>place_holder))
|
||||||
# end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -118,10 +85,10 @@ module AttributeFieldsHelper
|
||||||
control_group_wrapper do |key,value,add_more_counter|
|
control_group_wrapper do |key,value,add_more_counter|
|
||||||
if(add_more)
|
if(add_more)
|
||||||
place_holder= @panel_setting["placeholder"][key]
|
place_holder= @panel_setting["placeholder"][key]
|
||||||
text_field_tag(get_field_name_base + (key.nil? ? '' : "[][#{key}]"), value,@markup_options.merge(:placeholder=>place_holder)) + link_to( (content_tag :i,'',:class=>"icon-trash"),'#',:class=> "btn removeInput")
|
text_field_tag(get_field_name_base + (key.nil? ? '' : "[][#{key}]"), value,@markup_options.merge(:placeholder=>place_holder))
|
||||||
else
|
else
|
||||||
value = (can_muti_lang_input ? @prefiled_value[key] : @prefiled_value) rescue nil
|
value = (can_muti_lang_input? ? @prefiled_value[key] : @prefiled_value) rescue nil
|
||||||
key_field = can_muti_lang_input ? "[#{key}]" : ""
|
key_field = can_muti_lang_input? ? "[#{key}]" : ""
|
||||||
place_holder= @panel_setting["placeholder"][key] rescue ''
|
place_holder= @panel_setting["placeholder"][key] rescue ''
|
||||||
text_field_tag(get_field_name_base + key_field, value,@markup_options.merge(:placeholder=>place_holder))
|
text_field_tag(get_field_name_base + key_field, value,@markup_options.merge(:placeholder=>place_holder))
|
||||||
end
|
end
|
||||||
|
@ -141,50 +108,58 @@ protected
|
||||||
def controls_wrapper(&block)
|
def controls_wrapper(&block)
|
||||||
loop_time = self.add_more ? @attribute_value.add_more_counter : 1
|
loop_time = self.add_more ? @attribute_value.add_more_counter : 1
|
||||||
result = ''
|
result = ''
|
||||||
result << "<div class='multipleInput'>" if self.add_more
|
multi_and_edit_more_class = (self.markup == 'address' ? "multipleInput" : "multipleInput editMore" )
|
||||||
|
result << "<div class='#{multi_and_edit_more_class}'>" if self.add_more
|
||||||
result << "<div class='controls'>"
|
result << "<div class='controls'>"
|
||||||
loop_time.times do |loop_counter|
|
loop_time.times do |loop_counter|
|
||||||
if can_muti_lang_input
|
|
||||||
result << "<div class='tabbable'>"
|
|
||||||
|
|
||||||
result << "<div class='tab-content'>"
|
if can_muti_lang_input?
|
||||||
|
result << "<div class='tabbable'>"
|
||||||
|
tab_content_class = add_more ? "tab-content input-append" : "tab-content"
|
||||||
|
|
||||||
|
result << "<div class= '#{tab_content_class}'>"
|
||||||
VALID_LOCALES.collect do |key|
|
VALID_LOCALES.collect do |key|
|
||||||
|
|
||||||
value = @prefiled_value[key.to_s] rescue nil
|
value = @prefiled_value[key.to_s] rescue nil
|
||||||
div_class = ["tab-pane" ,"fade"].join(" ")
|
div_class = ["tab-pane" ,"fade"].join(" ")
|
||||||
div_class << (key == I18n.locale.to_s ? " active in" : '')
|
div_class << (key == I18n.locale.to_s ? " active in" : '')
|
||||||
if self.add_more
|
if self.add_more
|
||||||
div_class << " input-append #{add_more_tab(:input_field,loop_counter,key)}"
|
div_class << " #{add_more_tab(:input_field,loop_counter,key)}"
|
||||||
# binding.pry
|
|
||||||
add_more_field_value = @prefiled_value[loop_counter][key] rescue ''
|
add_more_field_value = @prefiled_value[loop_counter][key] rescue ''
|
||||||
result << content_tag(:div,yield(key,add_more_field_value,loop_counter),:class=>div_class)#,:id=>"tab"+id.to_s+"_#{key}_#{loop_counter}"
|
result << content_tag(:div,yield(key,add_more_field_value,loop_counter),:class=>div_class)#,:id=>"tab"+id.to_s+"_#{key}_#{loop_counter}"
|
||||||
else
|
else
|
||||||
result << content_tag(:div,yield(key,value),:class=>div_class,:id=>"tab"+id.to_s+"_#{key}")
|
result << content_tag(:div,yield(key,value),:class=>div_class,:id=>"tab"+id.to_s+"_#{key}")
|
||||||
end
|
end
|
||||||
end # of VALID_LOCALES.collect for tabed input
|
end # of VALID_LOCALES.collect for tabed input
|
||||||
|
|
||||||
|
result << '<a href=".address-edit.' + get_pairing_tab_class({}) + ' " class="btn edit-btn" type="button" data-toggle="modal"><i class="icon-edit"></i></a>' if self.markup == 'address'
|
||||||
|
result << '<a href="#" class="btn removeInput" type="button"><i class="icon-trash"></i></a>' if self.add_more
|
||||||
result << "</div>"
|
result << "</div>"
|
||||||
|
|
||||||
|
if can_muti_lang_input?
|
||||||
result << "<ul class='nav nav-pills'>"
|
result << "<ul class='nav nav-pills'>"
|
||||||
VALID_LOCALES.each do |key|
|
VALID_LOCALES.reverse.each do |key|
|
||||||
link_entry = self.add_more ? "#{add_more_tab(:tab_btn,loop_counter,key)}" : "#tab"+id.to_s+"_#{key}"
|
link_entry = self.add_more ? "#{add_more_tab(:tab_btn,loop_counter,key)}" : "#tab"+id.to_s+"_#{key}"
|
||||||
result << content_tag(:li,link_to(I18n.t("langs."+key),link_entry,:data=>{:toggle=>"tab"}),:class=>(key == I18n.locale.to_s ? "active" : nil))
|
result << content_tag(:li,link_to(I18n.t("langs."+key),link_entry,:data=>{:toggle=>"tab"}),:class=>(key == I18n.locale.to_s ? "active" : nil))
|
||||||
end # of VALID_LOCALES.collect for tabs
|
end # of VALID_LOCALES.collect for tabs
|
||||||
result << "</ul>"
|
result << "</ul>"
|
||||||
|
end
|
||||||
|
|
||||||
result << "</div>"
|
result << "</div>"
|
||||||
# @prefiled_value.collect do |key,value|
|
result << gen_modal_dialog if self.markup == "address"
|
||||||
# result << yield(key,value)
|
|
||||||
# end
|
|
||||||
else
|
else
|
||||||
|
|
||||||
result << yield
|
result << yield
|
||||||
end
|
end
|
||||||
if can_add_more and (loop_counter == loop_time-1)
|
if can_add_more and (loop_counter == loop_time-1)
|
||||||
temp_field_name = get_basic_field_name_base + '[temp]'
|
temp_field_name = get_basic_field_name_base + '[temp]'
|
||||||
|
result << '<div class="controls">'
|
||||||
result << '<span class="help-block">'
|
result << '<span class="help-block">'
|
||||||
result << '<a href="#"><i class="icon-plus-sign"></i>'+I18n.t("admin.infos.add")+' </a>'
|
result << '<a href="#" class="addinput"><i class="icon-plus-sign"></i>'+I18n.t("admin.infos.add")+' </a>'
|
||||||
result << hidden_field_tag("#{temp_field_name}[count]",loop_time,:class=>"list_count")
|
result << hidden_field_tag("#{temp_field_name}[count]",loop_time,:class=>"list_count")
|
||||||
result << hidden_field_tag("#{temp_field_name}[count]",get_basic_field_name_base,:class=>"field_name")
|
result << hidden_field_tag("#{temp_field_name}[count]",get_basic_field_name_base,:class=>"field_name")
|
||||||
result << '</span>'
|
result << '</span>'
|
||||||
|
result << '</div>'
|
||||||
end
|
end
|
||||||
end # of loop_time
|
end # of loop_time
|
||||||
result << "</div>"
|
result << "</div>"
|
||||||
|
@ -193,9 +168,8 @@ protected
|
||||||
end # of def controls_wrapper(&block)
|
end # of def controls_wrapper(&block)
|
||||||
|
|
||||||
def control_group_wrapper(&block)
|
def control_group_wrapper(&block)
|
||||||
div_class = can_muti_lang_input ? "control-group language-swich" : "control-group"
|
div_class = can_muti_lang_input? ? "control-group language-swich" : "control-group"
|
||||||
temp = label + controls_wrapper(&block)
|
temp = label + controls_wrapper(&block)
|
||||||
|
|
||||||
result = content_tag(:div,temp,:class=>div_class)
|
result = content_tag(:div,temp,:class=>div_class)
|
||||||
result << end_block
|
result << end_block
|
||||||
|
|
||||||
|
@ -243,36 +217,26 @@ protected
|
||||||
label_tag(key,title,:class=>"control-label",:func => "field_label")
|
label_tag(key,title,:class=>"control-label",:func => "field_label")
|
||||||
end
|
end
|
||||||
|
|
||||||
def can_muti_lang_input
|
def can_muti_lang_input?
|
||||||
LIST[:markups][markup]["muti_lang_input_supprt"] #and locale
|
if self.markup == "address"
|
||||||
|
return true
|
||||||
|
else
|
||||||
|
LIST[:markups][markup]["muti_lang_input_supprt"] and !(get_data["cross_lang"] == "true")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def can_add_more
|
def can_add_more
|
||||||
|
if self.markup == "address"
|
||||||
|
return false
|
||||||
|
else
|
||||||
locale and LIST[:markups][markup]["ext_support"] && add_more
|
locale and LIST[:markups][markup]["ext_support"] && add_more
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
def render_anywhere(partial, assigns)
|
|
||||||
view = ActionView::Base.new(Rails::Configuration.new.view_path, assigns)
|
|
||||||
ActionView::Base.helper_modules.each { |helper| view.extend helper }
|
|
||||||
view.extend ApplicationHelper
|
|
||||||
view.render(:partial => partial)
|
|
||||||
end
|
|
||||||
|
|
||||||
def gen_modal_dialog
|
def gen_modal_dialog
|
||||||
result = '<div class="modal hide fade" id="address-edit" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" style="display: none; ">'
|
render_anywhere("shared/attribute_field/address_modal_dialog",{:field_name=>title,:btn_class => "#{get_pairing_tab_class({})}"})
|
||||||
result << '<div class="modal-header">'
|
|
||||||
result << '<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>'
|
|
||||||
result << '<h3 id="myModalLabel">'+title+'</h3>'
|
|
||||||
result << '</div>'
|
|
||||||
result << '<div class="modal-body">'
|
|
||||||
result << '<p>One fine body…</p>'
|
|
||||||
result << '</div>'
|
|
||||||
result << '<div class="modal-footer">'
|
|
||||||
result << '<button class="btn" data-dismiss="modal" aria-hidden="true">'+I18n.t("modal.close")+'</button>'
|
|
||||||
result << '<button class="btn btn-primary">'+I18n.t("modal.save_and_close")+'</button>'
|
|
||||||
result << '</div>'
|
|
||||||
result << '</div>'
|
|
||||||
result.html_safe
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
|
@ -1,5 +1,4 @@
|
||||||
class AttributeField
|
class AttributeField
|
||||||
|
|
||||||
include Mongoid::Document
|
include Mongoid::Document
|
||||||
include Mongoid::Timestamps
|
include Mongoid::Timestamps
|
||||||
include ::AttributeFieldsHelper
|
include ::AttributeFieldsHelper
|
||||||
|
@ -8,8 +7,6 @@ class AttributeField
|
||||||
field :markup ,:default=>"text_field"
|
field :markup ,:default=>"text_field"
|
||||||
field :option_list ,:type => Hash,:default => {}
|
field :option_list ,:type => Hash,:default => {}
|
||||||
field :markup_options,:type => Hash
|
field :markup_options,:type => Hash
|
||||||
# field :locale, :type => Boolean, :default => true
|
|
||||||
# field :list_options, :type => Array
|
|
||||||
field :built_in, :type => Boolean, :default => false
|
field :built_in, :type => Boolean, :default => false
|
||||||
field :disabled, :type => Boolean, :default => false
|
field :disabled, :type => Boolean, :default => false
|
||||||
field :to_delete,:type=> Boolean,:default => false
|
field :to_delete,:type=> Boolean,:default => false
|
||||||
|
@ -18,18 +15,11 @@ class AttributeField
|
||||||
field :typeC,:type=> Hash,:default=>{:claendar=>"west_claendar",:format=>"format3"}
|
field :typeC,:type=> Hash,:default=>{:claendar=>"west_claendar",:format=>"format3"}
|
||||||
field :typeD,:type=> Hash,:default=>{:cross_lang=>false}
|
field :typeD,:type=> Hash,:default=>{:cross_lang=>false}
|
||||||
field :typeE,:type=> Hash,:default=>{}
|
field :typeE,:type=> Hash,:default=>{}
|
||||||
|
|
||||||
|
|
||||||
#field :title, localize: true
|
|
||||||
|
|
||||||
field :title, localize: true
|
field :title, localize: true
|
||||||
|
|
||||||
|
|
||||||
belongs_to :attribute
|
belongs_to :attribute
|
||||||
# belongs_to :role
|
|
||||||
has_many :attribute_values,:autosave => true, :dependent => :destroy
|
has_many :attribute_values,:autosave => true, :dependent => :destroy
|
||||||
before_save :check_option_list
|
before_save :check_option_list
|
||||||
# validates_uniqueness_of :key
|
|
||||||
|
|
||||||
def markup_value
|
def markup_value
|
||||||
get_data["option_list"]
|
get_data["option_list"]
|
||||||
|
@ -52,12 +42,6 @@ class AttributeField
|
||||||
(self.attribute.role.method(self[:key].pluralize.to_sym) && self.attribute.role.method(self[:key].pluralize+"_for_"+markup)) rescue false
|
(self.attribute.role.method(self[:key].pluralize.to_sym) && self.attribute.role.method(self[:key].pluralize+"_for_"+markup)) rescue false
|
||||||
end
|
end
|
||||||
|
|
||||||
# def markup_value=(var)
|
|
||||||
# if !self_defined_markup_options?
|
|
||||||
# self[:markup_value] = (eval(var) rescue {})
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
|
|
||||||
def option_list
|
def option_list
|
||||||
if self_defined_markup_options?
|
if self_defined_markup_options?
|
||||||
#Class need to have corresponding field and value agent
|
#Class need to have corresponding field and value agent
|
||||||
|
@ -71,8 +55,6 @@ class AttributeField
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def markup_options=(var)
|
def markup_options=(var)
|
||||||
self[:markup_options] = (eval(var) rescue {})
|
self[:markup_options] = (eval(var) rescue {})
|
||||||
end
|
end
|
||||||
|
@ -99,92 +81,18 @@ class AttributeField
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
# def title_translations
|
|
||||||
# if locale
|
|
||||||
# return self.locale_title_translations
|
|
||||||
# else
|
|
||||||
# return self[:neutral_title] #Hash[VALID_LOCALES.map{|d| [d,neutral_title]}]
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
|
|
||||||
# def title_translations=(var)
|
|
||||||
# if locale
|
|
||||||
# self.locale_title_translations = var
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
|
|
||||||
# def title
|
|
||||||
# if locale
|
|
||||||
# return self.locale_title
|
|
||||||
# else
|
|
||||||
# return self.neutral_title
|
|
||||||
# end
|
|
||||||
# end
|
|
||||||
|
|
||||||
# def check_title
|
|
||||||
# if locale
|
|
||||||
# self.locale_title_translations = self[:temp_title]
|
|
||||||
# else
|
|
||||||
# self.neutral_title = self[:temp_title]
|
|
||||||
# end
|
|
||||||
# self.unset("temp_title")
|
|
||||||
# end
|
|
||||||
|
|
||||||
# def title=(var)
|
|
||||||
# self["temp_title"] = var
|
|
||||||
# end
|
|
||||||
|
|
||||||
# # Convert the string list_options into an array
|
|
||||||
# def select_list_options=(var)
|
|
||||||
# self.list_options = var.gsub(' ', '').split(',')
|
|
||||||
# end
|
|
||||||
|
|
||||||
# # Convert the array list_options into a string
|
|
||||||
# def select_list_options
|
|
||||||
# self.list_options.to_a.join(', ')
|
|
||||||
# end
|
|
||||||
|
|
||||||
def add_more_convert(opt)
|
|
||||||
case opt
|
|
||||||
when :to_add_more
|
|
||||||
self.attribute_values.each do |av|
|
|
||||||
VALID_LOCALES.each do |loc|
|
|
||||||
splited_str = av[loc].split(",") rescue []
|
|
||||||
av["val"] = [] if av["val"].nil?
|
|
||||||
splited_str.each_with_index{|value,index| av["val"][index] = av["val"][index].nil? ? {loc=>value} : av["val"][index].merge(loc=>value) }
|
|
||||||
# av[loc] = Hash[splited_str.each_with_index.map{|t,index| [index.to_s,t]}] rescue {"0"=>av[loc].to_s}
|
|
||||||
end
|
|
||||||
av.save
|
|
||||||
end #of self.attribute_values.each
|
|
||||||
when :to_no_add_more
|
|
||||||
self.attribute_values.each do |av|
|
|
||||||
VALID_LOCALES.each do |loc|
|
|
||||||
if av["val"].kind_of? Array
|
|
||||||
av[loc] = av["val"].collect{|t| t[loc]}.join(",")
|
|
||||||
else
|
|
||||||
av[loc] = av["val"]
|
|
||||||
end
|
|
||||||
# av[loc] = av["val"].invert.keys.join(",") rescue av["val"]
|
|
||||||
# av.save(:validate => false)
|
|
||||||
end
|
|
||||||
av.unset("val")
|
|
||||||
av.save
|
|
||||||
end #of self.attribute_values.each
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def typeA=(var)
|
def typeA=(var)
|
||||||
if self["typeA"]["add_more"] != var["add_more"]
|
check_add_more_convert(var)
|
||||||
case var["add_more"]
|
check_cross_lang_convert(var,"typeA")
|
||||||
when "true" #from no-add_more to add_more
|
|
||||||
add_more_convert(:to_add_more)
|
|
||||||
else #from add_more to no-add_more
|
|
||||||
add_more_convert(:to_no_add_more)
|
|
||||||
end # of case
|
|
||||||
end # of if
|
|
||||||
self["typeA"] = var
|
self["typeA"] = var
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def typeD=(var)
|
||||||
|
check_cross_lang_convert(var,"typeD")
|
||||||
|
self["typeD"] = var
|
||||||
|
end
|
||||||
|
|
||||||
def is_built_in?
|
def is_built_in?
|
||||||
self.built_in
|
self.built_in
|
||||||
end
|
end
|
||||||
|
@ -195,7 +103,82 @@ class AttributeField
|
||||||
|
|
||||||
protected
|
protected
|
||||||
def check_option_list
|
def check_option_list
|
||||||
self[:option_list] = self[panel]["option_list"]
|
self[:option_list] = self[panel]["option_list"] rescue nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_more_convert(opt)
|
||||||
|
case opt
|
||||||
|
when :to_add_more
|
||||||
|
self.attribute_values.each do |av|
|
||||||
|
VALID_LOCALES.each do |loc|
|
||||||
|
splited_str = av[loc].split(",") rescue []
|
||||||
|
av["val"] = [] if av["val"].nil?
|
||||||
|
splited_str.each_with_index{|value,index| av["val"][index] = av["val"][index].nil? ? {loc=>value} : av["val"][index].merge(loc=>value) }
|
||||||
|
end
|
||||||
|
av.unset_all_lang_values
|
||||||
|
av.save
|
||||||
|
end #of self.attribute_values.each
|
||||||
|
when :to_no_add_more
|
||||||
|
self.attribute_values.each do |av|
|
||||||
|
VALID_LOCALES.each do |loc|
|
||||||
|
if av["val"].kind_of? Array
|
||||||
|
av[loc] = av["val"].collect{|t| t[loc]}.join(",")
|
||||||
|
else
|
||||||
|
av[loc] = av["val"]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
av.unset("val")
|
||||||
|
av.save
|
||||||
|
end #of self.attribute_values.each
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def cross_lang_convert(opt)
|
||||||
|
case opt
|
||||||
|
when :to_cross_lang
|
||||||
|
self.attribute_values.each do |av|
|
||||||
|
if add_more
|
||||||
|
av["val"] = av["val"].collect{|t| t.invert.keys.join(",")}
|
||||||
|
else
|
||||||
|
av["val"] = VALID_LOCALES.collect{|t| av[t]}.join(",")
|
||||||
|
av.unset_all_lang_values
|
||||||
|
end
|
||||||
|
av.save
|
||||||
|
end #of self.attribute_values.each
|
||||||
|
when :to_no_cross_lang
|
||||||
|
default_locale = I18n.default_locale.to_s
|
||||||
|
self.attribute_values.each do |av|
|
||||||
|
if add_more
|
||||||
|
av["val"] = av["val"].collect{|t| {default_locale => t} }
|
||||||
|
else
|
||||||
|
av[default_locale] = av["val"]
|
||||||
|
av.unset("val")
|
||||||
|
end
|
||||||
|
av.save
|
||||||
|
end #of self.attribute_values.each
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_add_more_convert(var)
|
||||||
|
if self["typeA"]["add_more"] != var["add_more"]
|
||||||
|
case var["add_more"]
|
||||||
|
when "true" #from no-add_more to add_more
|
||||||
|
add_more_convert(:to_add_more)
|
||||||
|
else #from add_more to no-add_more
|
||||||
|
add_more_convert(:to_no_add_more)
|
||||||
|
end # of case
|
||||||
|
end # of if
|
||||||
|
end
|
||||||
|
|
||||||
|
def check_cross_lang_convert(var,field)
|
||||||
|
if self[field]["cross_lang"] != var["cross_lang"]
|
||||||
|
case var["cross_lang"]
|
||||||
|
when "true" #from no-add_more to add_more
|
||||||
|
cross_lang_convert(:to_cross_lang)
|
||||||
|
else #from add_more to no-add_more
|
||||||
|
cross_lang_convert(:to_no_cross_lang)
|
||||||
|
end # of case
|
||||||
|
end # of if
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -13,34 +13,12 @@ class AttributeValue
|
||||||
# NO_MULTI_TAG = ["select","date","radio_button","checkbox","date_durnation"]
|
# NO_MULTI_TAG = ["select","date","radio_button","checkbox","date_durnation"]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def add_more_counter
|
def add_more_counter
|
||||||
index_max = self["val"].count rescue 0
|
index_max = self["val"].count rescue 0
|
||||||
index_max == 0 ? 1 : index_max
|
index_max == 0 ? 1 : index_max
|
||||||
end
|
end
|
||||||
|
|
||||||
def data_proc
|
|
||||||
unless self[:temp_data].nil?
|
|
||||||
case self.attribute_field.markup
|
|
||||||
when 'text_field','text_area'
|
|
||||||
if self.attribute_field.add_more
|
|
||||||
self["val"] = self["temp_data"]
|
|
||||||
else # if not add_more
|
|
||||||
self[:temp_data].each{|key,val|
|
|
||||||
self[key] = val
|
|
||||||
} if(!self.attribute_field.get_data[:cross_lang])
|
|
||||||
self["val"] = self[:temp_data] if(self.attribute_field.get_data[:cross_lang])
|
|
||||||
end # of self.attribute_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.attribute_field.markup
|
|
||||||
end # of self[:temp_data].nil?
|
|
||||||
self.unset('temp_data')
|
|
||||||
self.unset('temp')
|
|
||||||
end #of data_proc
|
|
||||||
|
|
||||||
def value(index = nil)
|
def value(index = nil)
|
||||||
result = case self.attribute_field.markup
|
result = case self.attribute_field.markup
|
||||||
when 'text_field','text_area'
|
when 'text_field','text_area'
|
||||||
|
@ -48,7 +26,7 @@ class AttributeValue
|
||||||
index.nil? ? self["val"] : self["val"][index]
|
index.nil? ? self["val"] : self["val"][index]
|
||||||
# self.attribute_field.get_data[:cross_lang] ? Hash[VALID_LOCALES.collect{|lang| [lang,self[lang.to_sym]]}] : self["val"] #if !self.attribute_field.get_data[:cross_lang]
|
# self.attribute_field.get_data[:cross_lang] ? Hash[VALID_LOCALES.collect{|lang| [lang,self[lang.to_sym]]}] : self["val"] #if !self.attribute_field.get_data[:cross_lang]
|
||||||
else
|
else
|
||||||
self.attribute_field.get_data[:cross_lang] ? self["val"] : Hash[VALID_LOCALES.collect{|lang| [lang,self[lang.to_sym]]}]
|
self.attribute_field.get_data["cross_lang"] =="true" ? self["val"] : Hash[VALID_LOCALES.collect{|lang| [lang,self[lang.to_sym]]}]
|
||||||
end
|
end
|
||||||
when 'select','date','radio_button'
|
when 'select','date','radio_button'
|
||||||
self["val"]
|
self["val"]
|
||||||
|
@ -62,17 +40,6 @@ class AttributeValue
|
||||||
self[:temp_data] = value
|
self[:temp_data] = value
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_key
|
|
||||||
self.key = attribute_field.key
|
|
||||||
end
|
|
||||||
|
|
||||||
def method_missing(*field)
|
|
||||||
if field.size < 1
|
|
||||||
self[field[0]]
|
|
||||||
else
|
|
||||||
self[(field[0].to_s.delete "=")] = field[1]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def get_value_by_locale(locale,add_more_index=nil)
|
def get_value_by_locale(locale,add_more_index=nil)
|
||||||
|
|
||||||
|
@ -106,22 +73,51 @@ class AttributeValue
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# def get_values
|
|
||||||
# unless ['select','checkbox','radio_button'].include?(self.attribute_field.markup )
|
protected
|
||||||
# if self.attribute_field.locale && LIST[:markups][self.attribute_field.markup]["muti_lang_input_supprt"]
|
|
||||||
# return Hash[VALID_LOCALES.collect{|lang| [lang,get_value_by_locale(lang.to_sym)]}]
|
def unset_all_lang_values
|
||||||
# else
|
VALID_LOCALES.each{|t| self.unset t}
|
||||||
# return get_value_by_locale("")
|
end
|
||||||
# end
|
|
||||||
# else
|
def data_proc
|
||||||
# if self.attribute_field.markup == "select"
|
unless self[:temp_data].nil?
|
||||||
# self[:value]
|
case self.attribute_field.markup
|
||||||
# else
|
when 'text_field','text_area'
|
||||||
# self[:value].keys rescue self[:value]
|
if self.attribute_field.add_more
|
||||||
# end
|
self["val"] = self["temp_data"]
|
||||||
# end
|
else # if not add_more
|
||||||
# end
|
if self.attribute_field.can_muti_lang_input?
|
||||||
protected
|
self[:temp_data].each do |key,val|
|
||||||
|
self[key] = val
|
||||||
|
end if(!self.attribute_field.get_data[:cross_lang])
|
||||||
|
else
|
||||||
|
self["val"] = self[:temp_data]
|
||||||
|
end
|
||||||
|
end # of self.attribute_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.attribute_field.markup
|
||||||
|
end # of self[:temp_data].nil?
|
||||||
|
self.unset('temp_data')
|
||||||
|
self.unset('temp')
|
||||||
|
end #of data_proc
|
||||||
|
|
||||||
|
def check_key
|
||||||
|
self.key = attribute_field.key
|
||||||
|
end
|
||||||
|
|
||||||
|
def method_missing(*field)
|
||||||
|
if field.size < 1
|
||||||
|
self[field[0]]
|
||||||
|
else
|
||||||
|
self[(field[0].to_s.delete "=")] = field[1]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
def get_date
|
def get_date
|
||||||
Date.new(self[:val]["(1i)"].to_i,self[:val]["(2i)"].to_i,self[:val]["(3i)"].to_i) rescue nil
|
Date.new(self[:val]["(1i)"].to_i,self[:val]["(2i)"].to_i,self[:val]["(3i)"].to_i) rescue nil
|
||||||
|
|
|
@ -17,53 +17,3 @@
|
||||||
|
|
||||||
<%= render :partial=>"infos"%>
|
<%= render :partial=>"infos"%>
|
||||||
<%= render :partial=>"roles"%>
|
<%= render :partial=>"roles"%>
|
||||||
|
|
||||||
<% content_for :page_specific_javascript do -%>
|
|
||||||
<script>
|
|
||||||
var CloneTarget ;
|
|
||||||
var NewNode;
|
|
||||||
|
|
||||||
$(document).ready(function(){
|
|
||||||
function checkMultipleInput() {
|
|
||||||
$(".multipleInput").each(function(i) {
|
|
||||||
$(this).find('.tabbable').length==1 ? $(this).addClass("plural") : $(this).removeClass("plural")
|
|
||||||
});
|
|
||||||
}
|
|
||||||
function removeInput(){
|
|
||||||
$(".removeInput").live('click',function (){
|
|
||||||
$(this).parents(".tabbable").remove();
|
|
||||||
checkMultipleInput();
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
checkMultipleInput();
|
|
||||||
removeInput();
|
|
||||||
|
|
||||||
$(".help-block a").live('click',function (){
|
|
||||||
|
|
||||||
CloneTarget = $(this).parents(".controls").find(".tabbable:last");
|
|
||||||
NewNode = CloneTarget.clone();
|
|
||||||
var index;
|
|
||||||
NewNode.find("input").each(function(k,v){
|
|
||||||
index = CloneTarget.parents("div.control-group").find(".list_count").val();
|
|
||||||
|
|
||||||
field_name = CloneTarget.parents("div.control-group").find(".field_name").val();
|
|
||||||
ori_str = $(v).attr("name").replace(field_name,"");
|
|
||||||
lang = ori_str.match(/\[\D*\]/);
|
|
||||||
new_field_name = (field_name+"[" + (parseInt(index)+1) + "]" + lang);
|
|
||||||
$(v).attr("name",new_field_name);
|
|
||||||
$(v).val("");
|
|
||||||
})
|
|
||||||
$(this).parents("div.control-group").find(".list_count").val(parseInt(index)+1)
|
|
||||||
$(this).parents(".controls").find(".tabbable:last").after(NewNode);
|
|
||||||
|
|
||||||
removeInput();
|
|
||||||
// checkMultipleInput();
|
|
||||||
return false;
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</script>
|
|
||||||
<% end -%>
|
|
|
@ -11,6 +11,9 @@
|
||||||
<%= javascript_include_tag "/static/jquery.cycle.all.latest.js" %>
|
<%= javascript_include_tag "/static/jquery.cycle.all.latest.js" %>
|
||||||
<%= javascript_include_tag "inc/modal-preview" %>
|
<%= javascript_include_tag "inc/modal-preview" %>
|
||||||
<%= javascript_include_tag "lib/contenteditable" %>
|
<%= javascript_include_tag "lib/contenteditable" %>
|
||||||
|
<%= javascript_include_tag "inc/ploy_input_field" %>
|
||||||
|
<%= javascript_include_tag "inc/input_module" %>
|
||||||
|
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
<div class="modal hide fade" id="address-edit" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" style="display: none; ">
|
|
||||||
<div class="modal-header">
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
||||||
<h3 id="myModalLabel">Modal header</h3>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
<p>One fine body…</p>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
|
|
||||||
<button class="btn btn-primary">Save changes</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
<div class="modal hide fade address-edit <%= btn_class %>" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
|
||||||
|
<div class="modal-header">
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
||||||
|
<h3 id="myModalLabel"><%= (field_name rescue nil) || t("address_modal.default_title") %></h3>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="tabbable">
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
<% VALID_LOCALES.each do |locale|%>
|
||||||
|
<% active = (locale == VALID_LOCALES.first ? "active" : nil ) %>
|
||||||
|
<%= content_tag :i,:class=>active do%>
|
||||||
|
<%= link_to t("langs.#{locale}"),".#{btn_class}.address_modal.#{locale}",:data=>{:toggle=>"tab"}%>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
<div class="tab-content">
|
||||||
|
<% VALID_LOCALES.each do |locale|%>
|
||||||
|
<!-- start of lang tab context -->
|
||||||
|
<% active = (locale == VALID_LOCALES.first ? "active" : "" ) %>
|
||||||
|
<div class="tab-pane <%= active %> fade in <%= "#{btn_class} address_modal #{locale}" %>" for="<%= locale %>">
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label" for="street_address"><%= t("address_modal.street_address") %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= text_area_tag("#{btn_class}_street_address_#{locale}",nil,:rows=>3) %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label" for="city"><%= t("address_modal.city") %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= text_field_tag("#{btn_class}_city_#{locale}") %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label" for="counties"><%= t("address_modal.county") %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= text_field_tag("#{btn_class}_county_#{locale}") %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label" for="zip"><%= t("address_modal.zip") %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= text_field_tag("#{btn_class}_zip_#{locale}",nil,:class=>"input-mini") %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="control-group">
|
||||||
|
<label class="control-label" for="country"><%= t("address_modal.country") %></label>
|
||||||
|
<div class="controls">
|
||||||
|
<%= text_field_tag("#{btn_class}_country_#{locale}") %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- end of tab context -->
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button class="btn" data-dismiss="modal" aria-hidden="true"><%=t("modal.close")%></button>
|
||||||
|
<button href="" class="btn btn-primary bt-save" data-dismiss="modal" aria-hidden="true"><%=t("modal.save_and_close")%></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -33,9 +33,9 @@ markups:
|
||||||
# date_durnation:
|
# date_durnation:
|
||||||
# muti_lang_input_supprt: false
|
# muti_lang_input_supprt: false
|
||||||
# ext_support: false
|
# ext_support: false
|
||||||
# address:
|
address:
|
||||||
# muti_lang_input_supprt: true
|
muti_lang_input_supprt: true
|
||||||
# ext_support: true
|
ext_support: true
|
||||||
|
|
||||||
|
|
||||||
public_r_tags:
|
public_r_tags:
|
||||||
|
|
|
@ -158,8 +158,19 @@ zh_tw:
|
||||||
user: 使用者列表
|
user: 使用者列表
|
||||||
list_: 列表
|
list_: 列表
|
||||||
list_lower: 列表
|
list_lower: 列表
|
||||||
|
address_modal:
|
||||||
|
default_title: 地址
|
||||||
|
street_address: 街道地址
|
||||||
|
city: 城市
|
||||||
|
county: 縣市
|
||||||
|
zip: 郵遞區號
|
||||||
|
country: 國家/地區
|
||||||
|
langs:
|
||||||
|
zh_tw: 中文
|
||||||
|
en: 英文
|
||||||
lists:
|
lists:
|
||||||
markups:
|
markups:
|
||||||
|
address: 地址欄位
|
||||||
text_field: 文字輸入框
|
text_field: 文字輸入框
|
||||||
select: 下拉選單
|
select: 下拉選單
|
||||||
date: 日期
|
date: 日期
|
||||||
|
|
|
@ -1,4 +1,11 @@
|
||||||
module OrbitBasis
|
module OrbitBasis
|
||||||
|
module RenderAnywhere
|
||||||
|
def render_anywhere(partial,opts)
|
||||||
|
view = ActionView::Base.new(Orbit::Application.config.paths["app/views"].first)
|
||||||
|
view.extend ApplicationHelper
|
||||||
|
view.render(:partial => partial,:locals=>opts)
|
||||||
|
end
|
||||||
|
end
|
||||||
module BaseModel
|
module BaseModel
|
||||||
extend ActiveSupport::Concern
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue