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:39 UTC

[roller] branch ROL-2157 created (now 430795f)

This is an automated email from the ASF dual-hosted git repository.

adityasharma pushed a change to branch ROL-2157
in repository https://gitbox.apache.org/repos/asf/roller.git.


      at 430795f  Fixed: Variables scoping in weblog.vm js code (ROL-2157) Pattern is identified and reported at  sonacloud.io as Blocker

This branch includes the following new commits:

     new a541cc0  Fixed: Variables scoping in ajax-user.js (ROL-2157) Pattern is identified and reported at  sonacloud.io as Blocker
     new 3ab437a  Fixed: Variables scoping in roller and searchhi js files (ROL-2157) Pattern is identified and reported at  sonacloud.io as Blocker
     new 430795f  Fixed: Variables scoping in weblog.vm js code (ROL-2157) Pattern is identified and reported at  sonacloud.io as Blocker

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[roller] 02/03: Fixed: Variables scoping in roller and searchhi js files (ROL-2157) Pattern is identified and reported at sonacloud.io as Blocker

Posted by ad...@apache.org.
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) {


[roller] 01/03: Fixed: Variables scoping in ajax-user.js (ROL-2157) Pattern is identified and reported at sonacloud.io as Blocker

Posted by ad...@apache.org.
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 a541cc0dcf238e0168111f598a22f5dcbce36086
Author: Aditya Sharma <ia...@gmail.com>
AuthorDate: Sun Nov 3 18:16:41 2019 +0530

    Fixed: Variables scoping in ajax-user.js (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.
---
 .../webapp/WEB-INF/jsps/editor/MembersInvite.jsp   | 22 +++++++-------
 app/src/main/webapp/roller-ui/scripts/ajax-user.js | 34 +++++++++++-----------
 2 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/MembersInvite.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/MembersInvite.jsp
index 0f3aabe..f285705 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/MembersInvite.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/MembersInvite.jsp
@@ -23,12 +23,12 @@
 <s:form action="invite!save" cssClass="form-horizontal">
 	<s:hidden name="salt" />
     <s:hidden name="weblog" value="%{actionWeblog.handle}" />
-    
+
     <div class="formrow">
        <label for="userName" class="formrow">
            <s:text name="inviteMember.userName" /></label>
        <div>
-           <input name="userName" id="userName" size="30" maxlength="30" 
+           <input name="userName" id="userName" size="30" maxlength="30"
                onfocus="onMemberNameFocus(true)" onkeyup="onMemberNameChange(true)" /><br />
        </div>
     </div>
@@ -38,8 +38,8 @@
        <div>
            <select id="userList" size="10" onchange="onMemberSelected()" style="width:400px"></select>
        </div>
-    </div>    
-    
+    </div>
+
     <div style="clear:left">
        <label for="userName" class="formrow" />
            <s:text name="inviteMember.permissions" /></label>
@@ -49,9 +49,9 @@
        <s:text name="inviteMember.author" />
        <input type="radio" name="permissionString" value="edit_draft" />
        <s:text name="inviteMember.limited" />
-    </div>  
-         
-    <br />      
+    </div>
+
+    <br />
     <s:submit id="inviteButton" value="%{getText('inviteMember.button.save')}"  cssClass="btn btn-default"/>
     <s:submit value="%{getText('generic.cancel')}" action="invite!cancel" cssClass="btn"/>
 
@@ -67,12 +67,12 @@
     });
 
     function onMemberNameChange(enabled) {
-        u = userURL;
+        var u = userURL;
         if (enabled != null) {
             u = u + "&enabled=" + enabled;
         }
 
-        userName = $('#userName').val();
+        var userName = $('#userName').val();
         if (userName.length > 0) {
             u = u + "&startsWith=" + userName;
         }
@@ -81,7 +81,7 @@
     }
 
     function onMemberSelected() {
-        userName = $('#userList').children("option:selected").val();
+        var userName = $('#userList').children("option:selected").val();
         if (userName !== '') {
             $('#inviteButton').attr("disabled", false);
         }
@@ -90,7 +90,7 @@
     function onMemberNameFocus(enabled) {
         if (!init) {
             init = true;
-            u = userURL;
+            var u = userURL;
 
             if (enabled != null) {
                 u = u + "&enabled=" + enabled;
diff --git a/app/src/main/webapp/roller-ui/scripts/ajax-user.js b/app/src/main/webapp/roller-ui/scripts/ajax-user.js
index f3bbfb2..49715b3 100644
--- a/app/src/main/webapp/roller-ui/scripts/ajax-user.js
+++ b/app/src/main/webapp/roller-ui/scripts/ajax-user.js
@@ -37,30 +37,30 @@ var userURL = "<%= request.getContextPath() %>" + "/roller-ui/authoring/userdata
 function onUserNameFocus(enabled) {
     if (!init) {
         init = true;
-        u = userURL;
+        var u = userURL;
         if (enabled != null) u = u + "&enabled=" + enabled;
         sendUserRequest(u);
     } else {
-        userSubmitButton = document.getElementById("user-submit");
+        var userSubmitButton = document.getElementById("user-submit");
         userSubmitButton.disabled = true;
     }
 }
 
 function onUserNameChange(enabled) {
-    u = userURL;
+    var u = userURL;
     if (enabled != null) u = u + "&enabled=" + enabled;
-    userName = document.getElementById("userName");
+    var userName = document.getElementById("userName");
     if (userName.value.length > 0) u = u + "&startsWith=" + userName.value;
     sendUserRequest(u);
 }
 
 function onUserSelected() {
-    userList = document.getElementById("userList");
-    user = userList.options[userList.options.selectedIndex];
-    userName = document.getElementById("userName");
+    var userList = document.getElementById("userList");
+    var user = userList.options[userList.options.selectedIndex];
+    var userName = document.getElementById("userName");
     userName.value = user.value;
 
-    userSubmitButton = document.getElementById("user-submit");
+    var userSubmitButton = document.getElementById("user-submit");
     userSubmitButton.disabled = false;
 }
 
@@ -74,21 +74,21 @@ function sendUserRequest(url) {
 
 function handleUserResponse() {
     if (http.readyState === 4) {
-        userList = document.getElementById("userList");
-        for (i = userList.options.length; i >= 0; i--) {
+        var userList = document.getElementById("userList");
+        for (var i = userList.options.length; i >= 0; i--) {
             userList.options[i] = null;
-        }   
-        data = http.responseText;
+        }
+        var data = http.responseText;
         if (data.indexOf("\n") !== -1) {
-            lines = data.split('\n');
-            for (i = 0; i < lines.length; i++) {
+            var lines = data.split('\n');
+            for (var i = 0; i < lines.length; i++) {
                 if (lines[i].indexOf(',') !== -1) {
-                   userArray = lines[i].split(',');
-                   userList.options[userList.length] = 
+                   var userArray = lines[i].split(',');
+                   userList.options[userList.length] =
                       new Option(userArray[0] + " (" + userArray[1] + ")", userArray[0]);
                 }
             }
-        }  
+        }
 
     }
     isBusy = false;


[roller] 03/03: Fixed: Variables scoping in weblog.vm js code (ROL-2157) Pattern is identified and reported at sonacloud.io as Blocker

Posted by ad...@apache.org.
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 430795f4d63cb099ab59d56b4b818bac24d8d2e9
Author: Aditya Sharma <ia...@gmail.com>
AuthorDate: Sun Nov 3 18:49:50 2019 +0530

    Fixed: Variables scoping in weblog.vm js code (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/WEB-INF/velocity/weblog.vm | 80 +++++++++++++-------------
 1 file changed, 40 insertions(+), 40 deletions(-)

diff --git a/app/src/main/webapp/WEB-INF/velocity/weblog.vm b/app/src/main/webapp/WEB-INF/velocity/weblog.vm
index 32b4cb9..d9eb6f4 100644
--- a/app/src/main/webapp/WEB-INF/velocity/weblog.vm
+++ b/app/src/main/webapp/WEB-INF/velocity/weblog.vm
@@ -16,7 +16,7 @@
   directory of this distribution.
 *#
 
-#** 
+#**
 Set of essential macros needed in Roller velocity templates.
 These are the documented macros in order defined in this file:
 
@@ -52,16 +52,16 @@ These are the documented macros in order defined in this file:
     #showMobileSearchAgainForm($weblog)
     #showNextPrevSearchControl($pager)
     #showMobileNextPrevSearchControl($pager)
-    
+
     #showMobilePopupDialog($id $header $message)
 
     #_showCommonJavaScript()
-    
+
     #showEntryTags($entry)
 *#
 
 
-#** 
+#**
 Parse and include page template from weblog.
 *#
 #macro(includeTemplate $weblog $pageName)
@@ -74,14 +74,14 @@ Parse and include page template from weblog.
 #end
 
 
-#** 
+#**
 Show RSS, Atom and RSD auto-discovery links as HTML link elements.
 *#
 #macro(showAutodiscoveryLinks $weblog)
     #if ($weblog.enableBloggerApi)
        <link rel="EditURI"   type="application/rsd+xml" title="RSD" href="$url.rsd"/>
     #end
-    
+
     ## main feed urls are always available
     #if (!$model.searchResults)
     <link rel="alternate" type="application/atom+xml" title="Recent Entries (Atom)"  href="$url.feed.entries.atom" />
@@ -168,8 +168,8 @@ code if defined will be used.
     #end
 #end
 
-#** 
-Shows weblog entries pager via default day template 
+#**
+Shows weblog entries pager via default day template
 *#
 #macro(showWeblogEntriesPager $pager)
     #set($dayPage = $model.weblog.getTemplateByName("_day"))
@@ -201,7 +201,7 @@ Shows weblog entries pager via default day template
         #set($nextName = $pager.nextCollectionName)
     #end
     #if ($prevLink)
-        &laquo; <a href="$prevLink">$prevName</a> | 
+        &laquo; <a href="$prevLink">$prevName</a> |
     #end
     #if ($prevLink || $nextLink)
         <a href="$pager.getHomeLink()">$pager.getHomeName()</a>
@@ -256,11 +256,11 @@ Shows weblog entries pager via default day template
       </ul>
     </div>
   #end
-    
+
 #end
 
 
-#** 
+#**
 Show comments for weblog entry according to Roller configuration.
 *#
 #macro(showWeblogEntryComments $entry)
@@ -355,8 +355,8 @@ Show comments for weblog entry according to Roller configuration.
 #end
 
 
-#** 
-Show comments form for weblog entry. 
+#**
+Show comments form for weblog entry.
 *#
 #macro(showWeblogEntryCommentForm $entry)
     #set($cform = $model.getCommentForm())
@@ -474,7 +474,7 @@ Show comments form for weblog entry.
 #end
 
 
-#** 
+#**
 Show entries as a HTML ul list.
 *#
 #macro(showWeblogEntryLinksList $entriesList)
@@ -486,7 +486,7 @@ Show entries as a HTML ul list.
 #end
 
 
-#** 
+#**
 Show bookmarks as a HTML ul list.
 *#
 #macro(showBookmarkLinksList $folderObject)
@@ -519,7 +519,7 @@ Show bookmarks as a HTML ul list.
 #end
 
 
-#** 
+#**
 Show weblog's categories in specified parent category.
 *#
 #macro(showWeblogCategoryLinksList)
@@ -651,14 +651,14 @@ Show weblog's categories in specified parent category.
 #end
 
 
-#** 
+#**
 Show weblog entry calendar, with optional category restriction.
 *#
 #macro(showWeblogEntryCalendar $weblog $category)
 $calendarModel.showWeblogEntryCalendar($weblog, $category)
 #end
 
-#** 
+#**
 Show large format weblog entry calendar, with optional category restriction.
 *#
 #macro(showWeblogEntryCalendarBig $weblog $category)
@@ -666,11 +666,11 @@ $calendarModel.showWeblogEntryCalendarBig($weblog, $category)
 #end
 
 
-#** 
+#**
 Show weblog author menu with vertical or horizontal orientation.
 *#
 #macro(showAuthorMenu $vertical)
-  
+
   #set( $authorMenu = $menuModel.authorMenu )
   #if( $authorMenu )
       #if( $vertical )
@@ -696,11 +696,11 @@ Show weblog author menu with vertical or horizontal orientation.
 #end
 
 
-#** 
+#**
 Show weblog author menu with vertical or horizontal orientation.
 *#
 #macro(showAdminMenu $vertical)
-  
+
   #set( $adminMenu = $menuModel.adminMenu )
   #if( $adminMenu )
       #if( $vertical )
@@ -726,7 +726,7 @@ Show weblog author menu with vertical or horizontal orientation.
 #end
 
 
-#** 
+#**
 Show search form for a weblog.
 *#
 #macro(showWeblogSearchForm $weblog $showCatChooser)
@@ -790,7 +790,7 @@ Show search form for a weblog.
 #end
 
 
-#** 
+#**
 Show search again form for a weblog.
 *#
 #macro(showWeblogSearchAgainForm $weblog)
@@ -835,7 +835,7 @@ Show search again form for a weblog.
 #end
 
 
-#** 
+#**
 Show next/prev pager for search results.
 *#
 #macro(showNextPrevSearchControl $pager)
@@ -857,7 +857,7 @@ Show next/prev pager for search results.
         #set($nextName = $pager.nextName)
     #end
     #if ($prevLink)
-        &laquo; <a href="$prevLink">$prevName</a> |  
+        &laquo; <a href="$prevLink">$prevName</a> |
     #end
     #if ($prevLink || $nextLink)
         <a href="$pager.getHomeLink()">$pager.getHomeName()</a>
@@ -917,7 +917,7 @@ Show next/prev pager for search results.
 #end
 
 
-#** 
+#**
 Show mobile alert popup.
 *#
 #macro(showMobilePopupDialog $id $header $message)
@@ -945,12 +945,12 @@ Include Javascript code needed for expanding folder macros (undocumented).
         ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : "");
     }
     function getCookie(name) {
-        var prefix = name + "=" 
-        var start = document.cookie.indexOf(prefix) 
+        var prefix = name + "="
+        var start = document.cookie.indexOf(prefix)
         if (start==-1) return null;
-        var end = document.cookie.indexOf(";", start+prefix.length) 
+        var end = document.cookie.indexOf(";", start+prefix.length)
         if (end==-1) end=document.cookie.length;
-        var value=document.cookie.substring(start+prefix.length, end) 
+        var value=document.cookie.substring(start+prefix.length, end)
         return unescape(value);
     }
     /* The toggleFolder and togglePlusMinus functions are for expanding/contracting folders */
@@ -959,13 +959,13 @@ Include Javascript code needed for expanding folder macros (undocumented).
         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);        
+            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.
@@ -985,14 +985,14 @@ Include Javascript code needed for expanding folder macros (undocumented).
     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 = "+";
             }
         }
     }
@@ -1019,12 +1019,12 @@ Include Javascript code needed for expanding folder macros (undocumented).
  Display a list of tag urls for the tags on a given entry.
 *#
 #macro(showEntryTags $entry)
-  
+
   #set ( $tags = $entry.tags )
   #foreach($tag in $tags)
-	    <a href="$url.tag($tag.name)" rel="tag">$tag.name</a> 
+	    <a href="$url.tag($tag.name)" rel="tag">$tag.name</a>
   #end
-  
+
 #end