From cad08c9589c907af538f16905398e7bddc9bf814 Mon Sep 17 00:00:00 2001 From: 10xtechie Date: Thu, 23 Jun 2022 15:35:32 +0000 Subject: [PATCH 1/3] issue #637 - changes for URL aware language tabs --- themes/cucumber-sb/static/js/site.js | 44 ++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/themes/cucumber-sb/static/js/site.js b/themes/cucumber-sb/static/js/site.js index 16677a4b..07154873 100644 --- a/themes/cucumber-sb/static/js/site.js +++ b/themes/cucumber-sb/static/js/site.js @@ -91,12 +91,56 @@ function showOnly(language) { } } +function updateQueryParam(selectedLang){ + let params = location.search.split("&") + if(params.length > 1){ + params.forEach((element, index) => { + if(element.includes("lang")){ + params[index] = 'lang=' + selectedLang + } + }); + return location.search = params.join("&") + }else{ + return location.search = 'lang=' + selectedLang + } +} + +function getLangFromUrl(){ + let params = location.search.split("&") + var lang = '' + if(params[0].length > 1){ + params.forEach((element, index) => { + if(element.includes("lang")){ + lang = params[index].split("=")[1] + } + }); + } + return lang +} + // Activate +var supportedLanguages = [ + "java", + "javascript", + "ruby", + "kotlin", + "scala" +] + ready(function() { + var selectedLang = getLangFromUrl(); + if(selectedLang != '' && selectedLang != null && supportedLanguages.includes(selectedLang)){ + showOnly(selectedLang) + }else{ + //setting default language + showOnly("java") + } + each(document, '.tabs li', function(li) { var language = li.getAttribute('data-language') li.addEventListener('click', function () { + window.location.search = updateQueryParam(language); showOnly(language) }) }) From eb6f0d4e38e456d8562baf034885e18874b59b27 Mon Sep 17 00:00:00 2001 From: 10xtechie Date: Fri, 24 Jun 2022 19:11:07 +0000 Subject: [PATCH 2/3] issue #637 - saving and retrieving the preferred language from local storage --- themes/cucumber-sb/static/js/site.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/themes/cucumber-sb/static/js/site.js b/themes/cucumber-sb/static/js/site.js index 07154873..7c28f200 100644 --- a/themes/cucumber-sb/static/js/site.js +++ b/themes/cucumber-sb/static/js/site.js @@ -128,13 +128,19 @@ var supportedLanguages = [ "scala" ] +var defaulLanguage = 'java' + ready(function() { var selectedLang = getLangFromUrl(); - if(selectedLang != '' && selectedLang != null && supportedLanguages.includes(selectedLang)){ - showOnly(selectedLang) + if((selectedLang == '' || selectedLang == null)){ + if(localStorage.getItem('language') == ''){ + showOnly(defaulLanguage) + localStorage.setItem('language', defaulLanguage) + }else{ + showOnly(localStorage.getItem('language')) + } }else{ - //setting default language - showOnly("java") + showOnly(selectedLang) } each(document, '.tabs li', function(li) { From f8aec78dbcda888c6def7154daa03249116db451 Mon Sep 17 00:00:00 2001 From: 10xtechie Date: Fri, 24 Jun 2022 19:23:45 +0000 Subject: [PATCH 3/3] issue #637 - allowing only supported languages --- themes/cucumber-sb/static/js/site.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/themes/cucumber-sb/static/js/site.js b/themes/cucumber-sb/static/js/site.js index 7c28f200..fa8c9b7b 100644 --- a/themes/cucumber-sb/static/js/site.js +++ b/themes/cucumber-sb/static/js/site.js @@ -140,7 +140,16 @@ ready(function() { showOnly(localStorage.getItem('language')) } }else{ - showOnly(selectedLang) + if(supportedLanguages.includes(selectedLang)){ + showOnly(selectedLang) + }else{ + if(localStorage.getItem('language') == ''){ + showOnly(defaulLanguage) + localStorage.setItem('language', defaulLanguage) + }else{ + showOnly(localStorage.getItem('language')) + } + } } each(document, '.tabs li', function(li) {