orbit-basic/app/helpers/attribute_fields_helper.rb

151 lines
4.4 KiB
Ruby

# require ActionView::Helpers::FormTagHelper
module AttributeFieldsHelper
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