Index: openacs-4/packages/xowiki/tcl/xowiki-portlet-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/Attic/xowiki-portlet-procs.tcl,v
diff -u -r1.11 -r1.12
--- openacs-4/packages/xowiki/tcl/xowiki-portlet-procs.tcl 6 Jan 2007 03:27:07 -0000 1.11
+++ openacs-4/packages/xowiki/tcl/xowiki-portlet-procs.tcl 7 Jan 2007 21:52:38 -0000 1.12
@@ -45,7 +45,9 @@
$title\
[next]
"
}
+}
+namespace eval ::xowiki::portlet {
#############################################################################
# rss button
#
@@ -61,6 +63,25 @@
my get_parameters
return ""
}
+
+ #############################################################################
+ # set-parameter "includelet"
+ #
+ Class create set-parameter \
+ -superclass ::xowiki::Portlet \
+ -parameter {{__decoration plain}}
+
+ set-parameter instproc render {} {
+ my get_parameters
+ set pl [my set __caller_parameters]
+ if {[llength $pl] % 2 == 1} {
+ error "no even number of parameters '$pl'"
+ }
+ foreach {att value} $pl {
+ ::xo::cc set_parameter $att $value
+ }
+ return "NO"
+ }
}
namespace eval ::xowiki::portlet {
@@ -520,6 +541,8 @@
$pages mixin add ::xo::OrderedComposite::IndexCompare
$pages orderby page_order
+ my set jsobjs ""
+
foreach o [$pages children] {
$o instvar page_order title page_id name title
@@ -529,7 +552,9 @@
regsub {^[^.]+[.]} $displayed_page_order "" displayed_page_order
}
set label "$displayed_page_order $title"
- set jsobj obj[set node($page_order) tmpNode[incr node_cnt]]
+ set id tmpNode[incr node_cnt]
+ set node($page_order) $id
+ set jsobj TocTree.objs\[$node_cnt\]
set page_name($node_cnt) $name
if {![regexp {^(.*)[.]([^.]+)} $page_order _ parent]} {set parent ""}
@@ -557,20 +582,173 @@
}
}
set parent_node [expr {[info exists node($parent)] ? $node($parent) : "root"}]
+ set refvar [expr {[my set ajax] ? "ref" : "href"}]
append js \
- "var $jsobj = {label: \"$label\", href:\"$href\"};" \
- "var $node($page_order) = new YAHOO.widget.TextNode($jsobj, $parent_node, $expand);\n"
+ "$jsobj = {label: \"$label\", id: \"$id\", $refvar: \"$href\", c: $node_cnt};" \
+ "var $node($page_order) = new YAHOO.widget.TextNode($jsobj, $parent_node, $expand);\n" \
+ ""
+ my lappend jsobjs $jsobj
+
}
set navigation(count) $node_cnt
my log "--COUNT=$node_cnt"
return $js
}
+ toc instproc ajax_tree {js_tree_cmds} {
+ return "
+
+
"
+ }
+
+ toc instproc tree {js_tree_cmds} {
+ return "
+
+
"
+ }
+
+
toc instproc render {} {
my initialize -parameter {
{-style ""}
{-open_page ""}
{-book_mode false}
+ {-ajax true}
{-expand_all false}
{-remove_levels 0}
}
@@ -583,26 +761,27 @@
::xowiki::Page requireCSS "/resources/ajaxhelper/yui/treeview/assets/${s}tree.css"
::xowiki::Page requireJS "/resources/ajaxhelper/yui/yahoo/yahoo.js"
::xowiki::Page requireJS "/resources/ajaxhelper/yui/event/event.js"
+ if {$ajax} {
+ ::xowiki::Page requireJS "/resources/ajaxhelper/yui/dom/dom.js" ;# ANIM
+ ::xowiki::Page requireJS "/resources/ajaxhelper/yui/connection/connection.js"
+ ::xowiki::Page requireJS "/resources/ajaxhelper/yui/animation/animation.js" ;# ANIM
+ }
::xowiki::Page requireJS "/resources/ajaxhelper/yui/treeview/treeview.js"
+ #::xowiki::Page requireJS "http://www.json.org/json.js" ;# for toJSONString
+
my set book_mode $book_mode
if {!$book_mode} {
- my set book_mode [[my set __including_page] exists __is_book_page]
+ ###### my set book_mode [[my set __including_page] exists __is_book_page]
+ } elseif $ajax {
+ #my log "--warn: cannot use bookmode with ajax, resetting ajax"
+ set ajax 0
}
+ my set ajax $ajax
+
set js_tree_cmds [my get_nodes $open_page $package_id $expand_all $remove_levels]
- return "
-
-
"
+ return [expr {$ajax ? [my ajax_tree $js_tree_cmds ] : [my tree $js_tree_cmds ]}]
}
#############################################################################