[Python-checkins] cpython (2.6): #8040: port versionswitcher patch to 2.6.

georg.brandl python-checkins at python.org
Sun Oct 28 08:04:58 CET 2012


http://hg.python.org/cpython/rev/4a17784f2fee
changeset:   79994:4a17784f2fee
branch:      2.6
parent:      76213:f130ce67387d
user:        Georg Brandl <georg at python.org>
date:        Sun Oct 28 08:04:38 2012 +0100
summary:
  #8040: port versionswitcher patch to 2.6.

files:
  Doc/Makefile                                 |   2 +-
  Doc/tools/sphinxext/layout.html              |  13 +-
  Doc/tools/sphinxext/static/version_switch.js |  66 ++++++++++
  3 files changed, 78 insertions(+), 3 deletions(-)


diff --git a/Doc/Makefile b/Doc/Makefile
--- a/Doc/Makefile
+++ b/Doc/Makefile
@@ -164,7 +164,7 @@
 # for development releases: always build
 autobuild-dev:
 	make update
-	make dist SPHINXOPTS='-A daily=1'
+	make dist SPHINXOPTS='-A daily=1 -A versionswitcher=1'
 
 # for stable releases: only build if not in pre-release stage (alpha, beta, rc)
 autobuild-stable:
diff --git a/Doc/tools/sphinxext/layout.html b/Doc/tools/sphinxext/layout.html
--- a/Doc/tools/sphinxext/layout.html
+++ b/Doc/tools/sphinxext/layout.html
@@ -2,17 +2,26 @@
 {% block rootrellink %}
         <li><img src="{{ pathto('_static/py.png', 1) }}" alt=""
                  style="vertical-align: middle; margin-top: -1px"/></li>
-        <li><a href="{{ pathto('index') }}">{{ shorttitle }}</a>{{ reldelim1 }}</li>
+        <li><a href="http://www.python.org/">Python</a>{{ reldelim1 }}</li>
+        <li>
+          {%- if versionswitcher is defined %}
+          <span class="version_switcher_placeholder">{{ release }}</span>
+          <a href="{{ pathto('index') }}">Documentation</a>{{ reldelim1 }}
+          {%- else %}
+          <a href="{{ pathto('index') }}">{{ shorttitle }}</a>{{ reldelim1 }}
+          {%- endif %}
+        </li>
 {% endblock %}
 {% block extrahead %}
     <link rel="shortcut icon" type="image/png" href="{{ pathto('_static/py.png', 1) }}" />
+    {% if versionswitcher is defined and not embedded %}<script type="text/javascript" src="{{ pathto('_static/version_switch.js', 1) }}"></script>{% endif %}
 {{ super() }}
 {% endblock %}
 {% block footer %}
     <div class="footer">
     © <a href="{{ pathto('copyright') }}">Copyright</a> {{ copyright|e }}.
     <br />
-    The Python Software Foundation is a non-profit corporation.  
+    The Python Software Foundation is a non-profit corporation.
     <a href="http://www.python.org/psf/donations/">Please donate.</a>
     <br />
     Last updated on {{ last_updated|e }}.
diff --git a/Doc/tools/sphinxext/static/version_switch.js b/Doc/tools/sphinxext/static/version_switch.js
new file mode 100644
--- /dev/null
+++ b/Doc/tools/sphinxext/static/version_switch.js
@@ -0,0 +1,66 @@
+(function() {
+  'use strict';
+
+  var all_versions = {
+    '3.4': 'dev (3.4)',
+    '3.3': '3.3',
+    '3.2': '3.2',
+    '2.7': '2.7',
+    '2.6': '2.6'
+  };
+
+  function build_select(current_version, current_release) {
+    var buf = ['<select>'];
+
+    $.each(all_versions, function(version, title) {
+      buf.push('<option value="' + version + '"');
+      if (version == current_version)
+        buf.push(' selected="selected">' + current_release + '</option>');
+      else
+        buf.push('>' + title + '</option>');
+    });
+
+    buf.push('</select>');
+    return buf.join('');
+  }
+
+  function patch_url(url, new_version) {
+    var url_re = /\.org\/(\d|py3k|dev|((release\/)?\d\.\d[\w\d\.]*))\//,
+        new_url = url.replace(url_re, '.org/' + new_version + '/');
+
+    if (new_url == url && !new_url.match(url_re)) {
+      // python 2 url without version?
+      new_url = url.replace(/\.org\//, '.org/' + new_version + '/');
+    }
+    return new_url;
+  }
+
+  function on_switch() {
+    var selected = $(this).children('option:selected').attr('value');
+
+    var url = window.location.href,
+        new_url = patch_url(url, selected);
+
+    if (new_url != url) {
+      // check beforehand if url exists, else redirect to version's start page
+      $.ajax({
+        url: new_url,
+        success: function() {
+           window.location.href = new_url;
+        },
+        error: function() {
+           window.location.href = 'http://docs.python.org/' + selected;
+        }
+      });
+    }
+  }
+
+  $(document).ready(function() {
+    var release = DOCUMENTATION_OPTIONS.VERSION;
+    var version = release.substr(0, 3);
+    var select = build_select(version, release);
+
+    $('.version_switcher_placeholder').html(select);
+    $('.version_switcher_placeholder select').bind('change', on_switch);
+  });
+})();

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list