def append_to_response( response, context )
take_value(:list)
take_value(:selections)
take_value(:selected_values)
take_bool(:escape)
take_bool(:multiple)
take_bool(:enabled)
selattrs = { :name => name_value(context),
:multiple => @values[:multiple], :disabled => !@values[:enabled] }
selattrs.update(optional_attributes())
seltag = HTMLTag.select(selattrs, other_attribute())
optags = []
options = values_from_request(context.request, context)
if @values[:list] then
@values[:list].each_with_index do |item, index|
set_value(:item, item)
take_value(:value)
take_value(:display)
attrs = {}
if (@values[:selections] and @values[:selections].include?(item)) or \
(options and
(options.include?(@values[:value].to_s) or \
options.include?(index.to_s))) then
attrs[:selected] = true
end
if @values[:value] then
attrs[:value] = escaped_string(@values[:value], @values[:escape])
else
attrs[:value] = index
end
display = @values[:display] || item.to_s
content = escaped_string(display, @values[:escape])
optags << HTMLTag.option(attrs, '', content)
end
end
ask(:browser_will_generate_tags) do |d|
seltag, optags = d.browser_will_generate_tags(seltag, optags) \
|| seltag, optags
end
response.content << seltag.open_tag
response.content << "\n"
optags.each do |tag|
response.content << tag.container_tag
response.content << "\n"
end
response.content << seltag.close_tag
end