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
 | 
				
			||||||
 | 
					 | 
				
			||||||
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
 | 
					  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,23 +73,52 @@ class AttributeValue
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # def get_values
 | 
					
 | 
				
			||||||
  #   unless ['select','checkbox','radio_button'].include?(self.attribute_field.markup )
 | 
					 | 
				
			||||||
  #     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)]}]
 | 
					 | 
				
			||||||
  #     else
 | 
					 | 
				
			||||||
  #         return get_value_by_locale("")
 | 
					 | 
				
			||||||
  #     end
 | 
					 | 
				
			||||||
  #   else
 | 
					 | 
				
			||||||
  #     if self.attribute_field.markup == "select"
 | 
					 | 
				
			||||||
  #       self[:value]  
 | 
					 | 
				
			||||||
  #     else
 | 
					 | 
				
			||||||
  #       self[:value].keys rescue self[:value]
 | 
					 | 
				
			||||||
  #     end
 | 
					 | 
				
			||||||
  #   end
 | 
					 | 
				
			||||||
  # end
 | 
					 | 
				
			||||||
protected
 | 
					protected
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					def unset_all_lang_values
 | 
				
			||||||
 | 
					    VALID_LOCALES.each{|t| self.unset t}
 | 
				
			||||||
 | 
					  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
 | 
				
			||||||
 | 
					            if self.attribute_field.can_muti_lang_input?
 | 
				
			||||||
 | 
					                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
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in New Issue