You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by ad...@apache.org on 2019/11/03 13:20:41 UTC
[roller] 02/03: Fixed: Variables scoping in roller and searchhi js
files (ROL-2157) Pattern is identified and reported at sonacloud.io as
Blocker
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 <ia...@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) {