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'"
}