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 -N -r1.472.2.24 -r1.472.2.25
--- openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 10 Nov 2014 19:48:28 -0000 1.472.2.24
+++ openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 12 Nov 2014 11:00:57 -0000 1.472.2.25
@@ -1698,6 +1698,7 @@
# in case, we can't link, flush the href
if {[my can_link $(item_id)] == 0} {
+ my references refused $(item_id)
[self]::link href ""
}
@@ -1723,8 +1724,31 @@
create-new return_url name title nls_language]
}
+ #
+ # Handling page references. Use like e.g.
+ #
+ # $page references clear
+ # $page references resolved [list $item_id [my type]]
+ # $page references get resolved
+ # $page references all
+ #
+ Page instproc references {submethod args} {
+ my instvar __references
+ switch $submethod {
+ clear {
+ set __references { unresolved {} resolved {} refused {} }
+ }
+ unresolved -
+ refused -
+ resolved {
+ return [dict lappend __references $submethod [lindex $args 0]]
+ }
+ get { return [dict $submethod $__references [lindex $args 0]] }
+ all { return $__references }
+ default {error "unknown submethod: $submethod"}
+ }
+ }
-
Page instproc anchor {arg} {
if {[catch {set l [my create_link [my unescape $arg]]} errorMsg]} {
return "
Error during processing of anchor ${arg}:
$errorMsg
"
@@ -1790,9 +1814,8 @@
if {[info exists $__v]} continue
[my info class] instvar $__v
}
- set __ignorelist [list __v __vars __l __ignorelist __varlist \
- __last_includelet __unresolved_references \
- text item_id content lang_links]
+ set __ignorelist [list __v __vars __l __ignorelist __varlist __references \
+ __last_includelet text item_id content lang_links]
# set variables current_* to ease personalization
set current_user [::xo::cc set untrusted_user_id]
@@ -2025,31 +2048,30 @@
#
# prepare references management
#
- my set references [list]
+ my references clear
if {[my exists __extra_references]} {
#
# xowiki content-flow uses extra references, e.g. to forms.
# TODO: provide a better interface for providing these kind of
# non-link references.
#
- my set references [my set __extra_references]
+ foreach ref [my set __extra_references] {
+ my references resolved $ref
+ }
my unset __extra_references
}
- #my msg "[my name] setting unresolved_references 0"
- my set unresolved_references 0
- my set __unresolved_references [list]
#
# get page content and care about reference management
#
set content [my render_content]
#
# record references and clear it
#
- #my msg "we have the content, update=$update_references, unresolved=[my set unresolved_references]"
- if {$update_references || [my set unresolved_references] > 0} {
- my references_update [lsort -unique [my set references]]
+ #my msg "we have the content, update=$update_references, unresolved=[my references get unresolved]"
+ if {$update_references || [llength [my references get unresolved]] > 0} {
+ my references_update [lsort -unique [my references get resolved]]
}
- my unset -nocomplain references
+ #my unset -nocomplain __references
#
# handle footer
#