Index: openacs-4/packages/xowiki/tcl/link-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/link-procs.tcl,v
diff -u -r1.6 -r1.7
--- openacs-4/packages/xowiki/tcl/link-procs.tcl 26 Jul 2006 22:56:46 -0000 1.6
+++ openacs-4/packages/xowiki/tcl/link-procs.tcl 5 Aug 2006 20:55:02 -0000 1.7
@@ -12,12 +12,17 @@
# generic links
#
- Class create Link -parameter {type name lang stripped_name label folder_id package_id}
+ Class create Link -parameter {
+ type name lang stripped_name label
+ folder_id package_id
+ }
Link instproc init {} {
set class [self class]::[my type]
if {[my isclass $class]} {my class $class}
+ my log "--L link has class [my info class]"
}
Link instproc resolve {} {
+ #my log "--lookup of [my name]"
::Generic::CrItem lookup -name [my name] -parent_id [my folder_id]
}
Link instproc render_found {href label} {
@@ -32,21 +37,26 @@
#my log "--u resolve returns $item_id"
if {$item_id} {
$page lappend references [list $item_id [my type]]
- set href [::xowiki::Page pretty_link -package_id [my package_id] -lang [my lang] \
+ set href [::xowiki::Page pretty_link \
+ -package_id [my package_id] -lang [my lang] \
[my stripped_name]]
my render_found $href [my label]
} else {
my instvar package_id
$page incr unresolved_references
set object_type [[$page info class] set object_type]
- set name [my label]
- set href [export_vars -base [$package_id package_url] {{edit-new 1} object_type name}]
+ set name [my name]
+ set title [my label]
+ set href [export_vars -base [$package_id package_url] \
+ {{edit-new 1} object_type name title}]
my render_not_found $href [my label]
}
}
Link instproc lookup_xowiki_package_by_name {name start_package_id} {
- set ancestors [site_node::get_ancestors -node_id $start_package_id -element node_id]
+ set ancestors [site_node::get_ancestors \
+ -node_id $start_package_id \
+ -element node_id]
foreach a $ancestors {
set package_id [site_node::get_children -node_id $a -package_key xowiki \
-filters [list name $name] -element package_id]
@@ -79,15 +89,50 @@
set css_class "undefined"
set last_page_id [$page set item_id]
set object_type [[$page info class] set object_type]
- set link [export_vars -base [$package_id package_url] {{edit-new 1} object_type name last_page_id}]
+ set link [export_vars -base [$package_id package_url] \
+ {{edit-new 1} object_type name last_page_id}]
}
$page lappend lang_links \
"
"
return ""
}
+
+ #
+ # image links
+ #
+ Class create ::xowiki::Link::image -superclass ::xowiki::Link
+ ::xowiki::Link::image instproc render {} {
+ my instvar name package_id label
+ set page [my info parent]
+ set item_id [my resolve]
+ if {$item_id} {
+ set link [export_vars -base [::xowiki::Page pretty_link $name] {{m download}} ]
+ $page lappend references [list $item_id [my type]]
+ my render_found $link $label
+ } else {
+ $page incr unresolved_references
+ set last_page_id [$page set item_id]
+ set title $label
+ set link [export_vars -base [$package_id package_url] \
+ {{edit-new 1} {object_type ::xowiki::File}
+ {return_url "[$package_id url]"}
+ name title last_page_id}]
+ my render_not_found $link $label
+ }
+ }
+ ::xowiki::Link::image instproc render_found {link label} {
+ set label [string map [list ' "'"] $label]
+ return "
"
+ }
+ Class create ::xowiki::Link::file -superclass ::xowiki::Link::image
+ ::xowiki::Link::file instproc render_found {href label} {
+ return "$label"
+ }
+
#
# glossary links
#