You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by ni...@apache.org on 2015/04/17 18:05:58 UTC

[38/50] [abbrv] zest-qi4j git commit: WebSite: build the version switcher from ../versions.json

WebSite: build the version switcher from ../versions.json

This means that we don't have to update "old" documentation to add new
versions to the switcher, only enhance the versions.json file.


Project: http://git-wip-us.apache.org/repos/asf/zest-qi4j/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-qi4j/commit/055d96c5
Tree: http://git-wip-us.apache.org/repos/asf/zest-qi4j/tree/055d96c5
Diff: http://git-wip-us.apache.org/repos/asf/zest-qi4j/diff/055d96c5

Branch: refs/heads/master
Commit: 055d96c505eb96e8ce2e7e9fbe6dba73046a9483
Parents: fbdec84
Author: Paul Merlin <pa...@nosphere.org>
Authored: Sun Mar 24 12:45:05 2013 +0100
Committer: Paul Merlin <pa...@nosphere.org>
Committed: Sun Mar 24 12:45:05 2013 +0100

----------------------------------------------------------------------
 manual/src/docs/website/xsl/head.xsl            |   4 -
 .../src/resources/js/progressive-enhancement.js |  97 ++++----
 manual/src/resources/js/versionswitcher.js      | 222 -------------------
 3 files changed, 45 insertions(+), 278 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/055d96c5/manual/src/docs/website/xsl/head.xsl
----------------------------------------------------------------------
diff --git a/manual/src/docs/website/xsl/head.xsl b/manual/src/docs/website/xsl/head.xsl
index 7ddc17c..4d2c06c 100644
--- a/manual/src/docs/website/xsl/head.xsl
+++ b/manual/src/docs/website/xsl/head.xsl
@@ -49,10 +49,6 @@
 
 <script type="text/javascript" src="js/tablestyler.js"></script>
 
-<!-- Version Switcher -->
-
-<script type="text/javascript" src="js/versionswitcher.js"></script>
-
 <!-- Qi4j WebSite Progressive Enhancement -->
 
 <link href="css/progressive-enhancement.css" rel="stylesheet" type="text/css" />

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/055d96c5/manual/src/resources/js/progressive-enhancement.js
----------------------------------------------------------------------
diff --git a/manual/src/resources/js/progressive-enhancement.js b/manual/src/resources/js/progressive-enhancement.js
index fb528ee..897e543 100644
--- a/manual/src/resources/js/progressive-enhancement.js
+++ b/manual/src/resources/js/progressive-enhancement.js
@@ -48,55 +48,45 @@ $( document ).ready( function($){
     $("a.ulink[href^='https:']").attr('target','_blank');
 
     // Add links to different versions
-    var versions =
+    $.getJSON( "../versions.json", function( versions )
     {
-        'develop':
+        // alert( JSON.stringify( versions ) );
+        var currentPathFragment = window.location.href.substring( 0, window.location.href.lastIndexOf( '/' ) );
+        currentPathFragment = currentPathFragment.substring( currentPathFragment.lastIndexOf( '/' ) + 1 );
+        var currentVersion = Object.keys( versions ).filter( function( key ) { return versions[ key ] === currentPathFragment } )[ 0 ];
+        // alert( "Current version is " + currentVersion + "\nCurrent path fragment is: " + currentPathFragment );
+        if( currentVersion )
         {
-            'url': 'http://qi4j.org/develop',
-            'relpath': '../develop'
-        },
-        'latest':
-        {
-            'url': 'http://qi4j.org/latest',
-            'relpath': '../latest'
-        },
-        '<=1.4.x':
-        {
-            'url': 'http://qi4j.org/1.4',
-            'relpath': '../1.4'
-        }
-    };
-    function endsWith(str, suffix) {
-            return str.indexOf(suffix, str.length - suffix.length) !== -1;
-    }
-    var selected = "latest";
-    var stripedHref = window.location.href.substring( 0, window.location.href.lastIndexOf('/') );
-    if ( endsWith( stripedHref, 'develop' ) )
-        selected = "develop";
-    else if ( endsWith( stripedHref, 'latest' ) )
-        selected = "latest";
-    else if ( endsWith( stripedHref, '1.4' ) )
-        selected = "<=1.4.x";
-    // --
-    var switcher_html ='<p style="margin-top:2em; text-align: center"><select style="font-size: 0.5em">';
-    var ifselect = function( candidate ) {
-        return candidate == selected ? "selected=\"selected\"" : "";
-    }
-    for( var version in versions )
-    {
-        switcher_html += '<option value="' + version + '" ' + ifselect( version ) + '>' + version + '</option>';
-    }
-    switcher_html += '</select></p>' ;
-    $( "div.logo" ).append( switcher_html );
-    $( "div.logo select" ).change( function()
-    {
-        if( window.location.hostname == "qi4j.org" || window.location.hostname == "www.qi4j.org" )
-        { // Loaded from qi4j.org
-            window.location = versions[ $( this ).val() ].relpath;
+            var switcher_html ='<p style="margin-top:2em; text-align: center"><select style="font-size: 0.5em">';    
+            var ifselect = function( candidate )
+            {
+                return candidate == currentVersion ? "selected=\"selected\"" : "";
+            }
+            $.each( versions, function( displayName, pathFragment )
+            {
+                switcher_html += '<option value="' + displayName + '" ' + ifselect( displayName ) + '>' + displayName + '</option>';
+            } );
+            switcher_html += '</select></p>';
+            $( "div.logo" ).append( switcher_html );
+            var toURL = function( displayName )
+            {
+                if( window.location.hostname == "qi4j.org" || window.location.hostname == "www.qi4j.org" )
+                {
+                    return "../" + versions[ displayName ];
+                }
+                else
+                {
+                    return "http://qi4j.org/" + versions[ displayName ];
+                }
+            }
+            $( "div.logo select" ).change( function()
+            {
+                window.location = toURL( $( this ).val() );
+            } );
         }
         else
-        { // Loaded from elsewhere
-            window.location = versions[ $( this ).val() ].url;
+        {
+            console.log( "Documentation loaded locally? No version switcher" );
         }
     } );
 
@@ -119,13 +109,16 @@ $( document ).ready( function($){
 
     // Section specific enhancements
     var $section = $( 'body > div.section' );
-    var section_title = $section.attr( 'title' ).trim();
-    switch( section_title ) {
-        case "Glossary":
-            glossary( $section );
-            break;
-        default:
-            break;
+    if( $section.attr( 'title' ) )
+    {
+        var section_title = $section.attr( 'title' ).trim();
+        switch( section_title ) {
+            case "Glossary":
+                glossary( $section );
+                break;
+            default:
+                break;
+        }
     }
 
 } );

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/055d96c5/manual/src/resources/js/versionswitcher.js
----------------------------------------------------------------------
diff --git a/manual/src/resources/js/versionswitcher.js b/manual/src/resources/js/versionswitcher.js
deleted file mode 100644
index 1b2a34d..0000000
--- a/manual/src/resources/js/versionswitcher.js
+++ /dev/null
@@ -1,222 +0,0 @@
-/**
- * Licensed to Neo Technology under one or more contributor
- * license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright
- * ownership. Neo Technology licenses this file to you under
- * the Apache License, Version 2.0 (the "License"); you may
- * not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-jQuery( window ).load( function()
-{
-  jQuery.getScript("../versions.js", function()
-  {
-    // availableDocVersions is now set
-    versionSwitcher( jQuery );
-  } );
-} );
-
-/**
- * Utility to browse different versions of the documentation.
- * Requires the ../versions.js file in place in place, which
- * lists the available (relevant) versions of the manual.
- * The version to load at page load can be given via the
- * search string, for example ?1.3
- */
-function versionSwitcher( $ )
-{
-  var VERSION_AND_PAGE = /chunked\/(.*)\/(.*\.html)?/;
-  var contentElements = [ "", "section", "chapter", "book", "part" ];
-  var CONTENT_ELEMENT = contentElements.join( ",body>div." ).replace( /^,/, " " );
-  var CONTENT_ELEMENT_LOAD = contentElements.join( ",div." ).replace( /^,/, " " );
-  var url = window.location;
-  var path = url.pathname;
-  var pathinfo = getVersionAndPage( path );
-  if ( !pathinfo ) return;
-  var currentVersion = pathinfo.version;
-  var LOAD_FROM_VERSION = currentVersion;
-  var currentPage = pathinfo.page;
-
-  var contentElement = $( CONTENT_ELEMENT );
-
-  var versionSelector = $( '<select id="version-selector" name="version-selector"></select>' );
-
-  loadVersionsIntoSelector( availableDocVersions, versionSelector );
-
-  // select the current option
-  setSelector2CurrentVersion( versionSelector, currentVersion );
-
-  // add the dropdown to the page
-  $("div.navheader").append( versionSelector );
-
-  // handle changes in the dropdown
-  versionSelector.change( function()
-  {
-    if ( this.selectedIndex === -1 ) return;
-    var newVersion = this.options[this.selectedIndex].value;
-    loadNewVersion( newVersion );
-  } );
-
-  // PRIVATE FUNCTIONS
-
-  /**
-   * Load an array of version into a select element and
-   * check if the current page actually exists in these versions.
-   * Non-existing entries will be disabled.
-   */
-  function loadVersionsIntoSelector( availableDocVersions, versionSelector )
-  {
-    $.each( availableDocVersions, function( index, version )
-    {
-      // add options in disabled state, then enable if the head request was successful
-      var newOption = $( '<option disabled="disabled" value="' + version + '">' + version + '</option>' );
-      versionSelector.append( newOption );
-      checkExistence( version, currentPage, function () 
-      {
-        newOption.removeAttr( 'disabled' );
-      } );
-    } );
-  }
-
-  /**
-   * Set the given version as the selected element in the version selector.
-   * If the version is missing, it will be added.
-   */
-  function setSelector2CurrentVersion( versionSelector, version )
-  {
-    var currentOptionElement = versionSelector.children( '[value="' + version + '"]' );
-    if ( currentOptionElement.length === 0 )
-    {
-      // add a new option, as the current version wasn't in the list
-      var newOption = new Option( version, version );
-      newOption.selected = true;
-      versionSelector.prepend( newOption );
-    }
-    else
-    {
-      currentOptionElement.attr( "selected", true );
-    }
-  }
-
-  /**
-   * Load page contents from a different version into the page.
-   * Also loads navigation header/footer from that version.
-   */
-  function loadNewVersion ( newVersion )
-  {
-    redirect2NewVersion( newVersion );
-  }
-
-  /**
-   * Redirect to another version.
-   */
-  function redirect2NewVersion ( newVersion )
-  {
-    location.assign( "/chunked/" + newVersion + "/" + currentPage );
-  }
-
-  /**
-   * Load page contents from a different version into the page.
-   * Also loads navigation header/footer from that version.
-   */
-  function loadNewVersionIntoPage ( newVersion )
-  {
-    contentElement.load( "/chunked/" + newVersion + "/" + currentPage + CONTENT_ELEMENT_LOAD, function( response, status )
-
-    {
-      if ( status == "success" )
-      {
-        SyntaxHighlighter.highlight();
-        // append version to URL to enable browsing of a different version
-        fixNavigation ( $( "a.xref, div.toc a", contentElement ), newVersion );
-        // load the navheader and navfooter as well
-        loadPart( "navheader", newVersion, currentPage );
-        loadPart( "navfooter", newVersion, currentPage );
-      }
-    } );
-  }
-
-  /**
-   * Change links to enable smooth browsing of a different version.
-   * Links that are present in the "base version" as well will get the
-   * version to browse added to their URL, while those which
-   * are not present will be directly linked to the old version instead.
-   */
-  function fixNavigation( elements, version )
-  {
-    if ( LOAD_FROM_VERSION === version ) return;
-    elements.each( function()
-    {
-      var link = this;
-      var versionAndPage = getVersionAndPage( link.href );
-      if ( versionAndPage )
-      {
-        checkUrlExistence( link, function ()
-        {
-          link.href = versionAndPage.page + "?" + version;
-          }, function()
-        {
-          link.href = "../" + version + "/" + versionAndPage.page;
-        } );
-      }
-    } );
-  }
-  
-  /**
-   * Load a specific part of the page (not the main content).
-   */
-  function loadPart( partName, newVersion, currentPage )
-  {
-    $( "div." + partName ).load( "/chunked/" + newVersion + "/" + currentPage + " div." + partName, function ( response, status ) 
-    {
-      if ( status == "success")
-      {
-        fixNavigation( $( "div." + partName + " a" ), newVersion );
-      }
-    } );
-  }
-
-  /**
-   * Check if a specific version of a page exists.
-   * The success and failure functions will be automatically called on finish.
-   */
-  function checkExistence( version, page, success, failure )
-  {
-     var url = "../" + version + "/" + page;
-     checkUrlExistence ( url, success, failure );
-  }
-  
-  /**
-   * Check if a specific URL exists.
-   * The success and failure functions will be automatically called on finish.
-   */
-  function checkUrlExistence( url, success, failure )
-  {
-    var settings = { "type": "HEAD", "async": true, "url": url };
-    if ( success ) settings.success = success;
-    if ( failure ) settings.error = failure;
-    $.ajax( settings );
-  }
-
-  /**
-   * Parse a path to extract version number and page filename.
-   */
-  function getVersionAndPage( path )
-  {
-    var pathinfo = path.match( VERSION_AND_PAGE );
-    if ( !pathinfo || !pathinfo[1] ) return null;
-    var currentVersion = pathinfo[1];
-    var currentPage = pathinfo[2] ? pathinfo[2] : "index.html";
-    return { version: currentVersion, page: currentPage };
-  }
-}
-