From 68807cd48573e60bd205aeab75f561f081eaab77 Mon Sep 17 00:00:00 2001 From: Christopher Rogers Date: Wed, 9 Apr 2014 14:14:24 -0700 Subject: [PATCH] Fixes some leakage in the language selector Signed-off-by: Christopher Rogers --- source/javascripts/lang_selector.js | 70 ++++++++++++++++------------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/source/javascripts/lang_selector.js b/source/javascripts/lang_selector.js index 4e3dbc9..1d0685f 100644 --- a/source/javascripts/lang_selector.js +++ b/source/javascripts/lang_selector.js @@ -13,40 +13,46 @@ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -languages = [] -function activateLanguage(language) { - $("#lang-selector a").removeClass('active'); - $("#lang-selector a[data-language-name='" + language + "']").addClass('active'); - for (var i=0; i < languages.length; i++) { - $(".highlight." + languages[i]).hide(); - } - $(".highlight." + language).show(); +(function (global) { + var languages = []; -} + global.setupLanguages = setupLanguages; + global.activateLanguage = activateLanguage; -function setupLanguages(l) { - languages = l; - currentLanguage = languages[0]; - defaultLanguage = localStorage.getItem("language"); - - if ((location.search.substr(1) != "") && (jQuery.inArray(location.search.substr(1), languages)) != -1) { - // the language is in the URL, so use that language! - activateLanguage(location.search.substr(1)); - - // set this language as the default for next time, if the URL has no language - localStorage.setItem("language", location.search.substr(1)); - } else if ((defaultLanguage !== null) && (jQuery.inArray(defaultLanguage, languages) != -1)) { - // the language was the last selected one saved in localstorage, so use that language! - activateLanguage(defaultLanguage); - } else { - // no language selected, so use the default - activateLanguage(languages[0]); + function activateLanguage(language) { + $("#lang-selector a").removeClass('active'); + $("#lang-selector a[data-language-name='" + language + "']").addClass('active'); + for (var i=0; i < languages.length; i++) { + $(".highlight." + languages[i]).hide(); + } + $(".highlight." + language).show(); } - // if we click on a language tab, reload the page with that language in the URL - $("#lang-selector a").bind("click", function() { - window.location.replace("?" + $(this).data("language-name") + window.location.hash); - return false; - }); + function setupLanguages(l) { + var currentLanguage = l[0]; + var defaultLanguage = localStorage.getItem("language"); -} + languages = l; + + if ((location.search.substr(1) != "") && (jQuery.inArray(location.search.substr(1), languages)) != -1) { + // the language is in the URL, so use that language! + activateLanguage(location.search.substr(1)); + + // set this language as the default for next time, if the URL has no language + localStorage.setItem("language", location.search.substr(1)); + } else if ((defaultLanguage !== null) && (jQuery.inArray(defaultLanguage, languages) != -1)) { + // the language was the last selected one saved in localstorage, so use that language! + activateLanguage(defaultLanguage); + } else { + // no language selected, so use the default + activateLanguage(languages[0]); + } + + // if we click on a language tab, reload the page with that language in the URL + $("#lang-selector a").bind("click", function() { + window.location.replace("?" + $(this).data("language-name") + window.location.hash); + return false; + }); + + } +})(window);