151 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			151 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| # require ActionView::Helpers::FormTagHelper
 | |
| 
 | |
| module AttributeFieldHelper
 | |
|   include ActionView::Helpers::FormTagHelper
 | |
|   include ActionView::Helpers::FormOptionsHelper
 | |
|   include ActionView::Helpers::DateHelper
 | |
|   include ActionView::Helpers::TagHelper
 | |
| 
 | |
|   def block_helper(user,index)
 | |
|     @index = index
 | |
|     @user = user
 | |
|     @attribute_value = @user.get_value_from_field_id(id) 
 | |
|     @new_attribute = @attribute_value.nil?  
 | |
|     @attribute_value = @attribute_value || @user.attribute_values.build(attribute_field_id: id)
 | |
|     @prefiled_value = @attribute_value.get_values
 | |
|     return instance_eval("render_#{markup}") #rescue ""
 | |
|   end
 | |
| 
 | |
|   def render_text_area
 | |
|     result = ""
 | |
|     result << label
 | |
|     if self.locale?
 | |
|       @prefiled_value.each do |key,value|
 | |
|         result << controls_wrapper{text_area_tag("#{get_field_name_base}[#{key.to_s}]",  value, {})}
 | |
|       end
 | |
|     else
 | |
|       value = @prefiled_value
 | |
|       result << controls_wrapper{text_area_tag(get_field_name_base,  value, {})}
 | |
|     end
 | |
|     result << end_block
 | |
|     result.html_safe 
 | |
|   end
 | |
| 
 | |
|   def render_radio_button
 | |
|     result = ""
 | |
|     result << label
 | |
|     markup_value.each do |key,value|
 | |
|       result <<  controls_wrapper{label_tag(key,radio_button_tag(get_field_name_base+"[#{key}]", value[I18n.locale.to_s],  (@prefiled_value==value ? true : false), {})+value[I18n.locale.to_s],:class=>"control-label")}
 | |
|     end
 | |
|     result << end_block
 | |
|     result.html_safe
 | |
|   end
 | |
| 
 | |
|   def render_checkbox
 | |
|     # label+ "" + end_block
 | |
|     # check_box_tag(name, value = "1", checked = false, options = {})
 | |
| 
 | |
|     result = ""
 | |
|     result << label
 | |
|     markup_value.each do |key,value|
 | |
|       result <<  controls_wrapper{label_tag(key,check_box_tag(get_field_name_base+"[#{key}]", value[I18n.locale.to_s],  (@prefiled_value==value ? true : false), {})+value[I18n.locale.to_s],:class=>"control-label")}
 | |
|     end
 | |
|     result << end_block
 | |
|     result.html_safe
 | |
| 
 | |
|   end
 | |
| 
 | |
|   def render_date_durnation
 | |
|     control_group_wrapper do 
 | |
|       if @new_attribute
 | |
|         @prefiled_value = {}
 | |
|       end
 | |
|       label+controls_wrapper{date_select(get_field_name_base+"[value][from]",@prefiled_value["from"]) +date_select(get_field_name_base+"[value][end]",@prefiled_value["end"])} + end_block
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def render_text_field_ext
 | |
|     result = ""
 | |
|     result << label
 | |
|     if self.locale?
 | |
|       @prefiled_value.each do |key,value|
 | |
|         result << controls_wrapper{text_field_tag("#{get_field_name_base}[#{key.to_s}]",  value, {})}
 | |
|       end
 | |
|     else
 | |
|       value = @prefiled_value
 | |
|       result << controls_wrapper{text_field_tag(get_field_name_base,  value, {})}
 | |
|     end
 | |
|     result << end_block
 | |
|     result.html_safe 
 | |
|   end
 | |
| 
 | |
| 
 | |
|   def render_date
 | |
|     label+controls_wrapper{date_select(get_field_name_base+"[value]",@prefiled_value)} + end_block
 | |
|   end
 | |
| 
 | |
|   def render_select
 | |
|     label+controls_wrapper{select_tag( get_field_name_base+"[value]",options_for_select(markup_value.collect{|p| [p[1][I18n.locale.to_s],p[0]]},@prefiled_value))} + end_block
 | |
|   end
 | |
| 
 | |
|   def render_text_field
 | |
|     result = ""
 | |
|     result << label
 | |
|     if self.locale?
 | |
|       @prefiled_value.each do |key,value|
 | |
|         result << controls_wrapper{text_field_tag("#{get_field_name_base}[#{key.to_s}]",  value, {})}
 | |
|       end
 | |
|     else
 | |
|       value = @prefiled_value
 | |
|       result << controls_wrapper{text_field_tag(get_field_name_base,  value, {})}
 | |
|     end
 | |
|     result << end_block
 | |
|     result.html_safe 
 | |
|   end
 | |
| 
 | |
|   def render_email
 | |
|     label+controls_wrapper{email_field_tag(get_field_name_base, value,  {})}+ end_block
 | |
|   end
 | |
| 
 | |
|   def render_addr
 | |
|     label+controls_wrapper{text_field_tag(get_field_name_base, value,  {})} + end_block
 | |
|   end
 | |
| 
 | |
| protected
 | |
| 
 | |
|   def controls_wrapper(&block)
 | |
|     result = "<div class='controls'>"
 | |
|     result << yield
 | |
|     result << "</div>"
 | |
|     result.html_safe
 | |
|   end
 | |
| 
 | |
|   def control_group_wrapper(&block)
 | |
|     result = "<div class='control-group'>"
 | |
|     result << yield
 | |
|     result << "</div>"
 | |
|     result.html_safe
 | |
|   end
 | |
| 
 | |
|   def end_block
 | |
|     if @new_attribute
 | |
|       hidden_field_tag(get_field_name_base+"[attribute_field_id]",id)
 | |
|     else
 | |
|       hidden_field_tag(get_field_name_base+"[id]",@attribute_value.id)
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def get_field_name_base
 | |
|     # "user[#{self.attribute._type.downcase.pluralize}][#{self.attribute._id.to_s}][attribute_values][#{attribute_value.id}]"
 | |
|     if @new_attribute
 | |
|       "user[new_attribute_values][#{@index}]"
 | |
|     else
 | |
|       "user[attribute_values][#{@index}]"
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def label
 | |
|     label_tag(key,title,:class=>"control-label")
 | |
|   end
 | |
| 
 | |
| end |