From d5acc30de20298eb6ed7545e70484599c4d95867 Mon Sep 17 00:00:00 2001
From: Anika Henke <anika@selfthinker.org>
Date: Mon, 9 Apr 2012 17:36:33 +0100
Subject: [PATCH] rewrote and improved HTML for TOC

Attention: Template authors need to adjust their CSS!

Original structure:
div.toc >
  div#toc__header.tocheader.toctoggle > span#toc__toggle.toc_close|toc_open > span
  div#toc__inside > ul.toc > li.level1 > div.li > span.li > a.toc

New structure:
div#dw__toc.open|close >
  h3 > strong > span
  ul.toc > li.toc > div.li > a
---
 inc/html.php                    | 11 +++++------
 lib/scripts/page.js             | 16 ++++++++--------
 lib/tpl/default/design.css      | 33 ++++++++++++++++-----------------
 lib/tpl/default/print.css       |  2 +-
 lib/tpl/default/rtl.css         | 18 ++++++++++++------
 lib/tpl/dokuwiki/css/_toc.css   | 30 ++++++++++++++----------------
 lib/tpl/dokuwiki/css/design.css | 26 ++++++++++++--------------
 lib/tpl/dokuwiki/css/print.css  |  2 +-
 8 files changed, 69 insertions(+), 69 deletions(-)

diff --git a/inc/html.php b/inc/html.php
index f3f042ea1..787f96caa 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -1712,11 +1712,11 @@ function html_TOC($toc){
     if(!count($toc)) return '';
     global $lang;
     $out  = '<!-- TOC START -->'.DOKU_LF;
-    $out .= '<div class="toc">'.DOKU_LF;
-    $out .= '<div class="tocheader toctoggle" id="toc__header">';
+    $out .= '<div id="dw__toc">'.DOKU_LF;
+    $out .= '<h3>';
     $out .= $lang['toc'];
-    $out .= '</div>'.DOKU_LF;
-    $out .= '<div id="toc__inside">'.DOKU_LF;
+    $out .= '</h3>'.DOKU_LF;
+    $out .= '<div>'.DOKU_LF;
     $out .= html_buildlist($toc,'toc','html_list_toc','html_li_default',true);
     $out .= '</div>'.DOKU_LF.'</div>'.DOKU_LF;
     $out .= '<!-- TOC END -->'.DOKU_LF;
@@ -1733,8 +1733,7 @@ function html_list_toc($item){
         $link = $item['link'];
     }
 
-    return '<span class="li"><a href="'.$link.'" class="toc">'.
-        hsc($item['title']).'</a></span>';
+    return '<a href="'.$link.'">'.hsc($item['title']).'</a>';
 }
 
 /**
diff --git a/lib/scripts/page.js b/lib/scripts/page.js
index 5da4a9cc0..6e7d7faf7 100644
--- a/lib/scripts/page.js
+++ b/lib/scripts/page.js
@@ -96,26 +96,26 @@ dw_page = {
      * Adds the toggle switch to the TOC
      */
     initTocToggle: function() {
-        var $header, $clicky, $toc, $tocul, setClicky;
-        $header = jQuery('#toc__header');
+        var $wrapper, $header, $clicky, $toc, $tocul, setClicky;
+        $wrapper = jQuery('#dw__toc');
+        $header = jQuery('h3', $wrapper);
         if(!$header.length) {
             return;
         }
-        $toc = jQuery('#toc__inside');
-        $tocul = $toc.children('ul.toc');
+        $toc = jQuery('div', $wrapper).first();
+        $tocul = jQuery('ul', $toc);
 
         setClicky = function(hiding){
             if(hiding){
                 $clicky.html('<span>+</span>');
-                $clicky[0].className = 'toc_open';
+                $wrapper.addClass('close').removeClass('open');
             }else{
                 $clicky.html('<span>&minus;</span>');
-                $clicky[0].className = 'toc_close';
+                $wrapper.addClass('open').removeClass('close');
             }
         };
 
-        $clicky = jQuery(document.createElement('span'))
-                        .attr('id','toc__toggle');
+        $clicky = jQuery(document.createElement('strong'));
         $header.css('cursor','pointer')
                .click(function () {
                     var hidden;
diff --git a/lib/tpl/default/design.css b/lib/tpl/default/design.css
index 9d2cc1844..48438527e 100644
--- a/lib/tpl/default/design.css
+++ b/lib/tpl/default/design.css
@@ -547,7 +547,7 @@ div.dokuwiki table.inline td {
 
 /* ---------- table of contents ------------------- */
 
-div.dokuwiki div.toc {
+div.dokuwiki #dw__toc {
   margin: 1.2em 0 0 2em;
   float: right;
   width: 200px;
@@ -555,46 +555,45 @@ div.dokuwiki div.toc {
   clear: both;
 }
 
-div.dokuwiki div.tocheader {
+div.dokuwiki #dw__toc h3 {
   border: 1px solid __border__;
   background-color: __background_alt__;
   text-align: left;
   font-weight: bold;
   padding: 3px;
-  margin-bottom: 2px;
+  margin: 0 0 2px 0;
+  font-size: 1em;
 }
 
-div.dokuwiki span.toc_open,
-div.dokuwiki span.toc_close {
+div.dokuwiki #dw__toc h3 strong {
     border: 0.4em solid __background_alt__;
     float: right;
     display: block;
     margin: 0.4em 3px 0 0;
 }
 
-div.dokuwiki span.toc_open span,
-div.dokuwiki span.toc_close span {
+div.dokuwiki #dw__toc h3 strong span {
     display: none;
 }
 
-div.dokuwiki span.toc_open {
+div.dokuwiki #dw__toc.close h3 strong {
     margin-top: 0.4em;
     border-top: 0.4em solid __text__;
 }
 
-div.dokuwiki span.toc_close {
+div.dokuwiki #dw__toc.open h3 strong {
     margin-top: 0;
     border-bottom: 0.4em solid __text__;
 }
 
-div.dokuwiki #toc__inside {
+div.dokuwiki #dw__toc > div {
   border: 1px solid __border__;
   background-color: __background__;
   text-align: left;
   padding: 0.5em 0 0.7em 0;
 }
 
-div.dokuwiki ul.toc {
+div.dokuwiki #dw__toc ul {
   list-style-type: none;
   list-style-image: none;
   line-height: 1.2em;
@@ -602,23 +601,23 @@ div.dokuwiki ul.toc {
   margin: 0;
 }
 
-div.dokuwiki ul.toc li {
+div.dokuwiki #dw__toc ul li {
   background: transparent url(images/tocdot2.gif) 0 0.6em no-repeat;
   padding-left: 0.4em;
 }
 
-div.dokuwiki ul.toc li.clear {
+div.dokuwiki #dw__toc ul li.clear {
   background-image: none;
   padding-left: 0.4em;
 }
 
-div.dokuwiki a.toc:link,
-div.dokuwiki a.toc:visited {
+div.dokuwiki #dw__toc a:link,
+div.dokuwiki #dw__toc a:visited {
   color: __extern__;
 }
 
-div.dokuwiki a.toc:hover,
-div.dokuwiki a.toc:active {
+div.dokuwiki #dw__toc a:hover,
+div.dokuwiki #dw__toc a:active {
   color: __text__;
 }
 
diff --git a/lib/tpl/default/print.css b/lib/tpl/default/print.css
index 4387dc4bf..f83e8c97c 100644
--- a/lib/tpl/default/print.css
+++ b/lib/tpl/default/print.css
@@ -224,5 +224,5 @@ table.inline td {
   border: 1px solid #000000;
 }
 
-.toc, .footerinc, .header, .bar, .user { display: none; }
+#dw__toc, .footerinc, .header, .bar, .user { display: none; }
 
diff --git a/lib/tpl/default/rtl.css b/lib/tpl/default/rtl.css
index 82c85839b..32a8ddb6d 100644
--- a/lib/tpl/default/rtl.css
+++ b/lib/tpl/default/rtl.css
@@ -89,30 +89,36 @@ div.dokuwiki div.level4 { margin-left: 0px; margin-right: 63px; }
 div.dokuwiki div.level5 { margin-left: 0px; margin-right: 83px; }
 
 /* TOC control */
-div.dokuwiki div.toc {
+div.dokuwiki #dw__toc {
   float: left;
+  margin: 1.2em 2em 0 0;
 }
 
-div.dokuwiki div.tocheader {
+div.dokuwiki #dw__toc h3 {
   text-align: right;
 }
 
-div.dokuwiki #toc__inside {
+div.dokuwiki #dw__toc h3 strong {
+    float: left;
+    margin: 0.4em 0 0 3px;
+}
+
+div.dokuwiki #dw__toc > div {
   text-align: right;
 }
 
-div.dokuwiki ul.toc {
+div.dokuwiki #dw__toc ul {
   padding: 0;
   padding-right: 1em;
 }
 
-div.dokuwiki ul.toc li {
+div.dokuwiki #dw__toc ul li {
   background-position: right 0.6em;
   padding-right: 0.4em;
   direction: rtl;
 }
 
-div.dokuwiki ul.toc li.clear {
+div.dokuwiki #dw__toc ul li.clear {
   padding-right: 0.4em;
 }
 
diff --git a/lib/tpl/dokuwiki/css/_toc.css b/lib/tpl/dokuwiki/css/_toc.css
index f89bce6c1..e62bb0a7a 100644
--- a/lib/tpl/dokuwiki/css/_toc.css
+++ b/lib/tpl/dokuwiki/css/_toc.css
@@ -7,68 +7,66 @@
 ********************************************************************/
 
 /* toc container */
-.dokuwiki div.toc {
+#dw__toc {
     float: right;
     margin: 0 0 1.4em 1.4em;
     width: 12em;
     background-color: __background_alt__;
     color: inherit;
 }
-[dir=rtl] .dokuwiki div.toc {
+[dir=rtl] #dw__toc {
     float: left;
     margin: 0 1.4em 1.4em 0;
 }
 
 /*____________ toc header ____________*/
 
-.dokuwiki div.tocheader {
+#dw__toc h3 {
     padding: .2em .5em;
     font-weight: bold;
 }
 
-.dokuwiki .toc span.toc_open,
-.dokuwiki .toc span.toc_close {
+#dw__toc h3 strong {
     float: right;
     margin: 0 .2em;
 }
-[dir=rtl] .dokuwiki .toc span.toc_open,
-[dir=rtl] .dokuwiki .toc span.toc_close {
+[dir=rtl] #dw__toc h3 strong {
     float: left;
 }
 
 /*____________ toc list ____________*/
 
-.dokuwiki #toc__inside {
+#dw__toc > div {
     padding: .2em .5em;
 }
-.dokuwiki #toc__inside ul {
+#dw__toc ul {
     padding: 0;
     margin: 0;
 }
-.dokuwiki #toc__inside ul li {
+#dw__toc ul li {
     list-style: none;
     padding: 0;
     margin: 0;
     line-height: 1.1;
 }
-.dokuwiki #toc__inside ul li div.li {
+#dw__toc ul li div.li {
     padding: .15em 0;
 }
-.dokuwiki #toc__inside ul ul {
+#dw__toc ul ul {
     padding-left: 1em;
 }
-[dir=rtl] .dokuwiki #toc__inside ul ul {
+[dir=rtl] #dw__toc ul ul {
     padding-left: 0;
     padding-right: 1em;
 }
-.dokuwiki #toc__inside ul ul li {
+#dw__toc ul ul li {
 }
-.dokuwiki #toc__inside ul li a {
+#dw__toc ul li a {
 }
 
 /* in case of toc list jumping one level
   (e.g. if heading level 3 follows directly after heading level 1) */
-.dokuwiki #toc__inside ul li.clear {
+#dw__toc ul li.clear {
 }
 
 
diff --git a/lib/tpl/dokuwiki/css/design.css b/lib/tpl/dokuwiki/css/design.css
index f73985ed7..8ebeca6da 100644
--- a/lib/tpl/dokuwiki/css/design.css
+++ b/lib/tpl/dokuwiki/css/design.css
@@ -392,60 +392,58 @@
 
 /*____________ changes to _toc ____________*/
 
-.dokuwiki div.toc {
+#dw__toc {
     margin:  -2em -2em .5em 1.4em;
     width: __sidebar_width__;
     border-left: 1px solid __border__;
     background: __background__;
     color: inherit;
 }
-[dir=rtl] .dokuwiki div.toc {
+[dir=rtl] #dw__toc {
     margin: -2em 1.4em .5em -2em;
     border-left-width: 0;
     border-right: 1px solid __border__;
 }
 
-.dokuwiki div.tocheader {
+#dw__toc h3 {
     padding: .5em 1em;
     margin-bottom: 0;
     font-size: .875em;
     letter-spacing: .1em;
 }
 
-.dokuwiki .toc span.toc_open,
-.dokuwiki .toc span.toc_close {
+#dw__toc h3 strong {
     background: transparent url(images/toc-arrows.png) 0 0;
     width: 8px;
     height: 5px;
     margin: .4em 0 0;
 }
-.dokuwiki .toc span.toc_open {
+#dw__toc.close strong {
     background-position: 0 -5px;
 }
 
-.dokuwiki .toc span.toc_open span,
-.dokuwiki .toc span.toc_close span {
+#dw__toc strong span {
     display: none;
 }
 
 
-.dokuwiki #toc__inside {
+#dw__toc > div {
     font-size: 0.875em;
     padding: .5em 1em 1em;
 }
-.dokuwiki #toc__inside ul {
+#dw__toc ul {
     padding: 0 0 0 1.2em;
 }
-[dir=rtl] .dokuwiki #toc__inside ul {
+[dir=rtl] #dw__toc ul {
     padding: 0 1.5em 0 0;
 }
-.dokuwiki #toc__inside ul li {
+#dw__toc ul li {
     list-style-image: url(images/toc-bullet.png);
 }
-.dokuwiki #toc__inside ul li.clear {
+#dw__toc ul li.clear {
     list-style: none;
 }
-.dokuwiki #toc__inside ul li div.li {
+#dw__toc ul li div.li {
     padding: .2em 0;
 }
 
diff --git a/lib/tpl/dokuwiki/css/print.css b/lib/tpl/dokuwiki/css/print.css
index f4f81d741..f6bf64dd9 100644
--- a/lib/tpl/dokuwiki/css/print.css
+++ b/lib/tpl/dokuwiki/css/print.css
@@ -21,7 +21,7 @@ div.error,
 #dokuwiki__header .tools,
 #dokuwiki__aside,
 .dokuwiki .breadcrumbs,
-.dokuwiki .toc,
+#dw__toc,
 .dokuwiki .secedit,
 #dokuwiki__pagetools,
 #dokuwiki__footer {
-- 
GitLab