add attribute_value to patchfile
This commit is contained in:
		
							parent
							
								
									075022fcc4
								
							
						
					
					
						commit
						cc0b4ea32a
					
				| 
						 | 
				
			
			@ -36,7 +36,8 @@ class Filefield
 | 
			
		|||
											"member"=>{:files=>{'member_profile@rb'=>{:status=>0, :sc=>@app_path+'/updatefiles/', :dest=>@model_path},
 | 
			
		||||
														'admin/members_controller@rb'=>{:status=>0, :sc=>@app_path+'/updatefiles/', :dest=>@controller_path},
 | 
			
		||||
														'members_controller@rb'=>{:status=>0, :sc=>@app_path+'/updatefiles/', :dest=>@controller_path},
 | 
			
		||||
														'_user_basic_passwd@html@erb'=>{:status=>0, :sc=>@app_path+'/updatefiles/admin/', :dest=>@views_path+'admin/members/'}
 | 
			
		||||
														'_user_basic_passwd@html@erb'=>{:status=>0, :sc=>@app_path+'/updatefiles/admin/', :dest=>@views_path+'admin/members/'},
 | 
			
		||||
														'attribute_value@erb'=>{:status=>0, :sc=>@app_path+'/updatefiles/', :dest=>@model_path}
 | 
			
		||||
														},:status=>0} ,
 | 
			
		||||
											"accessibility"=>{:files=>{'back_end@html@erb'=>{:status=>0, :sc=>@app_path+'/updatefiles/accessibility/', :dest=>@views_path+'layouts/'},
 | 
			
		||||
																'_form@html@erb'=>{:status=>0, :sc=>@app_path+'/updatefiles/accessibility/', :dest=>@views_path+'page_parts/'},
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,213 @@
 | 
			
		|||
class AttributeValue
 | 
			
		||||
  include Mongoid::Document
 | 
			
		||||
  include Mongoid::Timestamps
 | 
			
		||||
  include Mongoid::Attributes::Dynamic
 | 
			
		||||
  include AttributeValuesHelper
 | 
			
		||||
 | 
			
		||||
  field :key, type: String
 | 
			
		||||
 | 
			
		||||
  belongs_to :attribute_field
 | 
			
		||||
  belongs_to :member_profile
 | 
			
		||||
 | 
			
		||||
  before_save :check_key
 | 
			
		||||
  before_save :data_proc
 | 
			
		||||
 | 
			
		||||
  def add_more_counter
 | 
			
		||||
    index_max = self["val"].count rescue 0
 | 
			
		||||
    index_max == 0 ?   1 : index_max
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def value(index = nil)
 | 
			
		||||
  	site = Site.first
 | 
			
		||||
    result = case self.attribute_field.markup
 | 
			
		||||
      when 'text_field','text_area'
 | 
			
		||||
        if self.attribute_field.add_more and (self.attribute_field.markup == "text_field")
 | 
			
		||||
          index.nil? ? self["val"] : self["val"][index]
 | 
			
		||||
        else
 | 
			
		||||
          self.attribute_field.get_data["cross_lang"] =="true" ?  self["val"] : Hash[site.valid_locales.collect{|lang|  [lang,self[lang.to_sym]]}]
 | 
			
		||||
        end
 | 
			
		||||
      when 'select','radio_button','address'
 | 
			
		||||
        self["val"]
 | 
			
		||||
      when 'date'
 | 
			
		||||
          if !self["val"].blank? and !self["val"]['(1i)'].blank?
 | 
			
		||||
            "#{self["val"]['(1i)']}/#{self["val"]['(2i)']}/#{self["val"]['(3i)']}"
 | 
			
		||||
          else
 | 
			
		||||
            self["val"]
 | 
			
		||||
          end
 | 
			
		||||
      when 'checkbox'
 | 
			
		||||
        self["val"]
 | 
			
		||||
    end #end of case self.attribute_field.markup
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def value=(value)
 | 
			
		||||
    #save everything to temp_data waiting for futher process
 | 
			
		||||
    self[:temp_data] = value
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def get_field_value
 | 
			
		||||
    if (self.attribute_field.markup.eql?("text_field") || self.attribute_field.markup.eql?("text_area"))
 | 
			
		||||
        value_gsub = self.attribute_field.get_data["cross_lang"] =="true" ? self.value.gsub("<br \/>\r\n","<br>") : self.value[I18n.locale].gsub("<br \/>\r\n","<br>")
 | 
			
		||||
        field_value = value_gsub.gsub("\r\n","<br>")
 | 
			
		||||
      elsif (self.attribute_field.markup.eql?("select") || self.attribute_field.markup.eql?("radio_button"))
 | 
			
		||||
        field_value = self.attribute_field.markup_value["#{self.value}"][I18n.locale] rescue nil
 | 
			
		||||
      elsif self.attribute_field.markup.eql?("address")
 | 
			
		||||
        field_value = rf[:address_key][I18n.locale].map{|k,v| v}.delete_if(&:blank?).join(', ')
 | 
			
		||||
      elsif self.attribute_field.markup.eql?("date")
 | 
			
		||||
        case self.attribute_field.typeC['format']
 | 
			
		||||
        when 'format1'
 | 
			
		||||
          field_value = self.value.to_date.strftime("%Y/%m/%d")
 | 
			
		||||
        when 'format2'
 | 
			
		||||
          field_value = self.value.to_date.strftime("%Y/%m/%d")
 | 
			
		||||
        when 'format3'
 | 
			
		||||
          field_value = self.value.to_date.strftime("%Y/%m")       
 | 
			
		||||
        when 'format4'
 | 
			
		||||
          field_value = self.value.to_date.strftime("%Y")  
 | 
			
		||||
        end
 | 
			
		||||
      elsif self.attribute_field.markup.eql?("checkbox")
 | 
			
		||||
        field_value = self.value.map {|v| self.attribute_field.markup_value["#{v}"][I18n.locale]}.join(', ') rescue nil
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    field_value = (field_value =~ /\A#{URI::regexp(['http', 'https'])}\z/) ? "<a href='#{field_value}' target='blank'>#{field_value}</a>" : field_value
 | 
			
		||||
    field_value = (field_value =~ /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i) ? "<a href='mailto:#{field_value}'>#{field_value}</a>" : field_value
 | 
			
		||||
 | 
			
		||||
    if !field_value.blank?
 | 
			
		||||
    {
 | 
			
		||||
      "key" => self.attribute_field.key,
 | 
			
		||||
      "title" => self.attribute_field.title,
 | 
			
		||||
      "value" => field_value,
 | 
			
		||||
      "val" => field_value = self.value
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
      {
 | 
			
		||||
        "key" => self.attribute_field.key,
 | 
			
		||||
        "title" => self.attribute_field.title,
 | 
			
		||||
        "value" => " ",
 | 
			
		||||
        "val" => field_value = self.value
 | 
			
		||||
      }
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def get_value_by_locale(locale,add_more_index=nil)
 | 
			
		||||
    case self.attribute_field.markup
 | 
			
		||||
      when "text_field"
 | 
			
		||||
        case self.attribute_field.add_more
 | 
			
		||||
          when true
 | 
			
		||||
            if self.attribute_field.locale
 | 
			
		||||
              add_more_index.nil? ? self.value.collect{|t| t[locale.to_s]}.join(",") : self.value(add_more_index)[locale]
 | 
			
		||||
            else
 | 
			
		||||
              add_more_index.nil? ? self.value.join(",") : self.value(add_more_index)
 | 
			
		||||
            end
 | 
			
		||||
            
 | 
			
		||||
          when false
 | 
			
		||||
            self.attribute_field.locale ? self[locale.to_s]  : self.value  
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
      when "select"
 | 
			
		||||
        markup_values = self.attribute_field.self_defined_markup_options? ? self.attribute_field.markup_value : self.attribute_field.markup_value
 | 
			
		||||
        markup_values[self.value][locale.to_s] rescue 'NoData'
 | 
			
		||||
 | 
			
		||||
      when "text_area"
 | 
			
		||||
        self.attribute_field.locale ? self[locale.to_s]  : self.value
 | 
			
		||||
 | 
			
		||||
      when "date"
 | 
			
		||||
        if self.attribute_field.date_is_range?
 | 
			
		||||
          get_date_by_format(:from) + ' ~ '  + get_date_by_format(:to)
 | 
			
		||||
          # self.value["from"] + ' ~ ' + self.value["to"]
 | 
			
		||||
        else
 | 
			
		||||
          get_date_by_format  
 | 
			
		||||
          # self.value
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
      when "address"
 | 
			
		||||
        self.value[locale.to_s]
 | 
			
		||||
 | 
			
		||||
      when "radio_button"
 | 
			
		||||
        markup_values = self.attribute_field.markup_value
 | 
			
		||||
        markup_values[self.value][locale.to_s]
 | 
			
		||||
 | 
			
		||||
      when "checkbox" 
 | 
			
		||||
        markup_values = self.attribute_field.markup_value
 | 
			
		||||
        self.value.collect{|key| markup_values["#{key}"][I18n.locale]}.join(",")
 | 
			
		||||
      when "date_durnation"
 | 
			
		||||
        self.value
 | 
			
		||||
 | 
			
		||||
      else
 | 
			
		||||
        self.attribute_field.locale ? self[locale.to_s]  : self.value
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def get_date(item = nil)
 | 
			
		||||
    case item
 | 
			
		||||
    when :from
 | 
			
		||||
      # data = self[:val]["from"]
 | 
			
		||||
      data = self.value["from"]
 | 
			
		||||
    when :to
 | 
			
		||||
      # data = self[:val]["to"]
 | 
			
		||||
      data = self.value["to"]
 | 
			
		||||
    when nil
 | 
			
		||||
      # data = self[:val]
 | 
			
		||||
      data = self.value
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    # Date.new(data["(1i)"].to_i,data["(2i)"].to_i,data["(3i)"].to_i) rescue nil
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def self.put_field_values(member, field_value_param, field_value_id=nil,field_value_status)
 | 
			
		||||
    if field_value_status.eql?(true)
 | 
			
		||||
      @attribute_field_value = self.find(field_value_id) rescue nil
 | 
			
		||||
      @attribute_field_value.update(field_value_param) rescue nil
 | 
			
		||||
      @attribute_field_value.save rescue nil
 | 
			
		||||
    else
 | 
			
		||||
      @attribute_field_value = member.attribute_values.build(field_value_param) rescue nil
 | 
			
		||||
      @attribute_field_value.save
 | 
			
		||||
    end
 | 
			
		||||
    return @attribute_field_value
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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 "address"
 | 
			
		||||
           self["val"] = self["temp_data"]
 | 
			
		||||
        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 = self.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
 | 
			
		||||
end
 | 
			
		||||
		Loading…
	
		Reference in New Issue