diff --git a/src/rustbook/css.rs b/src/rustbook/css.rs index 7af95350c95..8b933fdd6dd 100644 --- a/src/rustbook/css.rs +++ b/src/rustbook/css.rs @@ -48,6 +48,7 @@ body { margin-left: auto; margin-right:auto; max-width: 750px; + padding-bottom: 50px; } .chapter { @@ -125,4 +126,12 @@ body { padding: 0; } +.left { + float: left; +} + +.right { + float: right; +} + "#; diff --git a/src/rustbook/javascript.rs b/src/rustbook/javascript.rs index eb4401e1835..d34887d2b08 100644 --- a/src/rustbook/javascript.rs +++ b/src/rustbook/javascript.rs @@ -38,6 +38,37 @@ document.addEventListener("DOMContentLoaded", function(event) { el.className = classes.join(' '); } } + + // The below code is used to add prev and next navigation links to the bottom + // of each of the sections. + // It works by extracting the current page based on the url and iterates over + // the menu links until it finds the menu item for the current page. We then + // create a copy of the preceeding and following menu links and add the + // correct css class and insert them into the bottom of the page. + var toc = document.getElementById('toc').getElementsByTagName('a'); + var href = document.location.pathname.split('/').pop(); + if (href === 'index.html' || href === '') { + href = 'README.html'; + } + + for (var i = 0; i < toc.length; i++) { + if (toc[i].attributes['href'].value === href) { + var nav = document.createElement('p'); + if (i > 0) { + var prevNode = toc[i-1].cloneNode(true); + prevNode.className = 'left'; + nav.appendChild(prevNode); + } + if (i < toc.length - 1) { + var nextNode = toc[i+1].cloneNode(true); + nextNode.className = 'right'; + nav.appendChild(nextNode); + } + document.getElementById('page').appendChild(nav); + break; + } + } + }); "#;