From 3940c519db432ec22e8c587504d86191631f9bfb Mon Sep 17 00:00:00 2001
From: Mark <mc.prins@gmail.com>
Date: Wed, 8 Jan 2014 11:56:06 +0100
Subject: [PATCH] use nav+ul element for "you are here"

As described in the common idioms of the HTML5 spec, mark up navigation as a list inside a `nav` element for better semantics and accessibility.

see:

  * http://www.w3.org/html/wg/drafts/html/master/common-idioms.html#rel-up
  * http://lists.w3.org/Archives/Public/public-html/2013Nov/thread.html#msg6
  * https://dl.dropboxusercontent.com/u/377471/breadcrumb.html

for discussion and background.
---
 inc/template.php                    | 41 +++++++++++++++++++----------
 lib/tpl/dokuwiki/css/mixins.less    | 15 ++++++++++-
 lib/tpl/dokuwiki/css/structure.less | 15 +++++++++++
 3 files changed, 56 insertions(+), 15 deletions(-)

diff --git a/inc/template.php b/inc/template.php
index 3bccb0bd8..1fad18271 100644
--- a/inc/template.php
+++ b/inc/template.php
@@ -893,12 +893,12 @@ function tpl_breadcrumbs($sep = '•') {
  * @author Nigel McNie <oracle.shinoda@gmail.com>
  * @author Sean Coates <sean@caedmon.net>
  * @author <fredrik@averpil.com>
- * @todo   May behave strangely in RTL languages
+ * @author Mark C. Prins <mprins@users.sf.net>
  *
  * @param string $sep Separator between entries
  * @return bool
  */
-function tpl_youarehere($sep = ' » ') {
+function tpl_youarehere($sep = ' → ') {
     global $conf;
     global $ID;
     global $lang;
@@ -909,12 +909,15 @@ function tpl_youarehere($sep = ' » ') {
     $parts = explode(':', $ID);
     $count = count($parts);
 
-    echo '<span class="bchead">'.$lang['youarehere'].' </span>';
-
+    echo '<nav><h2 class="bchead">'.$lang['youarehere'].': </h2>';
+    echo '<ul class="navlist">';
     // always print the startpage
-    echo '<span class="home">';
-    tpl_pagelink(':'.$conf['start']);
-    echo '</span>';
+    if ($count > 1) {
+        echo '<li class="home">'.html_wikilink(':'.$conf['start']).$sep.'</li>';
+    } else {
+        echo '<li class="home">'.$conf['start'].'</li>';
+    }
+
 
     // print intermediate namespace links
     $part = '';
@@ -923,18 +926,28 @@ function tpl_youarehere($sep = ' » ') {
         $page = $part;
         if($page == $conf['start']) continue; // Skip startpage
 
-        // output
-        echo $sep;
-        tpl_pagelink($page);
+        echo '<li>'.html_wikilink($page);
+        if ($i < $count - 2) {
+            echo $sep.'</li>';
+        } else {
+            echo '</li>';
+        }
     }
 
     // print current page, skipping start page, skipping for namespace index
     resolve_pageid('', $page, $exists);
-    if(isset($page) && $page == $part.$parts[$i]) return true;
+    if(isset($page) && $page == $part.$parts[$i]) {
+        echo '</li></ul></nav>';
+        return true;
+    }
+
     $page = $part.$parts[$i];
-    if($page == $conf['start']) return true;
-    echo $sep;
-    tpl_pagelink($page);
+    if($page == $conf['start']) {
+        echo '</li></ul></nav>';
+        return true;
+    }
+
+    echo $sep.'</li><li class="curid">'.noNSorNS($page).'</li></ul></nav>';
     return true;
 }
 
diff --git a/lib/tpl/dokuwiki/css/mixins.less b/lib/tpl/dokuwiki/css/mixins.less
index a88767e97..4b15bb600 100644
--- a/lib/tpl/dokuwiki/css/mixins.less
+++ b/lib/tpl/dokuwiki/css/mixins.less
@@ -7,4 +7,17 @@
     background: -o-linear-gradient(     @declaration);
     background: -ms-linear-gradient(    @declaration);
     background: linear-gradient(        @declaration);
-}
\ No newline at end of file
+}
+
+/**
+ * provides inline list styling.
+ */
+.inline-list(){
+    list-style-type: none;
+    
+    & li {
+        margin: 0;
+        padding: 0;
+        display: inline;
+    }
+}
diff --git a/lib/tpl/dokuwiki/css/structure.less b/lib/tpl/dokuwiki/css/structure.less
index 3ea2f83eb..f7dea3948 100644
--- a/lib/tpl/dokuwiki/css/structure.less
+++ b/lib/tpl/dokuwiki/css/structure.less
@@ -87,3 +87,18 @@ body {
 #dokuwiki__footer {
     clear: both;
 }
+
+.dokuwiki .navlist {
+    display: inline;
+    padding: 0;
+    .inline-list;
+}
+
+.bchead {
+    display: inline;
+    font-size: inherit;
+}
+
+.curid {
+    font-weight: bold;
+}
-- 
GitLab