Files
componentowl-rails-archive/app/helpers/upgrade_helper.rb

78 lines
2.4 KiB
Ruby

module UpgradeHelper
def pro?
!params[:pro].nil?
end
class SurveyFormBuilder < ActionView::Helpers::FormBuilder
def question(text)
inc_questions
@template.content_tag(:label, text) + @template.hidden_field_tag(tag_name("question"), text)
end
def answer(type, *args)
options = args.extract_options!
value = options.delete(:value) || ""
content = []
case type
when :text_field
add_default_name_and_id(options)
content << @template.text_field_tag(options.delete(:name), value, options)
when :text_area
add_default_name_and_id(options)
content << @template.text_area_tag(options.delete(:name), value, options)
when :check_box
[args.first].flatten.each do |value|
add_default_name_and_id_for_value(value, options)
content << [@template.check_box_tag(options.delete(:name), value, false, options), @template.label_tag(options[:id], value)].join(" ")
end
when :radio_button
[args.first].flatten.each do |value|
add_default_name_and_id_for_value(value, options)
content << [@template.radio_button_tag(options.delete(:name), value, false, options), @template.label_tag(options[:id], value)].join(" ")
end
when :select, :combo
add_default_name_and_id(options)
options[:class] = [options[:class], "combo"].compact.join(" ") if type == :combo
content << @template.select_tag(options.delete(:name), @template.options_for_select(args.first, options.delete(:selected)), options)
when :combo
end
content.join("")
end
private
def add_default_name_and_id(options)
options[:name] = tag_name("answer", :multiple => true)
options[:id] = tag_id("answer")
end
def add_default_name_and_id_for_value(value, options)
pretty_tag_value = value.to_s.gsub(/\s/, "_").gsub(/\W/, "").downcase
add_default_name_and_id(options)
options[:id] += "_#{pretty_tag_value}"
end
def tag_name(type, options = {})
"#{@object_name}[survey][#{@questions}][#{type}]" + (options.has_key?(:multiple) ? '[]' : '')
end
def tag_id(type, value = nil)
"#{@object_name}_survey_#{@questions}_#{type}"
end
def inc_questions
if @questions
@questions = @questions + 1
else
@questions = 1
end
end
end
end