Index: openacs-4/packages/acs-templating/tcl/element-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-templating/tcl/element-procs.tcl,v diff -u -r1.32 -r1.33 --- openacs-4/packages/acs-templating/tcl/element-procs.tcl 8 Dec 2012 17:50:20 -0000 1.32 +++ openacs-4/packages/acs-templating/tcl/element-procs.tcl 27 Oct 2014 16:40:11 -0000 1.33 @@ -44,7 +44,7 @@ @see template::form } { - eval template::element::$command $form_id $element_id $args + template::element::$command $form_id $element_id {*}$args } ad_proc -public template::element::create { form_id element_id args } { @@ -139,7 +139,7 @@ @see template::widget @see template::data::validate @see template::form::create - @see template::form::section + @see template::form::section } { set level [template::adp_level] @@ -172,11 +172,12 @@ # set the form section set opts(section) $form_properties(section) - if { $opts(section) ne "" } { - set opts(sec_fieldset) $form_properties(sec_fieldset) - set opts(sec_legend) $form_properties(sec_legend) - set opts(sec_legendtext) $form_properties(sec_legendtext) - } + if { $opts(section) ne "" } { + array set opts {sec_fieldset "" sec_legend "" sec_legendtext ""} + if {[info exists form_properties(sec_fieldset)]} {set opts(sec_fieldset) $form_properties(sec_fieldset)} + if {[info exists form_properties(sec_legend)]} {set opts(sec_legend) $form_properties(sec_legend)} + if {[info exists form_properties(sec_legendtext)]} {set opts(sec_legendtext) $form_properties(sec_legendtext)} + } template::util::get_opts $args @@ -188,17 +189,15 @@ # If the widget is a submit widget, remember it # All submit widgets are optional - if { $opts(widget) eq "submit" || \ - [string equal $opts(widget) "button"] } { + if { $opts(widget) eq "submit" || $opts(widget) eq "button" } { set form_properties(has_submit) 1 set opts(optional) 1 if { ! [info exists opts(value)] } { set opts(value) $opts(label) } if { ! [info exists opts(label)] } { set opts(label) $opts(value) } } # If the widget is a checkbox or radio widget, set attributes - if { $opts(widget) eq "radio" || \ - [string equal $opts(widget) "checkbox"] } { + if { $opts(widget) eq "radio" || $opts(widget) eq "checkbox" } { # If there's no legend text, no point to generate the fieldset if { ![info exists opts(legendtext)] } { @@ -218,7 +217,7 @@ append fs_options " class=\"form-fieldset\"" } foreach name [array names fs_attributes] { - if {$fs_attributes($name) eq {}} { + if {$fs_attributes($name) eq ""} { append fs_options " $name" } else { append fs_options " $name=\"$fs_attributes($name)\"" @@ -228,12 +227,12 @@ # set legend attributes if { ![info exists opts(legend)] } { - set opts(legend) {} + set opts(legend) "" } array set lg_attributes $opts(legend) set lg_options "" foreach name [array names lg_attributes] { - if {$lg_attributes($name) eq {}} { + if {$lg_attributes($name) eq ""} { append lg_options " $name" } else { append lg_options " $name=\"$lg_attributes($name)\"" @@ -251,7 +250,7 @@ # check for submission if { [template::form is_submission $form_id] || [info exists opts(param)] } { validate $form_id $element_id - } elseif { ![empty_string_p [ns_queryget "__edit"]] } { + } elseif { [ns_queryget "__edit"] ne "" } { # If the magic __edit button was hit, try to get values from the form still # but don't do any validation set opts(values) [querygetall opts] @@ -262,14 +261,14 @@ } } - if { [string equal $opts(widget) "hidden"] + if { $opts(widget) eq "hidden" && [info exists opts(sign)] && $opts(sign) } { if {[info exists opts(value)] } { set val $opts(value) } else { - set val {} + set val "" } template::element::create $opts(form_id) $opts(id):sig \ -datatype text \ @@ -296,7 +295,7 @@ template::util::get_opts $args - if { [string equal $opts(widget) "hidden"] + if { $opts(widget) eq "hidden" && [info exists opts(sign)] && $opts(sign) && [info exists opts(value)] } { @@ -427,7 +426,7 @@ set is_optional [info exists element(optional)] # if the element is optional and the value is an empty string, then ignore - if { $is_optional && [string equal [lindex $values 0] {}] } { + if { $is_optional && [lindex $values 0] eq "" } { set values [list] # also clobber the value(s) for a submit widget @@ -439,13 +438,13 @@ # if no values were submitted then look for values specified in the # declaration (either values or value) - if { ! [llength $values] && [info exists element(values)] } { + if { [llength $values] == 0 && [info exists element(values)] } { set values $element(values) } # set a label for use in the template set label $element(label) - if {$label eq {}} { + if {$label eq ""} { set label $element(name) } @@ -454,13 +453,13 @@ set is_inform [expr {$element(widget) eq "inform" || ($element(mode) ne "edit" && $element(mode) ne "" )}] # Check for required element - if { ! $is_inform && ! $is_optional && ! [llength $values] } { + if { ! $is_inform && ! $is_optional && ![llength $values] } { # no value was submitted for a required element set formerror($element_id) [_ acs-templating.Element_is_required] set formerror($element_id:required) [_ acs-templating.Element_is_required] - if { [lsearch -exact {hidden submit} $element(widget)] > -1 } { + if {$element(widget) in {hidden submit}} { ns_log Warning "template::element::validate: No value for hidden/submit element $label" } } @@ -476,7 +475,7 @@ # a single anonymous validation check was specified set element(validate) [linsert $element(validate) 0 "anonymous"] - } elseif { [expr {$v_length % 3}] } { + } elseif { $v_length % 3 } { error "Invalid number of parameters to validate option: $element(validate) (Length is $v_length)" @@ -597,7 +596,7 @@ set transform_proc "::template::data::transform::$datatype" - if {[info commands $transform_proc] eq {}} { + if {[info commands $transform_proc] eq ""} { set values [ns_querygetall $element(id)] @@ -726,7 +725,7 @@ upvar #$level formgroup:$i formgroup - set option [lindex $options [expr {$i - 1}]] + set option [lindex $options $i-1] set value [lindex $option 1] if { ![info exists values($value)] } { @@ -747,8 +746,13 @@ define values from value, if the latter is more defined } { upvar opts opts - # values is always defined, init to "" from template::element::defaults + # opts(values) is always defined, init to "" from template::element::defaults if { [info exists opts(value)] && [llength $opts(values)] == 0 } { + # + # GN: the following test is broken, since "opts(value)" is never + # empty; ... but changing this to a comparison with $opts(value) + # breaks eg ad_form. + # if { [string equal opts(value) {}] } { set opts(values) [list] } else {