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.3 -r1.4 --- openacs-4/contrib/packages/classified-ads/tcl/widget-procs.tcl 24 Jul 2003 01:04:48 -0000 1.3 +++ openacs-4/contrib/packages/classified-ads/tcl/widget-procs.tcl 24 Jul 2003 20:20:10 -0000 1.4 @@ -30,6 +30,8 @@ } { 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] } { # @@ -44,63 +46,80 @@ set widget_list [db_list_of_ns_sets select_widgets {}] foreach one_widget $widget_list { - set extra_ops "" + 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\)" + # 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 extra_ops " -html $html_options" + append element_line "\n\t{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 extra_ops " -value $default_value" + append element_line "\n\t{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 extra_ops " $extra_clause" + append element_line "\n\t$extra_clause" } - 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" + # Now end the element list - eval $widget_command + 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 } + # 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 }