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 "RSS" } + + ############################################################################# + # 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 ]}] } #############################################################################