Index: openacs-4/packages/xowiki/tcl/form-field-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/form-field-procs.tcl,v diff -u -r1.284.2.187 -r1.284.2.188 --- openacs-4/packages/xowiki/tcl/form-field-procs.tcl 9 Jan 2022 17:35:14 -0000 1.284.2.187 +++ openacs-4/packages/xowiki/tcl/form-field-procs.tcl 11 Jan 2022 15:40:00 -0000 1.284.2.188 @@ -1616,7 +1616,7 @@ CompoundField instproc get_compound_value {} { # - # Set the internal representation based on the components values. + # returns the internal representation based on the components values. # set cc [[${:object} package_id] context] @@ -1836,6 +1836,22 @@ ${:object} set_property -new 1 ${:name} [:get_compound_value] } + CompoundField instproc convert_to_external {internal} { + #ns_log notice "Compound ${:name} convert_to_external <$internal>" + set result {} + foreach c ${:components} { + set name [$c name] + if {[dict exists $internal $name]} { + set value [$c convert_to_external [dict get $internal $name]] + } else { + set value "" + } + lappend result [$c name] $value + } + #ns_log notice "Compound ${:name} convert_to_external -> $result" + return $result + } + CompoundField instproc make_correct {} { foreach c ${:components} { $c make_correct @@ -2917,14 +2933,15 @@ } } numeric instproc convert_to_external {value} { + #ns_log notice "convert_to_external ${:name} keep_string_rep ${:keep_string_rep}" if {${:keep_string_rep}} { return $value } if {$value eq ""} { set result "" } else { ad_try { - return [lc_numeric $value ${:format} ${:locale}] + set value [lc_numeric $value ${:format} ${:locale}] } on error {errorMsg} { util_user_message -message "${:label}: $errorMsg (locale=${:locale})" } @@ -2938,10 +2955,12 @@ set result $value } } + #ns_log notice "convert_to_external ${:name} keep_string_rep ${:keep_string_rep} -> $result" return $result } numeric instproc convert_to_internal_value {value} { + #ns_log notice "convert_to_internal_value called with value '$value'" try { lc_parse_number $value ${:locale} ${:is_integer} } on ok {result} { @@ -2956,6 +2975,7 @@ throw $::errorInfo $errorMsg } } + #ns_log notice "convert_to_internal_value called with value '$value' -> $result" return $result } numeric instproc convert_to_internal {} { @@ -2964,8 +2984,8 @@ # The value has been already checked against the validator, so # the conversion should be smooth. # - set value [:convert_to_internal_value ${:value}] - ${:object} set_property -new 1 ${:name} [expr {$value}] + set :value [:convert_to_internal_value ${:value}] + ${:object} set_property -new 1 ${:name} ${:value} } } numeric instproc check=numeric {value} {