Ticket #881: issue-881-redirect-language.patch

File issue-881-redirect-language.patch, 4.0 KB (added by fgdrf, 12 years ago)
  • themes/overview/page.html

     
    11{% extends "basic/page.html" %}
    22
     3{%- block extrahead %}
     4        <script type="text/javascript" src="{{ pathto('_static/osgeolive.js', 1) }}"></script>
     5{% endblock %}
     6
    37{%- macro customrelbar(showrel=True) %}
    48    <div class="related">
    59                <div id="translations">
     10                <!--
    611                        <a href="../../en/index.html">English</a> |
    712                        <a href="../../el/index.html">Ελληνικά</a> |
    813                        <a href="../../ca/index.html">Català</a> |             
     
    1116                        <a href="../../ja/index.html">日本語</a> |
    1217                        <a href="../../pl/index.html">Polski</a> |
    1318                        <a href="../../zh/index.html">中文</a>
     19                -->
     20                        <a href="javascript:defaultRedirect('en')">English</a> |
     21                        <a href="javascript:defaultRedirect('el')">Ελληνικά</a> |
     22                        <a href="javascript:defaultRedirect('ca')">Català</a> |         
     23                        <a href="javascript:defaultRedirect('de')">Deutsch</a> |
     24                        <a href="javascript:defaultRedirect('es')">Español</a> |
     25                        <a href="javascript:defaultRedirect('ja')">日本語</a> |
     26                        <a href="javascript:defaultRedirect('pl')">Polski</a> |
     27                        <a href="javascript:defaultRedirect('zh')">中文</a>
    1428                </div>
    1529    </div>
    1630{%- endmacro %}
  • themes/overview/static/osgeolive.js

     
     1var adhocURL = "http://adhoc.osgeo.osuosl.org/livedvd/docs/en/index.html";
     2var liveURL = "http://live.osgeo.org/en/index.html";
     3var adhocContext = "/livedvd/docs";
     4var localContext = "/_build/html";
     5
     6var getContext = function(url) {
     7    // substring to extract the language code (two chars, e.g. 'en', 'ca', etc)
     8    var context;
     9
     10        // adhoc urls
     11    var index1 = url.indexOf(adhocContext);
     12    if (index1 >= 0) {
     13        context = url.substring(index1 + adhocContext.length);
     14    } else {
     15                // local file
     16        var i2 = url.indexOf(localContext);
     17        if (i2 >= 0) {
     18            context = url.substring(i2 + localContext.length);
     19        } else {
     20                        // default at live.osgeo.org
     21            context = url;
     22        }
     23    }
     24
     25    return context;
     26}
     27
     28// returns a substring for the language from url
     29var getLanguageFormUrl = function(url) {
     30    return getContext(url).substr(1, 2);
     31}
     32
     33// creates a location object from url string to work with pathname
     34var createHrefFromString = function(theStringURL) {
     35    var tmpLink = document.createElement('a');
     36    // the current context, independent from adhoc or live deployment
     37    tmpLink.href = theStringURL;
     38    return tmpLink;
     39}
     40
     41// just a test function
     42var testAdhocURL = function() {
     43    redirectFromUrlToLang(createHrefFromString(adhocURL), "zh");
     44    redirectFromUrlToLang(createHrefFromString(liveURL), "de");
     45}
     46
     47// public accessable function to redirect from the main menu (see page.html)
     48// parameter is the new language, eg. 'en', 'de', 'ja', etc
     49var defaultRedirect = function(newLanguage) {
     50    var theLastPage = document.referrer;
     51    if (theLastPage === "") {
     52       theLastPage = window.location;
     53    }
     54    redirectFromUrlToLang(theLastPage, newLanguage);
     55}
     56
     57var redirectFromUrlToLang = function(url, lang) {
     58    var language;
     59    if (lang.length != 2) {
     60        language = "en";
     61    } else {
     62        language = lang.toLowerCase();
     63    }
     64    var pathName = url.pathname;
     65    var newPathName;
     66    if (language === getLanguageFormUrl(pathName)) {
     67        newPathName = getContext(pathName);
     68    } else {
     69        var completeContext = getContext(pathName);
     70        var pathWithoutLanguage = completeContext.substr(3);
     71        var newContext = "/" + language + pathWithoutLanguage;
     72        newPathName = pathName.replace(completeContext, newContext);
     73    }
     74
     75    var newPage = url.href.replace(pathName, newPathName);
     76   
     77    window.location.href = newPage;
     78
     79}
     80 No newline at end of file