Index: openacs-4/packages/ams/tcl/ams-procs-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ams/tcl/ams-procs-postgresql.xql,v diff -u -N -r1.16 -r1.17 --- openacs-4/packages/ams/tcl/ams-procs-postgresql.xql 31 Oct 2005 16:00:21 -0000 1.16 +++ openacs-4/packages/ams/tcl/ams-procs-postgresql.xql 22 Nov 2005 16:55:30 -0000 1.17 @@ -129,6 +129,7 @@ alam.attribute_id, alam.required_p, alam.section_heading, + alam.html_options, aa.attribute_name, aa.pretty_name, aa.widget @@ -158,6 +159,7 @@ select alam.attribute_id, alam.section_heading, + alam.html_options, aa.attribute_name, aa.pretty_name, aa.widget, Index: openacs-4/packages/ams/tcl/ams-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ams/tcl/ams-procs.tcl,v diff -u -N -r1.31 -r1.32 --- openacs-4/packages/ams/tcl/ams-procs.tcl 2 Nov 2005 20:19:55 -0000 1.31 +++ openacs-4/packages/ams/tcl/ams-procs.tcl 22 Nov 2005 16:55:30 -0000 1.32 @@ -379,16 +379,19 @@ lappend control_list $attribute_id set required_p [lindex $attribute 1] set section_heading [lindex $attribute 2] - set attribute_name [lindex $attribute 3] - set pretty_name [lindex $attribute 4] - set widget [lindex $attribute 5] + set html_options [lindex $attribute 3] + set attribute_name [lindex $attribute 4] + set pretty_name [lindex $attribute 5] + set widget [lindex $attribute 6] set element [ams::widget \ -widget $widget \ -request "ad_form_widget" \ -attribute_name $attribute_name \ -pretty_name $pretty_name \ - -optional_p [string is false $required_p] -attribute_id $attribute_id] + -optional_p [string is false $required_p] \ + -html_options $html_options \ + -attribute_id $attribute_id] if { [exists_and_not_null section_heading] } { lappend element [list section $section_heading] @@ -474,6 +477,7 @@ if { [exists_and_not_null list_ids] } { set values [list] set heading "" + set html_opt "" # Control list to know which attributes are already in the # elements list so we don't en up with duplicates @@ -486,10 +490,11 @@ if { [string equal [lsearch $control_list $attribute_id] "-1"] } { lappend control_list $attribute_id set section_heading [lindex $attribute 1] - set attribute_name [lindex $attribute 2] - set pretty_name [lindex $attribute 3] - set widget [lindex $attribute 4] - set value [lindex $attribute 5] + set html_options [lindex $attribute 2] + set attribute_name [lindex $attribute 3] + set pretty_name [lindex $attribute 4] + set widget [lindex $attribute 5] + set value [lindex $attribute 6] set val [list] if { [regexp "\{text/.*\}" $value value_format] } { @@ -502,14 +507,19 @@ if { [exists_and_not_null section_heading] } { set heading $section_heading } + + if { [exists_and_not_null html_options] } { + set html_opt $html_options + } + if { [exists_and_not_null value] } { lappend values $heading $attribute_name $pretty_name [ams::widget \ -widget $widget \ -request "value_${format}" \ -attribute_name $attribute_name \ -attribute_id $attribute_id \ -value $value \ - -locale $locale] + -locale $locale] $html_opt ns_log Notice "$attribute_name ($attribute_id):: $value" } Index: openacs-4/packages/ams/tcl/ams-widget-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ams/tcl/ams-widget-procs.tcl,v diff -u -N -r1.14 -r1.15 --- openacs-4/packages/ams/tcl/ams-widget-procs.tcl 2 Nov 2005 20:19:55 -0000 1.14 +++ openacs-4/packages/ams/tcl/ams-widget-procs.tcl 22 Nov 2005 16:55:30 -0000 1.15 @@ -23,6 +23,7 @@ {-value ""} {-optional_p "1"} {-locale ""} + {-html_options {}} } { This proc defers its responses to all other ams::widget::${widget} procs. @@ -78,7 +79,7 @@ } } ns_log Debug "MGEDDERT DEBUG: return ::ams::widget::${widget} -request $request -attribute_name $attribute_name -pretty_name $pretty_name -value $value -optional_p $optional_p -form_name $form_name -options $options" - return [::ams::widget::${widget} -request $request -attribute_name $attribute_name -pretty_name $pretty_name -value $value -optional_p $optional_p -form_name $form_name -options $options] + return [::ams::widget::${widget} -request $request -attribute_name $attribute_name -pretty_name $pretty_name -value $value -optional_p $optional_p -form_name $form_name -options $options -html_options $html_options] } else { # the widget requested did not exist ns_log Debug "AMS: the ams widget \"${widget}\" was requested and the associated ::ams::widget::${widget} procedure does not exist" @@ -176,32 +177,44 @@ -value:required -optional_p:required -options:required + -html_options:required } { This proc responds to the ams::widget procs. @see ams::widget } { + + if { [llength $html_options] == 0 } { + set html_options [list] + } + switch $request { ad_form_widget { + set element [list] if { [string is true $optional_p] } { - return "${attribute_name}:address(address),optional {[list label ${pretty_name}]}" + lappend element "${attribute_name}:address(address),optional" } else { - return "${attribute_name}:address(address) {[list label ${pretty_name}]}" + lappend element "${attribute_name}:address(address)" } + lappend element [list label ${pretty_name}] + lappend element [list html $html_options] + return $element } template_form_widget { if { [string is true $optional_p] } { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype address \ -widget address \ - -optional + -optional \ + -html $html_options } else { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype address \ - -widget address + -widget address \ + -html $html_options } } form_set_value { @@ -256,32 +269,41 @@ -value:required -optional_p:required -options:required + -html_options:required } { This proc responds to the ams::widget procs. @see ams::widget } { - + if { [llength $html_options] == 0 } { + set html_options [list] + } switch $request { ad_form_widget { + set element [list] if { [string is true $optional_p] } { - return "${attribute_name}:telecom_number(telecom_number),optional {[list label ${pretty_name}]}" + lappend element ${attribute_name}:telecom_number(telecom_number),optional } else { - return "${attribute_name}:telecom_number(telecom_number) {[list label ${pretty_name}]}" + lappend element ${attribute_name}:telecom_number(telecom_number) } + lappend element [list label ${pretty_name}] + lappend element [list html $html_options] + return $element } template_form_widget { if { [string is true $optional_p] } { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype telecom_number \ -widget telecom_number \ - -optional + -optional \ + -html $html_options } else { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype telecom_number \ - -widget telecom_number + -widget telecom_number \ + -html $html_options } } form_set_value { @@ -338,19 +360,27 @@ -value:required -optional_p:required -options:required + -html_options:required } { This proc responds to the ams::widget procs. @see ams::widget } { + if { [llength $html_options] == 0 } { + set html_options [list] + } switch $request { ad_form_widget { + set element [list] if { [string is true $optional_p] } { - return "${attribute_name}:date(date),optional {[list label ${pretty_name}]}" + lappend element ${attribute_name}:date(date),optional } else { - return "${attribute_name}:date(date) {[list label ${pretty_name}]}" + lappend element ${attribute_name}:date(date) } + lappend element [list label ${pretty_name}] + lappend element [list html $html_options] + return $element } template_form_widget { if { [string is true $optional_p] } { @@ -359,13 +389,15 @@ -datatype date \ -widget date \ -help \ - -optional + -optional \ + -html $html_options } else { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype date \ -widget date \ - -help + -help \ + -html $html_options } } form_set_value { @@ -413,34 +445,46 @@ -value:required -optional_p:required -options:required + -html_options:required } { This proc responds to the ams::widget procs. @see ams::widget } { + + if { [llength $html_options] == 0 } { + set html_options [list] + } switch $request { ad_form_widget { + set element [list] if { [string is true $optional_p] } { set options [concat [list [list "" ""]] $options] - return "${attribute_name}:integer(select),optional {[list label ${pretty_name}]} {[list options $options]}" + lappend element ${attribute_name}:integer(select),optional } else { set options [concat [list [list "- [_ ams.select_one] -" ""]] $options] - return "${attribute_name}:integer(select) {[list label ${pretty_name}]} {[list options $options]}" + lappend element ${attribute_name}:integer(select) } + lappend element [list label ${pretty_name}] + lappend element [list options $options] + lappend element [list html $html_options] + return $element } template_form_widget { if { [string is true $optional_p] } { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype integer \ -widget select \ - -optional + -optional \ + -html $html_options } else { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype integer \ - -widget select + -widget select \ + -html $html_options } } form_set_value { @@ -486,32 +530,43 @@ -value:required -optional_p:required -options:required + -html_options:required } { This proc responds to the ams::widget procs. @see ams::widget } { - + if { [llength $html_options] == 0 } { + set html_options [list] + } + switch $request { ad_form_widget { + set element [list] if { [string is true $optional_p] } { - return "${attribute_name}:integer(radio),optional {[list label ${pretty_name}]} {[list options $options]}" + lappend element ${attribute_name}:integer(radio),optional } else { - return "${attribute_name}:integer(radio) {[list label ${pretty_name}]} {[list options $options]}" + lappend element ${attribute_name}:integer(radio) } + lappend element [list label ${pretty_name}] + lappend element [list options $options] + lappend element [list html $html_options] + return $element } template_form_widget { if { [string is true $optional_p] } { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype integer \ -widget radio \ - -optional + -optional \ + -html $html_options } else { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype integer \ - -widget radio + -widget radio \ + -html $html_options } } form_set_value { @@ -557,19 +612,28 @@ -value:required -optional_p:required -options:required + -html_options:required } { This proc responds to the ams::widget procs. @see ams::widget } { + if { [llength $html_options] == 0 } { + set html_options [list] + } switch $request { ad_form_widget { + set element [list] if { [string is true $optional_p] } { - return "${attribute_name}:integer(checkbox),multiple,optional {[list label ${pretty_name}]} {[list options $options]}" + lappend element ${attribute_name}:integer(checkbox),multiple,optional } else { - return "${attribute_name}:integer(checkbox),multiple {[list label ${pretty_name}]} {[list options $options]}" + lappend element ${attribute_name}:integer(checkbox),multiple } + lappend element [list label ${pretty_name}] + lappend element [list options $options] + lappend element [list html $html_options] + return $element } template_form_widget { if { [string is true $optional_p] } { @@ -578,13 +642,15 @@ -datatype integer \ -widget checkbox \ -multiple \ - -optional + -optional \ + -html $html_options } else { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype integer \ -widget checkbox \ - -multiple + -multiple \ + -html $html_options } } form_set_value { @@ -630,19 +696,28 @@ -value:required -optional_p:required -options:required + -html_options:required } { This proc responds to the ams::widget procs. @see ams::widget } { - + if { [llength $html_options] == 0} { + set html_options [list] + } + switch $request { ad_form_widget { + set element [list] if { [string is true $optional_p] } { - return "${attribute_name}:integer(multiselect),multiple,optional {[list label ${pretty_name}]} {[list options $options]}" + lappend element {attribute_name}:integer(multiselect),multiple,optional } else { - return "${attribute_name}:integer(multiselect),multiple {[list label ${pretty_name}]} {[list options $options]}" + lappend element ${attribute_name}:integer(multiselect),multiple } + lappend element [list label ${pretty_name}] + lappend element [list options $options] + lappend element [list html $html_options] + return $element } template_form_widget { if { [string is true $optional_p] } { @@ -651,13 +726,15 @@ -datatype integer \ -widget multiselect \ -multiple \ - -optional + -optional \ + -html $html_options } else { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype integer \ -widget multiselect \ - -multiple + -multiple \ + -html $html_options } } form_set_value { @@ -705,34 +782,42 @@ -value:required -optional_p:required -options:required + -html_options:required } { This proc responds to the ams::widget procs. @see ams::widget } { - + if { [llength $html_options] == 0 } { + set html_options [list size 6] + } + switch $request { ad_form_widget { + set element [list] if { [string is true $optional_p] } { - return "${attribute_name}:integer(text),optional {html {size 6}} {[list label ${pretty_name}]}" + lappend element ${attribute_name}:integer(text),optional } else { - return "${attribute_name}:integer(text) {html {size 6}} {[list label ${pretty_name}]}" + lappend element ${aettribute_name}:integer(text) } + lappend element [list html $html_options] + lappend element [list label ${pretty_name}] + return $element } template_form_widget { if { [string is true $optional_p] } { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype integer \ -widget text \ - -html {size 6} \ + -html $html_options \ -optional } else { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype integer \ -widget text \ - -html {size 6} + -html $html_options } } form_set_value { @@ -778,6 +863,7 @@ -value:required -optional_p:required -options:required + -html_options:required } { This proc responds to the ams::widget procs. @@ -790,28 +876,35 @@ regsub -all {[\]\[\{\}\"\\$]} $value {\\&} value set value_format [lindex $value 0] set value [lrange $value 1 end] + if { [llength $html_options] == 0 } { + set html_options [list size 30] + } switch $request { ad_form_widget { + set element [list] if { [string is true $optional_p] } { - return "${attribute_name}:text(text),optional {html {size 30}} {[list label ${pretty_name}]}" + lappend element "${attribute_name}:text(text),optional" } else { - return "${attribute_name}:text(text) {html {size 30}} {[list label ${pretty_name}]}" + lappend element "${attribute_name}:text(text)" } + lappend element [list html $html_options] + lappend element [list label ${pretty_name}] + return $element } template_form_widget { if { [string is true $optional_p] } { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype text \ -widget text \ - -html {size 30} \ + -html $html_options \ -optional } else { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype text \ -widget text \ - -html {size 30} + -html $html_options } } form_set_value { @@ -861,6 +954,7 @@ -value:required -optional_p:required -options:required + -html_options:required } { This proc responds to the ams::widget procs. @@ -873,28 +967,37 @@ regsub -all {[\]\[\{\}\"\\$]} $value {\\&} value set value_format [lindex $value 0] set value [lrange $value 1 end] + + if { [llength $html_options] == 0 } { + set html_options [list cols 60 rows 6] + } + switch $request { ad_form_widget { + set element [list] if { [string is true $optional_p] } { - return "${attribute_name}:text(textarea),optional {html {cols 60 rows 6}} {[list label ${pretty_name}]}" + lappend element ${attribute_name}:text(textarea),optional } else { - return "${attribute_name}:text(textarea) {html {cols 60 rows 10}} {[list label ${pretty_name}]}" + lappend element ${attribute_name}:text(textarea) } + lappend element [list html $html_options] + lappend element [list label ${pretty_name}] + return $element } template_form_widget { if { [string is true $optional_p] } { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype text \ -widget textarea \ - -html {cols 60 rows 10} \ + -html $html_options \ -optional } else { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype text \ -widget textarea \ - -html {cols 60 rows 10} + -html $html_options } } form_set_value { @@ -945,35 +1048,45 @@ -value:required -optional_p:required -options:required + -html_options:required } { This proc responds to the ams::widget procs. @see ams::widget } { set value_format [lindex $value 0] set value [lrange $value 1 end] + + if { [llength $html_options] == 0 } { + set html_options [list cols 60 rows 14] + } + switch $request { ad_form_widget { + set element [list] if { [string is true $optional_p] } { - return "${attribute_name}:richtext(richtext),optional {html {cols 60 rows 14}} {[list label ${pretty_name}]}" + lappend element ${attribute_name}:richtext(richtext),optional } else { - return "${attribute_name}:richtext(richtext) {html {cols 60 rows 14}} {[list label ${pretty_name}]}" + lappend element ${attribute_name}:richtext(richtext) } + lappend element [list html $html_options] + lappend element [list label ${pretty_name}] + return $element } template_form_widget { if { [string is true $optional_p] } { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype richtext \ -widget richtext \ - -html {cols 60 rows 14} \ + -html $html_options \ -optional } else { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype richtext \ -widget richtext \ - -html {cols 60 rows 14} + -html $html_options } } form_set_value { @@ -1022,35 +1135,45 @@ -value:required -optional_p:required -options:required + -html_options:required } { This proc responds to the ams::widget procs. @see ams::widget } { set value_format [lindex $value 0] set value [lrange $value 1 end] + + if { [llength $html_options] == 0 } { + set html_options [list size 30] + } + switch $request { ad_form_widget { + set element [list] if { [string is true $optional_p] } { - return "${attribute_name}:email(text),optional {html {size 30}} {[list label ${pretty_name}]}" + lappend element ${attribute_name}:email(text),optional } else { - return "${attribute_name}:email(text) {html {size 30}} {[list label ${pretty_name}]}" + lappend element ${attribute_name}:email(text) } + lappend element [list html $html_options] + lappend element [list label ${pretty_name}] + return $element } template_form_widget { if { [string is true $optional_p] } { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype email \ -widget text \ - -html {size 30} \ + -html $html_options \ -optional } else { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype email \ -widget text \ - -html {size 30} + -html $html_options } } form_set_value { @@ -1096,35 +1219,45 @@ -value:required -optional_p:required -options:required + -html_options:required } { This proc responds to the ams::widget procs. @see ams::widget } { set value_format [lindex $value 0] set value [lrange $value 1 end] + + if { [llength $html_options] == 0 } { + set html_options [list size 30] + } + switch $request { ad_form_widget { + set element [list] if { [string is true $optional_p] } { - return "${attribute_name}:url(text),optional {html {size 30}} {[list label ${pretty_name}]}" + lappend element ${attribute_name}:url(text),optional } else { - return "${attribute_name}:url(text) {html {size 30}} {[list label ${pretty_name}]}" + lappend element ${attribute_name}:url(text) } + lappend element [list html $html_options] + lappend element [list label ${pretty_name}] + return $element } template_form_widget { if { [string is true $optional_p] } { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype url \ -widget text \ - -html {size 30} \ + -html $html_options \ -optional } else { ::template::element::create ${form_name} ${attribute_name} \ -label ${pretty_name} \ -datatype url \ -widget text \ - -html {size 30} + -html $html_options } } form_set_value {