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.170 -r1.171 --- openacs-4/packages/xowiki/tcl/form-field-procs.tcl 18 Apr 2010 21:01:08 -0000 1.170 +++ openacs-4/packages/xowiki/tcl/form-field-procs.tcl 24 Apr 2010 13:36:00 -0000 1.171 @@ -81,8 +81,11 @@ FormField instproc validate {obj} { my instvar name required + # use the 'value' method to deal e.g. with compound fields set value [my value] + #my msg "[my info class] value=$value req=$required // [my set value]" + if {$required && $value eq "" && ![my istype ::xowiki::formfield::hidden]} { my instvar label return [_ acs-templating.Element_is_required] @@ -654,10 +657,21 @@ file instproc entry_name {value} { return [list name file:[my name] parent_id [[my object] item_id]] } + file instproc value {args} { + if {$args eq ""} { + set old_value [[my object] form_parameter __old_value_[my name] ""] + #my msg "[my set value] -- $args // old_value = $old_value" + if {$old_value ne ""} { + return "-" + } + } + next + } file instproc convert_to_internal {} { my instvar value - if {[my value] eq ""} { + set v [my value] + if {$v eq "-" || $v eq ""} { # nothing to do, keep the old value set value [[my object] form_parameter __old_value_[my name] ""] [my object] set_property [my name] $value @@ -706,6 +720,7 @@ file instproc pretty_value {v} { if {$v ne ""} { + my instvar object array set "" [my entry_name $v] array set "" [$object item_ref -default_lang [[my object] lang] -parent_id $(parent_id) $(name)] set l [::xowiki::Link create new -destroy_on_cleanup \