This is an automated email from the ASF dual-hosted git repository. adityasharma pushed a commit to branch ROL-2157 in repository https://gitbox.apache.org/repos/asf/roller.git
commit 3ab437abdfe72ebd44dec417ea9dd7d13c43f2a5 Author: Aditya Sharma <iamadityashar...@gmail.com> AuthorDate: Sun Nov 3 18:46:02 2019 +0530 Fixed: Variables scoping in roller and searchhi js files (ROL-2157) Pattern is identified and reported at sonacloud.io as Blocker JavaScript variable scope can be particularly difficult to understand and get right. The situation gets even worse when you consider the accidental creation of global variables, which is what happens when you declare a variable inside a function or the for clause of a for-loop without using the let, const or var keywords. --- app/src/main/webapp/theme/scripts/roller.js | 32 ++++++++++----------- app/src/main/webapp/theme/scripts/searchhi.js | 36 ++++++++++++------------ app/src/main/webapp/themes/fauxcoly/searchhi.js | 8 +++--- app/src/main/webapp/themes/gaurav/js/searchhi.js | 8 +++--- 4 files changed, 42 insertions(+), 42 deletions(-) diff --git a/app/src/main/webapp/theme/scripts/roller.js b/app/src/main/webapp/theme/scripts/roller.js index b60ca42..1ec4976 100644 --- a/app/src/main/webapp/theme/scripts/roller.js +++ b/app/src/main/webapp/theme/scripts/roller.js @@ -31,7 +31,7 @@ function getCookie(name) { if (start===-1) { return null; } - + var end = document.cookie.indexOf(";", start+prefix.length); if (end===-1) { end=document.cookie.length; @@ -55,7 +55,7 @@ function rememberUser(theForm) { var expires = new Date(); expires.setTime(expires.getTime() + 24 * 365 * 60 * 60 * 1000); // sets it for approx 365 days. // sets it for entire domain, so freeroller will remember for all users - setCookie("commentAuthor",theForm.name.value,expires,"/"); + setCookie("commentAuthor",theForm.name.value,expires,"/"); setCookie("commentEmail",theForm.email.value,expires,"/"); setCookie("commentUrl",theForm.url.value,expires,"/"); } @@ -66,12 +66,12 @@ function forgetUser(theForm) { deleteCookie("commentUrl","/"); } -/* This function is used to show/hide elements with a display:none style attribute */ +/* This function is used to show/hide elements with a display:none style attribute */ function toggle(targetId) { if (document.getElementById) { target = document.getElementById(targetId); if (target.style.display === "none") { - target.style.display = ""; + target.style.display = ""; } else { target.style.display = "none"; } @@ -84,14 +84,14 @@ function toggleFolder(targetId) { if (document.getElementById) { target = document.getElementById(targetId); if (target.style.display === "none") { - target.style.display = ""; - expanded = true; + target.style.display = ""; + expanded = true; } else { target.style.display = "none"; expanded = false; } togglePlusMinus("i" + targetId); - + // set a cookie to remember this preference var expires = new Date(); expires.setTime(expires.getTime() + 24 * 365 * 60 * 60 * 1000); // sets it for approx 365 days. @@ -114,14 +114,14 @@ function togglePlusMinus(targetId) { function folderPreference(folderId) { var folderCookie = getCookie("rfolder-"+folderId); if (folderCookie != null) { // we have user's last setting - folder = document.getElementById(folderId); - plusMinus = document.getElementById("i"+folderId); + var folder = document.getElementById(folderId); + var plusMinus = document.getElementById("i"+folderId); if (folderCookie === "true") { // show folder.style.display = ""; plusMinus.innerHTML = "-"; } else { // hide folder.style.display = "none"; - plusMinus.innerHTML = "+"; + plusMinus.innerHTML = "+"; } } } @@ -138,7 +138,7 @@ function toggleNextRow(e) { var thisRow = e.parentNode.parentNode; var tableBody = thisRow.parentNode; var nextRow = tableBody.getElementsByTagName("tr")[thisRow.rowIndex+1]; - + if (checked === true) { nextRow.style.display = ""; } else { @@ -152,15 +152,15 @@ function toggleControl(toggleId, targetId) { target = document.getElementById(targetId); toggle = document.getElementById(toggleId); if (target.style.display === "none") { - target.style.display = ""; - expanded = true; - + target.style.display = ""; + expanded = true; + } else { - target.style.display = "none"; + target.style.display = "none"; expanded = false; } togglePlusMinus("i" + targetId); - + // set a cookie to remember this preference var expires = new Date(); expires.setTime(expires.getTime() + 24 * 365 * 60 * 60 * 1000); // sets it for approx 365 days. diff --git a/app/src/main/webapp/theme/scripts/searchhi.js b/app/src/main/webapp/theme/scripts/searchhi.js index 776d30b..8205281 100644 --- a/app/src/main/webapp/theme/scripts/searchhi.js +++ b/app/src/main/webapp/theme/scripts/searchhi.js @@ -25,23 +25,23 @@ function highlightWord(node,word) { highlightWord(node.childNodes[hi_cn],word); } } - + // And do this node itself if (node.nodeType == 3) { // text node - tempNodeVal = node.nodeValue.toLowerCase(); - tempWordVal = word.toLowerCase(); + var tempNodeVal = node.nodeValue.toLowerCase(); + var tempWordVal = word.toLowerCase(); if (tempNodeVal.indexOf(tempWordVal) != -1) { - pn = node.parentNode; + var pn = node.parentNode; if (pn.className != "searchword") { // word has not already been highlighted! - nv = node.nodeValue; - ni = tempNodeVal.indexOf(tempWordVal); + var nv = node.nodeValue; + var ni = tempNodeVal.indexOf(tempWordVal); // Create a load of replacement nodes - before = document.createTextNode(nv.substr(0,ni)); - docWordVal = nv.substr(ni,word.length); - after = document.createTextNode(nv.substr(ni+word.length)); - hiwordtext = document.createTextNode(docWordVal); - hiword = document.createElement("span"); + var before = document.createTextNode(nv.substr(0,ni)); + var docWordVal = nv.substr(ni,word.length); + var after = document.createTextNode(nv.substr(ni+word.length)); + var hiwordtext = document.createTextNode(docWordVal); + var hiword = document.createElement("span"); hiword.className = "searchword"; hiword.appendChild(hiwordtext); pn.insertBefore(before,node); @@ -55,16 +55,16 @@ function highlightWord(node,word) { function googleSearchHighlight() { if (!document.createElement) return; - ref = document.referrer; + var ref = document.referrer; if (ref.indexOf('?') == -1) return; - qs = ref.substr(ref.indexOf('?')+1); - qsa = qs.split('&'); - for (i=0;i<qsa.length;i++) { - qsip = qsa[i].split('='); + var qs = ref.substr(ref.indexOf('?')+1); + var qsa = qs.split('&'); + for (var i=0;i<qsa.length;i++) { + var qsip = qsa[i].split('='); if (qsip.length == 1) continue; if (qsip[0] == 'q' || qsip[0] == 'p') { // q= for Google, p= for Yahoo - words = unescape(qsip[1].replace(/\+/g,' ')).split(/\s+/); - for (w=0;w<words.length;w++) { + var words = unescape(qsip[1].replace(/\+/g,' ')).split(/\s+/); + for (var w=0;w<words.length;w++) { highlightWord(document.getElementsByTagName("body")[0],words[w]); } } diff --git a/app/src/main/webapp/themes/fauxcoly/searchhi.js b/app/src/main/webapp/themes/fauxcoly/searchhi.js index 339308a..901bc60 100644 --- a/app/src/main/webapp/themes/fauxcoly/searchhi.js +++ b/app/src/main/webapp/themes/fauxcoly/searchhi.js @@ -5,7 +5,7 @@ /* Modified 20081218 to scroll to first hit like http://www.woolyss.free.fr/js/searchhi_Woolyss.js and say when not found */ -searchhi = { +var searchhi = { highlightWord: function(node,word) { // Iterate into this nodes childNodes if (node.hasChildNodes) { @@ -16,8 +16,8 @@ searchhi = { // And do this node itself if (node.nodeType == 3) { // text node - tempNodeVal = node.nodeValue.toLowerCase(); - tempWordVal = word.toLowerCase(); + var tempNodeVal = node.nodeValue.toLowerCase(); + var tempWordVal = word.toLowerCase(); if (tempNodeVal.indexOf(tempWordVal) != -1) { var pn = node.parentNode; // check if we're inside a "nosearchhi" zone @@ -70,7 +70,7 @@ searchhi = { process: function(wordstring) { searchhi.found = 0; var words = wordstring.split(/\s+/); - for (w=0;w<words.length;w++) { + for (var w=0;w<words.length;w++) { searchhi.highlightWord(document.getElementsByTagName("body")[0],words[w]); } if (searchhi.found === 0) { diff --git a/app/src/main/webapp/themes/gaurav/js/searchhi.js b/app/src/main/webapp/themes/gaurav/js/searchhi.js index 339308a..901bc60 100755 --- a/app/src/main/webapp/themes/gaurav/js/searchhi.js +++ b/app/src/main/webapp/themes/gaurav/js/searchhi.js @@ -5,7 +5,7 @@ /* Modified 20081218 to scroll to first hit like http://www.woolyss.free.fr/js/searchhi_Woolyss.js and say when not found */ -searchhi = { +var searchhi = { highlightWord: function(node,word) { // Iterate into this nodes childNodes if (node.hasChildNodes) { @@ -16,8 +16,8 @@ searchhi = { // And do this node itself if (node.nodeType == 3) { // text node - tempNodeVal = node.nodeValue.toLowerCase(); - tempWordVal = word.toLowerCase(); + var tempNodeVal = node.nodeValue.toLowerCase(); + var tempWordVal = word.toLowerCase(); if (tempNodeVal.indexOf(tempWordVal) != -1) { var pn = node.parentNode; // check if we're inside a "nosearchhi" zone @@ -70,7 +70,7 @@ searchhi = { process: function(wordstring) { searchhi.found = 0; var words = wordstring.split(/\s+/); - for (w=0;w<words.length;w++) { + for (var w=0;w<words.length;w++) { searchhi.highlightWord(document.getElementsByTagName("body")[0],words[w]); } if (searchhi.found === 0) {