Index: openacs-4/packages/xowiki/xowiki.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/xowiki.info,v diff -u -r1.92 -r1.93 --- openacs-4/packages/xowiki/xowiki.info 9 Sep 2008 12:47:22 -0000 1.92 +++ openacs-4/packages/xowiki/xowiki.info 12 Sep 2008 11:21:06 -0000 1.93 @@ -59,7 +59,7 @@ - + Index: openacs-4/packages/xowiki/tcl/package-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/package-procs.tcl,v diff -u -r1.127 -r1.128 --- openacs-4/packages/xowiki/tcl/package-procs.tcl 11 Sep 2008 13:47:14 -0000 1.127 +++ openacs-4/packages/xowiki/tcl/package-procs.tcl 12 Sep 2008 11:21:06 -0000 1.128 @@ -178,7 +178,7 @@ if {![regexp {/?..:} $pp]} { my log "Error: Name of parameter page '$pp' of package [my id] must contain a language prefix" } else { - set page [my resolve_page_name $pp] + set page [::xo::cc cache [list [self] resolve_page_name $pp]] if {$page eq ""} { my log "Error: Could not resolve parameter page '$pp' of package [my id]." } @@ -198,7 +198,31 @@ return $value } - Package instproc resolve_page_name {{-lang} page_name} { + Package instproc resolve_page_name {page_name} { + # + # This is a very simple version for resolving page names in an + # package instance. It can be called either a plain page name + # with a language prefix (as stored in the CR) for the current + # package, or with a path (starting with a //) pointing to an + # xowiki instance followed by the page name. + # + # Examples + # ... resolve_page_name en:index + # ... resolve_page_name //xowiki/en:somepage + # + # The method returns either the page object or empty (""). + # + set package_id [my id] + if {[regexp {^/(/[^/]+/)(.*)$} $page_name _ url page_name]} { + array set "" [site_node::get_from_url -url $url] + set package_id $(package_id) + ::xowiki::Package require $package_id + } + #my log "final resolve $package_id '$page_name'" + return [$package_id resolve_request -simple true -path $page_name method_var] + } + + Package instproc resolve_page_name_and_init_context {{-lang} page_name} { set page "" # # take a local copy of the package_id, since it is possible Index: openacs-4/packages/xowiki/tcl/xowiki-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/xowiki-procs.tcl,v diff -u -r1.274 -r1.275 --- openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 11 Sep 2008 11:14:52 -0000 1.274 +++ openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 12 Sep 2008 11:21:07 -0000 1.275 @@ -768,7 +768,7 @@ the language prefix of the including page is used. } { if {$page_name ne ""} { - set page [[my package_id] resolve_page_name -lang [my lang] $page_name] + set page [[my package_id] resolve_page_name_and_init_context -lang [my lang] $page_name] if {$page eq ""} { error "Cannot find page '$page_name'" }