def build_query(buttons = [])
query = []
(fields + checkboxes).sort.each do |f|
case f
when Form::CheckBox
if f.checked
qval = proc_query(f)
query.push(*qval)
end
when Form::Field
qval = proc_query(f)
query.push(*qval)
end
end
radio_groups = {}
radiobuttons.each do |f|
fname = from_native_charset(f.name)
radio_groups[fname] ||= []
radio_groups[fname] << f
end
radio_groups.each_value do |g|
checked = g.select {|f| f.checked}
if checked.size == 1
f = checked.first
qval = proc_query(f)
query.push(*qval)
elsif checked.size > 1
raise "multiple radiobuttons are checked in the same group!"
end
end
@clicked_buttons.each { |b|
qval = proc_query(b)
query.push(*qval)
}
query
end