ad_db_select_widget { -size 0 -multiple 0 -default {} -option_list {} -blank_if_no_db 0 -hidden_if_one_db 0 } db sql nameWhat it does:
given a db handle and sql this generates a select group. If there is only one value it returns the text and a hidden variable setting that value. The first selected column should contain the optionlist items. The second selected column should contain the optionlist values.Defined in: /web/philip/packages/acs-core/widgets-procs.tcloption_list is a list in the same format (i.e. {{str val} {str2 val2}...}) which is prepended to the list
if db is null then the list is constructed from option_list only.
if there is only one item the select is not generated and the value is passed in hidden form variable.
if -multiple is given the a multi select is returned.
if -blank_if_no_db set then do not return a select widget unless there are rows from the database
Source code:
arg_parser_for_ad_db_select_widget $args
set retval {}
set count 0
set dbcount 0
if {![empty_string_p $option_list]} {
foreach opt $option_list {
incr count
set item [lindex $opt 1]
set value [lindex $opt 0]
if { (!$multiple && [string compare $value $default] == 0)
|| ($multiple && [lsearch -exact $default $value] > -1)} {
append retval "<option SELECTED value=\"$value\">$item\n"
} else {
append retval "<option value=\"$value\">$item\n"
}
}
}
if { $blank_if_no_db} {
set count 0
}
if {! [empty_string_p $db]} {
set selection [ns_db select $db $sql]
while { [ns_db getrow $db $selection] } {
incr count
incr dbcount
set item [ns_set value $selection 0]
set value [ns_set value $selection 1]
if { (!$multiple && [string compare $value $default] == 0)
|| ($multiple && [lsearch -exact $default $value] > -1)} {
append retval "<option SELECTED value=\"$value\">$item\n"
} else {
append retval "<option value=\"$value\">$item\n"
}
}
}
if { $count == 0 } {
if {![empty_string_p $default]} {
return "<input type=hidden value=\"[philg_quote_double_quotes $default]\" name=$name>\n"
} else {
return {}
}
} elseif { $count == 1 || ($dbcount == 1 && $hidden_if_one_db) } {
return "$item<input type=hidden value=\"[philg_quote_double_quotes $value]\" name=$name>\n"
} else {
set select "<select name=$name"
if {$size != 0} {
append select " size=$size"
}
if {$multiple} {
append select " multiple"
}
return "$select>\n$retval</select>"
}