Index: openacs-4/packages/xowiki/tcl/includelet-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/includelet-procs.tcl,v diff -u -N -r1.239.2.82 -r1.239.2.83 --- openacs-4/packages/xowiki/tcl/includelet-procs.tcl 10 Jan 2022 14:41:37 -0000 1.239.2.82 +++ openacs-4/packages/xowiki/tcl/includelet-procs.tcl 3 Feb 2022 18:26:22 -0000 1.239.2.83 @@ -2268,6 +2268,7 @@ {-range ""} {-allow_reorder ""} {-include_in_foldertree "true"} + {-CSSclass_top_ul ""} }} id } -ad_doc { @@ -2292,7 +2293,7 @@ @param range @param allow_reorder @param include_in_foldertree - + @param CSSclass_top_ul CSS class for top-level UL element } #"select page_id, page_order, name, title, \ @@ -2660,7 +2661,7 @@ # # Build a reduced toc tree based on pure HTML (no JavaScript or - # ajax involved). If an open_page is specified, produce an as + # AJAX involved). If an open_page is specified, produce an as # small as possible tree and omit all non-visible nodes. # if {$open_page ne ""} { @@ -2682,7 +2683,7 @@ #set js "\nYAHOO.xo_page_order_region.DDApp.package_url = '[::$package_id package_url]';" set HTML [$tree render -style listdnd -context [list min_level $min_level]] } else { - set HTML [$tree render -style list] + set HTML [$tree render -style list -properties ${:render_properties}] } return $HTML @@ -2712,6 +2713,7 @@ :get_parameters array set :navigation {count 0 position 0 current ""} set list_mode 0 + dict set :render_properties CSSclass_top_ul $CSSclass_top_ul # # If there is no renderer specified, determine the renderer from @@ -2724,7 +2726,16 @@ "folders" {set style "folders"; set renderer yuitree} "list" {set style ""; set list_mode 1; set renderer list} "none" {set style ""; set renderer none} - "default" {set style "yuitree"; set renderer yuitree} + "yuitree" {set renderer "yuitree"} + "default" {set style ""; set list_mode 1; set renderer list + # + # Fall back to "xowiki-tree" for "CSSclass_top_ul" only when + # value was not specified. + # + if {$CSSclass_top_ul eq ""} { + dict set :render_properties CSSclass_top_ul xowiki-tree + } + } } set :use_tree_renderer 0 } else { Index: openacs-4/packages/xowiki/tcl/tree-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/tree-procs.tcl,v diff -u -N -r1.23.2.10 -r1.23.2.11 --- openacs-4/packages/xowiki/tcl/tree-procs.tcl 8 Apr 2021 20:11:09 -0000 1.23.2.10 +++ openacs-4/packages/xowiki/tcl/tree-procs.tcl 3 Feb 2022 18:26:22 -0000 1.23.2.11 @@ -72,12 +72,18 @@ } } Tree instproc open_tree {} {;} - Tree instproc render {{-style mktree} {-js ""} {-context ""}} { + + Tree instproc render { + {-style mktree} + {-js ""} + {-context ""} + {-properties ""} + } { set renderer [[self class] renderer $style] $renderer set context $context $renderer set js $js TreeNode instmixin $renderer - set content [$renderer render [self]] + set content [$renderer render -properties $properties [self]] TreeNode instmixin "" if {[$renderer set js] ne ""} { template::add_body_script -script [$renderer set js] @@ -204,7 +210,7 @@ TreeRenderer instproc include_head_entries {args} { # to be overloaded } - TreeRenderer instproc render {tree} { + TreeRenderer instproc render {{-properties ""} tree} { set content "" foreach c [$tree children] {append content [$c render] \n} return $content @@ -236,11 +242,16 @@ TreeRenderer create TreeRenderer=list TreeRenderer=list proc include_head_entries {args} { # In the general case, we have nothing to include. More - # specialized renders will provide their head entries. + # specialized renders could provide their head entries. } - TreeRenderer=list proc render {tree} { - return "" + TreeRenderer=list proc render {{-properties ""} tree} { + set ul_class [expr {[dict exists $properties CSSclass_top_ul] + && [dict get $properties CSSclass_top_ul] ne "" + ? "class='[dict get $properties CSSclass_top_ul]' " + : ""}] + return "" } + TreeRenderer=list instproc render_item {{-highlight:boolean false} item} { $item instvar title href set prefix [$item set prefix] @@ -301,7 +312,7 @@ #::xo::Page requireJS "/resources/acs-templating/mktree.js" template::add_body_script -src "/resources/acs-templating/mktree.js" } - TreeRenderer=mktree proc render {tree} { + TreeRenderer=mktree proc render {{-properties ""} tree} { return "" } @@ -316,7 +327,7 @@ TreeRenderer=samplemenu proc include_head_entries {args} { # add your CSS here... } - TreeRenderer=samplemenu proc render {tree} { + TreeRenderer=samplemenu proc render {{-properties ""} tree} { return "" } @@ -368,7 +379,7 @@ return "
  • $entry $content" } - TreeRenderer=bootstrap3horizontal proc render {tree} { + TreeRenderer=bootstrap3horizontal proc render {{-properties ""} tree} { set name [$tree name] if {$name ne ""} { set navbarLabel [subst { @@ -420,7 +431,7 @@ } ::xo::Page requireJS urn:ad:js:yui2:treeview/treeview-min } - TreeRenderer=yuitree proc render {tree} { + TreeRenderer=yuitree proc render {{-properties ""} tree} { return "
    " } @@ -449,7 +460,7 @@ -script "listdnd_${event}_handler(event);" } - TreeRenderer=listdnd proc render {tree} { + TreeRenderer=listdnd proc render {{-properties ""} tree} { #:log "=== TreeRenderer=listdnd render $tree" # # Do we allow reorder on the top-level? @@ -550,7 +561,7 @@ security::csp::require script-src cdnjs.cloudflare.com } - TreeRenderer=bootstrap3 proc render {tree} { + TreeRenderer=bootstrap3 proc render {{-properties ""} tree} { set jsTree [string trimright [next] ", \n"] set id [$tree id] set options "" @@ -601,7 +612,7 @@ # Bootstrap3 tree renderer with folder structure #-------------------------------------------------------------------------------- TreeRenderer create TreeRenderer=bootstrap3-folders -superclass TreeRenderer=bootstrap3 - TreeRenderer=bootstrap3-folders proc render {tree} { + TreeRenderer=bootstrap3-folders proc render {{-properties ""} tree} { set jsTree [string trimright [next] ", \n"] set id [$tree id] set options "" Index: openacs-4/packages/xowiki/www/resources/xowiki.css =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/www/resources/xowiki.css,v diff -u -N -r1.64.2.17 -r1.64.2.18 --- openacs-4/packages/xowiki/www/resources/xowiki.css 18 Jan 2021 14:11:28 -0000 1.64.2.17 +++ openacs-4/packages/xowiki/www/resources/xowiki.css 3 Feb 2022 18:26:22 -0000 1.64.2.18 @@ -311,8 +311,8 @@ display: none; } -/* - * (Vertical) Reorder box +/* + * (Vertical) Reorder box */ div.reorder_box { @@ -333,7 +333,7 @@ color: #aaa; } -/* +/* * Book styling */ div.xowiki-content div.book ul.page_order_region { @@ -383,7 +383,62 @@ border-bottom: solid 4px #428bca; } +div.xowiki-content .xowiki-tree, +div.xowiki-content .xowiki-tree ul { + margin:0 0 0 1em; /* indentation */ + padding:0; + list-style:none; + color:#369; + position:relative; +} +div.xowiki-content div.toc ul.xowiki-tree { + padding: 0px; +} +div.xowiki-content .xowiki-tree ul { + margin-left:.5em; /* (indentation/2) */ +} + +div.xowiki-content .xowiki-tree:before, +div.xowiki-content .xowiki-tree ul:before { + content:""; + display:block; + width:0; + position:absolute; + top:0; + bottom:0; + left:0; + border-left:1px solid; +} + +div.xowiki-content .xowiki-tree li { + margin:0; + padding:0 1.5em; /* indentation + .5em */ + line-height:1.5em; /* default list item's `line-height` */ + /*font-size: smaller;*/ + position:relative; +} + +div.xowiki-content .xowiki-tree li:before { + content:""; + display:block; + width:10px; /* same with indentation */ + height:0; + border-top:1px solid; + margin-top:-1px; /* border top width */ + position:absolute; + top:0.75em; /* (line-height/2) */ + left:0; +} + +div.xowiki-content .xowiki-tree li:last-child:before { + background:white; /* same with body background */ + height:auto; + top:0.75em; /* (line-height/2) */ + bottom:0; +} + + /* Handling hidden field-sets: