Index: openacs-4/contrib/packages/classified-ads/tcl/widget-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/classified-ads/tcl/widget-procs.tcl,v diff -u -r1.4 -r1.5 --- openacs-4/contrib/packages/classified-ads/tcl/widget-procs.tcl 24 Jul 2003 20:20:10 -0000 1.4 +++ openacs-4/contrib/packages/classified-ads/tcl/widget-procs.tcl 25 Jul 2003 02:39:38 -0000 1.5 @@ -30,8 +30,6 @@ } { set package_id [ad_conn package_id] - set ad_form_spec "ad_form -extend -name $form_id -form {" - set validate_block "" if { [empty_string_p $keyword_id] } { # @@ -46,80 +44,63 @@ set widget_list [db_list_of_ns_sets select_widgets {}] foreach one_widget $widget_list { - set element_name [ns_set get $one_widget attribute_name] - set element_label [ns_set get $one_widget label] - set element_datatype [ns_set get $one_widget datatype] - set element_widget [ns_set get $one_widget widget] - set element_options [ns_set get $one_widget select_options] - set element_line "\n{$element_name:$element_datatype\($element_widget\)" + set extra_ops "" - # Is it optional? - - if {[string equal [ns_set get $one_widget optional_p] "t"]} { - append element_line ",optional {label \"$element_label\"}" - } else { - append element_line "\t{label \"$element_label\"}" - } - # Were html options passed? set html_options [ns_set get $one_widget html_options] if {![empty_string_p $html_options]} { - append element_line "\n\t{html $html_options}" + append extra_ops " -html $html_options" } # Is there a default value? set default_value [ns_set get $one_widget default_value] if {![empty_string_p $default_value]} { - append element_line "\n\t{value \"$default_value\"}" + append extra_ops " -value $default_value" } + # Is there a validate clause? + + set validate_clause [ns_set get $one_widget validate] + + if {![empty_string_p $validate_clause]} { + append extra_ops " -validate $validate_clause" + } + + # Is it optional? + + if {[string equal [ns_set get $one_widget optional_p] "t"]} { + append extra_ops " -optional" + } + # # RBM: Did the user pass extra form builder options? # # This is somewhat dangerous, but the admin must know what # s/he is doing when entering extra options. It was the only # way I could think of to allow for different options like - # format, help_text, help, etc. to be added on a per-field basis. + # -format, -help_text, -help, etc. to be added on a + # per-field basis. # set extra_clause [ns_set get $one_widget extra_options] if { ![empty_string_p $extra_clause] } { - append element_line "\n\t$extra_clause" + append extra_ops " $extra_clause" } - # Now end the element list + set widget_command "template::element::create $form_id [ns_set get $one_widget attribute_name] \ + -label \"[ns_set get $one_widget label]\" \ + -datatype \"[ns_set get $one_widget datatype]\" \ + -options \"[ns_set get $one_widget select_options]\" \ + -widget \"[ns_set get $one_widget widget]\" $extra_ops" - append element_line "}" - - # Is there a validate clause? - - set validate_clause [ns_set get $one_widget validate] - - if {![empty_string_p $validate_clause]} { - append validate_block "{$element_name {$validate_clause}}" - } - - # Add this element to the ad_form spec - - append ad_form_spec $element_line + eval $widget_command } - # Close the ad_form spec and then add a validate block if not empty - - append ad_form_spec "}" - - if { ![empty_string_p $validate_block] } { - append ad_form_spec " -validate { $validate_block }" - } - - ns_log notice "RBM: ad_form: $ad_form_spec" - eval $ad_form_spec - return 0 }