Index: openacs-4/packages/xotcl-core/tcl/06-package-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/06-package-procs.tcl,v diff -u -r1.1 -r1.2 --- openacs-4/packages/xotcl-core/tcl/06-package-procs.tcl 24 Sep 2007 12:04:26 -0000 1.1 +++ openacs-4/packages/xotcl-core/tcl/06-package-procs.tcl 28 Sep 2007 11:51:17 -0000 1.2 @@ -80,7 +80,7 @@ PackageMgr ad_instproc require {{-url ""} package_id} { Create package object if needed. } { - #my log "--R $package_id exists? [my isobject ::$package_id]" + #my log "--R $package_id exists? [my isobject ::$package_id] url='$url'" if {![my isobject ::$package_id]} { #my log "--R we have to create ::$package_id //url='$url'" if {$url ne ""} { @@ -153,7 +153,7 @@ my instance_name $info(instance_name) if {[my exists url] && [info exists root]} { regexp "^${root}(.*)$" $url _ url - } else { + } elseif {![my exists url]} { my log "--R we have no url, use package_url" # if we have no more information, we use the package_url as actual url set url $package_url Index: openacs-4/packages/xotcl-core/tcl/context-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xotcl-core/tcl/context-procs.tcl,v diff -u -r1.24 -r1.25 --- openacs-4/packages/xotcl-core/tcl/context-procs.tcl 24 Sep 2007 12:04:26 -0000 1.24 +++ openacs-4/packages/xotcl-core/tcl/context-procs.tcl 28 Sep 2007 11:51:18 -0000 1.25 @@ -22,6 +22,7 @@ {parameter_declaration ""} {actual_query " "} {package_id 0} + locale } # syntactic sugar for includelets, to allow the same syntax as @@ -178,28 +179,43 @@ #my log "--CONN ns_conn url" set url [ns_conn url] } - #my log "--i [self args]" + #my log "--i [self args] URL='$url'" # create connection context if necessary if {$package_id == 0} { array set "" [site_node::get_from_url -url $url] set package_id $(package_id) } + + # get locale; TODO at some time, we should get rid of the ad_conn init problem + if {[ns_conn isconnected]} { + # This can be called, before ad_conn is initialized. + # Since it is not possible to pass the user_id and ad_conn barfs + # when it tries to detect it, we use the catch and reset it later + if {[catch {set locale [lang::conn::locale -package_id $package_id]}]} { + set locale en_US + } + } else { + set locale [lang::system::locale -package_id $package_id] + } + if {![my isobject ::xo::cc]} { my create ::xo::cc \ -package_id $package_id \ [list -parameter_declaration $parameter] \ -user_id $user_id \ -actual_query $actual_query \ + -locale $locale \ -url $url - #my msg "--cc ::xo::cc created $url [::xo::cc serialize]" + #my log "--cc ::xo::cc created $url [::xo::cc serialize]" ::xo::cc destroy_on_cleanup } else { #my log "--cc ::xo::cc reused $url" ::xo::cc configure \ -package_id $package_id \ -url $url \ -actual_query $actual_query \ + -locale $locale \ [list -parameter_declaration $parameter] ::xo::cc set_user_id $user_id ::xo::cc process_query_parameter @@ -296,12 +312,16 @@ ConnectionContext instproc get_all_form_parameter {} { my instvar form_parameter - #array set form_parameter [ns_set array [ns_getform]] - foreach {att value} [ns_set array [ns_getform]] { - if {[info exists form_parameter($att)]} { - my set form_parameter_multiple($att) 1 + if {[ns_conn isconnected]} { + #array set form_parameter [ns_set array [ns_getform]] + foreach {att value} [ns_set array [ns_getform]] { + if {[info exists form_parameter($att)]} { + my set form_parameter_multiple($att) 1 + } + lappend form_parameter($att) $value } - lappend form_parameter($att) $value + } else { + array set form_parameter {} } } ConnectionContext instproc form_parameter {name {default ""}} {