summaryrefslogtreecommitdiffstats
path: root/theme/javascript/core/navigation.js
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2015-01-19 09:47:36 +0100
committerSamy Pessé <samypesse@gmail.com>2015-01-19 09:47:36 +0100
commitec586dd3cdf06e9567f5d3e4961022ddc3c94778 (patch)
treecc7825ab73110b4e6fbedee404427b052edffa17 /theme/javascript/core/navigation.js
parent80432161708357bdcf0e00533d9e6d327636dab6 (diff)
downloadgitbook-ec586dd3cdf06e9567f5d3e4961022ddc3c94778.zip
gitbook-ec586dd3cdf06e9567f5d3e4961022ddc3c94778.tar.gz
gitbook-ec586dd3cdf06e9567f5d3e4961022ddc3c94778.tar.bz2
Clear folder
Diffstat (limited to 'theme/javascript/core/navigation.js')
-rwxr-xr-xtheme/javascript/core/navigation.js151
1 files changed, 0 insertions, 151 deletions
diff --git a/theme/javascript/core/navigation.js b/theme/javascript/core/navigation.js
deleted file mode 100755
index f5d03df..0000000
--- a/theme/javascript/core/navigation.js
+++ /dev/null
@@ -1,151 +0,0 @@
-define([
- "jQuery",
- "utils/url",
- "core/events",
- "core/state",
- "core/progress",
- "core/loading",
- "core/search",
- "core/glossary"
-], function($, URL, events, state, progress, loading, search, glossary) {
- var prev, next;
-
- var usePushState = (typeof history.pushState !== "undefined");
-
- var handleNavigation = function(relativeUrl, push) {
- var url = URL.join(window.location.pathname, relativeUrl);
- console.log("navigate to ", url, "baseurl="+relativeUrl, "current="+window.location.pathname);
-
- if (!usePushState) {
- // Refresh the page to the new URL if pushState not supported
- location.href = relativeUrl;
- return
- }
-
- return loading.show($.get(url)
- .done(function (html) {
- // Push url to history
- if (push) history.pushState({ path: url }, null, url);
-
- // Replace html content
- html = html.replace( /<(\/?)(html|head|body)([^>]*)>/ig, function(a,b,c,d){
- return '<' + b + 'div' + ( b ? '' : ' data-element="' + c + '"' ) + d + '>';
- });
-
- var $page = $(html);
- var $pageHead = $page.find("[data-element=head]");
- var $pageBody = $page.find('.book');
-
- // Merge heads
- var headContent = $pageHead.html()
-
- $("head style").each(function() {
- headContent = headContent + this.outerHTML
- });
- $("head").html(headContent);
-
- // Merge body
- var bodyClass = $(".book").attr("class");
- var scrollPosition = $('.book-summary .summary').scrollTop();
- $pageBody.toggleClass("with-summary", $(".book").hasClass("with-summary"))
-
- $(".book").replaceWith($pageBody);
- $(".book").attr("class", bodyClass);
- $('.book-summary .summary').scrollTop(scrollPosition);
-
- // Update state
- state.update($("html"));
- // recover search keyword
- search.recover();
- preparePage();
- })
- .fail(function (e) {
- location.href = relativeUrl;
- }));
- };
-
- var updateNavigationPosition = function() {
- var bodyInnerWidth, pageWrapperWidth;
-
- bodyInnerWidth = parseInt($('.body-inner').css('width'), 10);
- pageWrapperWidth = parseInt($('.page-wrapper').css('width'), 10);
- $('.navigation-next').css('margin-right', (bodyInnerWidth - pageWrapperWidth) + 'px');
- };
-
- var preparePage = function() {
- var $pageWrapper = $(".book-body .page-wrapper");
-
- // Show progress
- progress.show();
-
- // Update navigation position
- updateNavigationPosition();
-
- // Set glossary items
- glossary.prepare();
-
- // Reset scroll
- $pageWrapper.scrollTop(0);
-
- // Focus on content
- $pageWrapper.focus();
-
- // Notify
- events.trigger("page.change");
- };
-
- var handlePagination = function (e) {
- e.stopPropagation();
- e.preventDefault();
-
- var url = $(this).attr('href');
- if (url) handleNavigation(url, true);
- };
-
- var goNext = function() {
- var url = $(".navigation-next").attr("href");
- if (url) handleNavigation(url, true);
- };
-
- var goPrev = function() {
- var url = $(".navigation-prev").attr("href");
- if (url) handleNavigation(url, true);
- };
-
-
-
- var init = function() {
- // Prevent cache so that using the back button works
- // See: http://stackoverflow.com/a/15805399/983070
- $.ajaxSetup({
- cache: false
- });
-
- // Recreate first page when the page loads.
- history.replaceState({ path: window.location.href }, '');
-
- // Back Button Hijacking :(
- window.onpopstate = function (event) {
- if (event.state === null) {
- return;
- }
- return handleNavigation(event.state.path, false);
- };
-
- $(document).on('click', ".navigation-prev", handlePagination);
- $(document).on('click', ".navigation-next", handlePagination);
- $(document).on('click', ".summary [data-path] a", handlePagination);
-
- $(window).resize(updateNavigationPosition);
-
- // Prepare current page
- preparePage();
- };
-
- return {
- init: init,
- goNext: goNext,
- goPrev: goPrev
- };
-});
-