Index: openacs-4/packages/acs-tcl/tcl/widgets-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/widgets-procs.tcl,v diff -u -N -r1.21 -r1.22 --- openacs-4/packages/acs-tcl/tcl/widgets-procs.tcl 18 Sep 2018 15:19:22 -0000 1.21 +++ openacs-4/packages/acs-tcl/tcl/widgets-procs.tcl 18 Sep 2018 15:21:29 -0000 1.22 @@ -4,8 +4,8 @@ @cvs-id $Id$ } -ad_proc us_state_widget { - {default ""} +ad_proc us_state_widget { + {default ""} {select_name "usps_abbrev"} } { Returns a state selection box. @@ -20,18 +20,18 @@ select state_name, abbrev from states order by state_name } { if { $default == $abbrev } { - append widget_value "$state_name\n" - } else { + append widget_value "$state_name\n" + } else { append widget_value "$state_name\n" } } append widget_value "\n" return $widget_value } -ad_proc country_widget { - {default ""} - {select_name "country_code"} +ad_proc country_widget { + {default ""} + {select_name "country_code"} {size_subtag "size='4'"} } { Returns a country selection box. @@ -40,18 +40,18 @@ set widget_value "\n" if { $default eq "" } { if { [parameter::get -parameter SomeAmericanReadersP -package_id [ad_conn subsite_id] -default 0] } { - append widget_value "Choose a Country -United States\n" - } else { - append widget_value "Choose a Country\n" - } + append widget_value "Choose a Country + United States\n" + } else { + append widget_value "Choose a Country\n" + } } db_foreach all_countries { select default_name, iso from countries order by default_name } { if { $default == $iso } { - append widget_value "$default_name\n" - } else { + append widget_value "$default_name\n" + } else { append widget_value "$default_name\n" } } @@ -60,14 +60,14 @@ } # teadams - It is usually more appropriate to use html_select_options or -# html_select_value_options. +# html_select_value_options. ad_proc ad_generic_optionlist { - items - values + items + values {default ""} } { - Use this to build select form fragments. Given a list of items and a list of values, + Use this to build select form fragments. Given a list of items and a list of values, will return the option tags with default highlighted as appropriate. } { @@ -77,13 +77,13 @@ set count 0 set return_string "" foreach value $values { - if { $default eq $value } { - append return_string "[lindex $items $count]\n" - } else { - append return_string "[lindex $items $count]\n" - } - incr count - } + if { $default eq $value } { + append return_string "[lindex $items $count]\n" + } else { + append return_string "[lindex $items $count]\n" + } + incr count + } return $return_string } @@ -107,101 +107,101 @@ # use ad_integer_optionlist instead of month_value_list proc month_value_list {} { return {1 2 3 4 5 6 7 8 9 10 11 12} -} +} ad_proc future_years_list { {num_year 10} } { Returns a list containing the next num_year years in the future. } { - set year [ns_fmttime [ns_time] %Y] + set year [ns_fmttime [ns_time] %Y] set counter 0 while {$counter < $num_year } { - incr counter - lappend year_list $year - incr year + incr counter + lappend year_list $year + incr year } return $year_list } # produces the optionlist for a range of integers -# if pad_to_two_p is 1, the option values will be +# if pad_to_two_p is 1, the option values will be # padded to 2 digites with a leading 0 ad_proc ad_integer_optionlist { - start_value - end_value - {default ""} - { pad_to_two_p 0} + start_value + end_value + {default ""} + { pad_to_two_p 0} } { - Produces an optionlist for a range of integers from start_value to end_value. - If default matches one of the options, it is selected. If pad_to_two_p is 1, + Produces an optionlist for a range of integers from start_value to end_value. + If default matches one of the options, it is selected. If pad_to_two_p is 1, the option values will be padded to 2 digits with a leading 0. } { # items is a list of the items you would like the user to select from # values is a list of corresponding option values # default is the value of the item to be selected set count 0 set return_string "" - - + + for { set x $start_value } { $x <= $end_value } { incr x } { - if { $pad_to_two_p && $x >= 0 && $x < 10 } { - set value "0$x" - } else { - set value $x - } + if { $pad_to_two_p && $x >= 0 && $x < 10 } { + set value "0$x" + } else { + set value $x + } - if { $default == $value } { - append return_string "$value\n" - } else { - append return_string "$value\n" - } + if { $default == $value } { + append return_string "$value\n" + } else { + append return_string "$value\n" + } } return $return_string -} +} ad_proc ad_dateentrywidget {column { value 0 } } { Returns form pieces for a date entry widget. A null date may be selected. } { # if you would like the default to be null, call with value= "" set NS(months) [list January February March April May June \ - July August September October November December] + July August September October November December] if { $value == 0 } { - # no default, so use today - set value [lindex [split [ns_localsqltimestamp] " "] 0] - } + # no default, so use today + set value [lindex [split [ns_localsqltimestamp] " "] 0] + } if { $value eq "" } { - set month "" - set day "" - set year "" + set month "" + set day "" + set year "" } else { - lassign [split $value "-"] year month day - # trim the day, in case we get as well a time stamp - regexp {^([0-9]+) } $day _ day + lassign [split $value "-"] year month day + # trim the day, in case we get as well a time stamp + regexp {^([0-9]+) } $day _ day } set output "\n" # take care of cases like 09 for month regsub "^0" $month "" month for {set i 0} {$i < 12} {incr i} { - if { $month ne "" && $i == $month - 1 } { - append output "[lindex $NS(months) $i]\n" - } else { - append output "[lindex $NS(months) $i]\n" - } + if { $month ne "" && $i == $month - 1 } { + append output "[lindex $NS(months) $i]\n" + } else { + append output "[lindex $NS(months) $i]\n" + } } append output [subst { - }] + }] - return $output + return $output } ad_proc ad_db_select_widget { @@ -212,38 +212,38 @@ {-blank_if_no_db 0} {-hidden_if_one_db 0} {-bind {}} - statement_name - sql_qry - name -} { + statement_name + sql_qry + name +} { given a sql query 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. + second selected column should contain the optionlist values. option_list is a list in the same format (i.e. {{str val} {str2 val2}...}) which is prepended to the list if sql_qry 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 then a multi select is returned. - if -blank_if_no_db is true, then do not return a select widget unless + if -blank_if_no_db is true, then do not return a select widget unless there are rows from the database -} { +} { set retval {} set count 0 set dbcount 0 if {$option_list ne ""} { - foreach opt $option_list { + foreach opt $option_list { incr count - lassign $opt value item - if { (!$multiple && $value eq $default ) - || ($multiple && $value in $default) - } { + lassign $opt value item + if { (!$multiple && $value eq $default ) + || ($multiple && $value in $default) + } { append retval "$item\n" } else { append retval "$item\n" @@ -256,38 +256,38 @@ } if {$sql_qry ne ""} { - set columns [ns_set create] - - db_foreach $statement_name $sql_qry -column_set selection -bind $bind { - incr count - incr dbcount - set item [ns_set value $selection 0] - set value [ns_set value $selection 1] - if { (!$multiple && $value eq $default ) - || ($multiple && $value in $default) - } { - append retval "$item\n" - } else { - append retval "$item\n" - } - } if_no_rows { - if {$default ne ""} { - return "\n" - } else { - return {} - } - } + set columns [ns_set create] + + db_foreach $statement_name $sql_qry -column_set selection -bind $bind { + incr count + incr dbcount + set item [ns_set value $selection 0] + set value [ns_set value $selection 1] + if { (!$multiple && $value eq $default ) + || ($multiple && $value in $default) + } { + append retval "$item\n" + } else { + append retval "$item\n" + } + } if_no_rows { + if {$default ne ""} { + return "\n" + } else { + return {} + } + } } if { $count == 1 || ($dbcount == 1 && $hidden_if_one_db) } { return "$item\n" } elseif {!$count && !$dbcount && $blank_if_no_db} { - return {} - } else { + return {} + } else { set select " 255 || c2 > 255 || c3 > 255) { - element.selectedIndex = 1; - document['color_' + field].src = '/shared/1pixel.tcl?r=255&g=255&b=255'; - return; - } + var c1 = form[field + ".c1"].value; + var c2 = form[field + ".c2"].value; + var c3 = form[field + ".c3"].value; + if (c1 != parseInt(c1) || c2 != parseInt(c2) || c3 != parseInt(c3) || + c1 < 0 || c2 < 0 || c3 < 0 || c1 > 255 || c2 > 255 || c3 > 255) { + element.selectedIndex = 1; + document['color_' + field].src = '/shared/1pixel.tcl?r=255&g=255&b=255'; + return; + } - document['color_' + field].src = '/shared/1pixel.tcl?r=' + c1 + '&g=' + c2 + '&b=' + c3; + document['color_' + field].src = '/shared/1pixel.tcl?r=' + c1 + '&g=' + c2 + '&b=' + c3; - var rgb = parseInt(form[field + ".c1"].value) + "," + parseInt(form[field + ".c2"].value) + "," + parseInt(form[field + ".c3"].value); - var found = 0; - for (var i = 0; i < element.length; ++i) - if (element.options[i].value == rgb) { - element.selectedIndex = i; - found = 1; - break; + var rgb = parseInt(form[field + ".c1"].value) + "," + parseInt(form[field + ".c2"].value) + "," + parseInt(form[field + ".c3"].value); + var found = 0; + for (var i = 0; i < element.length; ++i) + if (element.options[i].value == rgb) { + element.selectedIndex = i; + found = 1; + break; + } + if (!found) + element.selectedIndex = 0; } - if (!found) - element.selectedIndex = 0; -} } -} +} -ad_proc ad_color_widget { - name - default - { use_js 0 } +ad_proc ad_color_widget { + name + default + { use_js 0 } } { Returns a color selection widget, optionally using JavaScript. Default is a string of the form '0,192,255'. } { set out {} append out [subst {\n" if { ![regexp {^([0-9]+),([0-9]+),([0-9]+)$} $default all c1 c2 c3] } { - set c1 "" - set c2 "" - set c3 "" + set c1 "" + set c2 "" + set c3 "" } foreach component { c1 c2 c3 } { - append out [subst { " + } + append out ">" } if { $use_js == 1 } { - if { $c1 eq "" } { - set c1 255 - set c2 255 - set c3 255 - } - append out [subst { - + if { $c1 eq "" } { + set c1 255 + set c2 255 + set c3 255 + } + append out [subst { + }] } append out "\n" return $out } -ad_proc ad_process_color_widgets args { - Sets variables corresponding to the color widgets named in $args. +ad_proc ad_process_color_widgets args { + Sets variables corresponding to the color widgets named in $args. } { foreach field $args { - upvar $field var - set var [ns_queryget "$field.list"] - if { $var eq "custom" } { - set var "[ns_queryget "$field.c1"],[ns_queryget "$field.c2"],[ns_queryget "$field.c3"]" - } - if { ![regexp {^([0-9]+),([0-9]+),([0-9]+)$} $var "" r g b] || $r > 255 || $g > 255 || $b > 255 } { - set var "" - } + upvar $field var + set var [ns_queryget "$field.list"] + if { $var eq "custom" } { + set var "[ns_queryget "$field.c1"],[ns_queryget "$field.c2"],[ns_queryget "$field.c3"]" + } + if { ![regexp {^([0-9]+),([0-9]+),([0-9]+)$} $var "" r g b] || $r > 255 || $g > 255 || $b > 255 } { + set var "" + } } } -ad_proc ad_color_to_hex { triplet } { - Converts a string of the form 0,192,255 to a string of the form #00C0FF. +ad_proc ad_color_to_hex { triplet } { + Converts a string of the form 0,192,255 to a string of the form #00C0FF. } { if { [regexp {^([0-9]+),([0-9]+),([0-9]+)$} $triplet all r g b] } { - return "#[format "%02x%02x%02x" $r $g $b]" + return "#[format "%02x%02x%02x" $r $g $b]" } else { - return "" + return "" } }
option_list is a list in the same format (i.e. {{str val} {str2 val2}...}) which is prepended to the list
if sql_qry 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 then a multi select is returned.
- if -blank_if_no_db is true, then do not return a select widget unless + if -blank_if_no_db is true, then do not return a select widget unless there are rows from the database -} { +} { set retval {} set count 0 set dbcount 0 if {$option_list ne ""} { - foreach opt $option_list { + foreach opt $option_list { incr count - lassign $opt value item - if { (!$multiple && $value eq $default ) - || ($multiple && $value in $default) - } { + lassign $opt value item + if { (!$multiple && $value eq $default ) + || ($multiple && $value in $default) + } { append retval "$item\n" } else { append retval "$item\n" @@ -256,38 +256,38 @@ } if {$sql_qry ne ""} { - set columns [ns_set create] - - db_foreach $statement_name $sql_qry -column_set selection -bind $bind { - incr count - incr dbcount - set item [ns_set value $selection 0] - set value [ns_set value $selection 1] - if { (!$multiple && $value eq $default ) - || ($multiple && $value in $default) - } { - append retval "$item\n" - } else { - append retval "$item\n" - } - } if_no_rows { - if {$default ne ""} { - return "\n" - } else { - return {} - } - } + set columns [ns_set create] + + db_foreach $statement_name $sql_qry -column_set selection -bind $bind { + incr count + incr dbcount + set item [ns_set value $selection 0] + set value [ns_set value $selection 1] + if { (!$multiple && $value eq $default ) + || ($multiple && $value in $default) + } { + append retval "$item\n" + } else { + append retval "$item\n" + } + } if_no_rows { + if {$default ne ""} { + return "\n" + } else { + return {} + } + } } if { $count == 1 || ($dbcount == 1 && $hidden_if_one_db) } { return "$item\n" } elseif {!$count && !$dbcount && $blank_if_no_db} { - return {} - } else { + return {} + } else { set select " 255 || c2 > 255 || c3 > 255) { - element.selectedIndex = 1; - document['color_' + field].src = '/shared/1pixel.tcl?r=255&g=255&b=255'; - return; - } + var c1 = form[field + ".c1"].value; + var c2 = form[field + ".c2"].value; + var c3 = form[field + ".c3"].value; + if (c1 != parseInt(c1) || c2 != parseInt(c2) || c3 != parseInt(c3) || + c1 < 0 || c2 < 0 || c3 < 0 || c1 > 255 || c2 > 255 || c3 > 255) { + element.selectedIndex = 1; + document['color_' + field].src = '/shared/1pixel.tcl?r=255&g=255&b=255'; + return; + } - document['color_' + field].src = '/shared/1pixel.tcl?r=' + c1 + '&g=' + c2 + '&b=' + c3; + document['color_' + field].src = '/shared/1pixel.tcl?r=' + c1 + '&g=' + c2 + '&b=' + c3; - var rgb = parseInt(form[field + ".c1"].value) + "," + parseInt(form[field + ".c2"].value) + "," + parseInt(form[field + ".c3"].value); - var found = 0; - for (var i = 0; i < element.length; ++i) - if (element.options[i].value == rgb) { - element.selectedIndex = i; - found = 1; - break; + var rgb = parseInt(form[field + ".c1"].value) + "," + parseInt(form[field + ".c2"].value) + "," + parseInt(form[field + ".c3"].value); + var found = 0; + for (var i = 0; i < element.length; ++i) + if (element.options[i].value == rgb) { + element.selectedIndex = i; + found = 1; + break; + } + if (!found) + element.selectedIndex = 0; } - if (!found) - element.selectedIndex = 0; -} } -} +} -ad_proc ad_color_widget { - name - default - { use_js 0 } +ad_proc ad_color_widget { + name + default + { use_js 0 } } { Returns a color selection widget, optionally using JavaScript. Default is a string of the form '0,192,255'. } { set out {} append out [subst {\n" if { ![regexp {^([0-9]+),([0-9]+),([0-9]+)$} $default all c1 c2 c3] } { - set c1 "" - set c2 "" - set c3 "" + set c1 "" + set c2 "" + set c3 "" } foreach component { c1 c2 c3 } { - append out [subst { " + } + append out ">" } if { $use_js == 1 } { - if { $c1 eq "" } { - set c1 255 - set c2 255 - set c3 255 - } - append out [subst { - + if { $c1 eq "" } { + set c1 255 + set c2 255 + set c3 255 + } + append out [subst { + }] } append out "\n" return $out } -ad_proc ad_process_color_widgets args { - Sets variables corresponding to the color widgets named in $args. +ad_proc ad_process_color_widgets args { + Sets variables corresponding to the color widgets named in $args. } { foreach field $args { - upvar $field var - set var [ns_queryget "$field.list"] - if { $var eq "custom" } { - set var "[ns_queryget "$field.c1"],[ns_queryget "$field.c2"],[ns_queryget "$field.c3"]" - } - if { ![regexp {^([0-9]+),([0-9]+),([0-9]+)$} $var "" r g b] || $r > 255 || $g > 255 || $b > 255 } { - set var "" - } + upvar $field var + set var [ns_queryget "$field.list"] + if { $var eq "custom" } { + set var "[ns_queryget "$field.c1"],[ns_queryget "$field.c2"],[ns_queryget "$field.c3"]" + } + if { ![regexp {^([0-9]+),([0-9]+),([0-9]+)$} $var "" r g b] || $r > 255 || $g > 255 || $b > 255 } { + set var "" + } } } -ad_proc ad_color_to_hex { triplet } { - Converts a string of the form 0,192,255 to a string of the form #00C0FF. +ad_proc ad_color_to_hex { triplet } { + Converts a string of the form 0,192,255 to a string of the form #00C0FF. } { if { [regexp {^([0-9]+),([0-9]+),([0-9]+)$} $triplet all r g b] } { - return "#[format "%02x%02x%02x" $r $g $b]" + return "#[format "%02x%02x%02x" $r $g $b]" } else { - return "" + return "" } }