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: