From 31872caaf81167de9be3e5287ccff2b1f98360ce Mon Sep 17 00:00:00 2001
From: Mike McKay <mfmckay@wustl.edu>
Date: Thu, 11 Aug 2016 13:55:16 -0500
Subject: [PATCH] XNAT-4436 Fixed bulk delete.

---
 .../screens/BulkDeleteActionScreen.java       | 11 +++---
 src/main/webapp/scripts/restDeleter.js        | 34 ++++++++++---------
 2 files changed, 24 insertions(+), 21 deletions(-)

diff --git a/src/main/java/org/nrg/xnat/turbine/modules/screens/BulkDeleteActionScreen.java b/src/main/java/org/nrg/xnat/turbine/modules/screens/BulkDeleteActionScreen.java
index 1631eda0..657ad4ad 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/screens/BulkDeleteActionScreen.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/screens/BulkDeleteActionScreen.java
@@ -10,10 +10,6 @@
  */
 package org.nrg.xnat.turbine.modules.screens;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Hashtable;
-
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.context.Context;
 import org.nrg.xdat.search.DisplaySearch;
@@ -23,6 +19,10 @@ import org.nrg.xdat.turbine.utils.TurbineUtils;
 import org.nrg.xft.XFTTable;
 import org.nrg.xft.security.UserI;
 
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Hashtable;
+
 public class BulkDeleteActionScreen extends SecureScreen {
 
     // Enumeration to determine what type of item is stored in an ItemContainer object. 
@@ -81,6 +81,7 @@ public class BulkDeleteActionScreen extends SecureScreen {
        }else{
           context.put("errMsg", "There is nothing to delete.");
        }
+        context.put("turbineUtils", TurbineUtils.GetInstance());
     }
 
     /**
@@ -225,7 +226,7 @@ public class BulkDeleteActionScreen extends SecureScreen {
        public String canDelete(UserI u, String searchType){
           try{
              // Is the user allowed to delete this item
-             boolean canDelete = Permissions.canAny(u,this.xsi + "/project", this.project, "delete");
+             boolean canDelete = Permissions.canAny(u,this.xsi, this.project, "delete");
              
              // The search type determines which items a user is allowed to delete.
              if(searchType.equals("subject")){
diff --git a/src/main/webapp/scripts/restDeleter.js b/src/main/webapp/scripts/restDeleter.js
index 1b8a0229..f5381471 100644
--- a/src/main/webapp/scripts/restDeleter.js
+++ b/src/main/webapp/scripts/restDeleter.js
@@ -20,22 +20,24 @@ RestDeleter = function(_array,_config) {
 		t.width="100%";
 		var tb=t.appendChild(document.createElement("tbody"));
   	    for(var aC=0;aC<this.a.length;aC++){
-  	    	if(this.a[aC].canRead && (this.a[aC].allowDelete==undefined||this.a[aC].allowDelete==true)){
-	  	   	  	var tr=tb.appendChild(document.createElement("tr"));
-	  	   	  	tr.entry=this.a[aC];
-	  	   	  	
-	  	   	  	var td1=tr.appendChild(document.createElement("td"));
-	  	   	  	var td2=tr.appendChild(document.createElement("td"));
-	  	   	  	tr.td1=td1;
-	  	   	  	tr.td2=td2;
-	  	   	  	
-	  	   	  	td1.innerHTML=this.a[aC].label;
-	  	   	  	tr.pDivColor=td2.appendChild(document.createElement("div"));
-	  	   	  	tr.pDivColor.style.width="100%";
-	  	   	  	tr.pDivColor.style.backgroundColor="gray";
-	  	   	  	tr.pDivColor.style.color="white";
-	  	   	  	tr.pDivColor.innerHTML="&nbsp;waiting...";
-	  	   	  	this.trArray.push(tr);
+  	    	if(this.a[aC].canRead && (this.a[aC].allowDelete==undefined||this.a[aC].allowDelete==true)) {
+				if (!(this.a[aC].label == "Select All" && this.a[aC].xsiType == null)) {
+					var tr = tb.appendChild(document.createElement("tr"));
+					tr.entry = this.a[aC];
+
+					var td1 = tr.appendChild(document.createElement("td"));
+					var td2 = tr.appendChild(document.createElement("td"));
+					tr.td1 = td1;
+					tr.td2 = td2;
+
+					td1.innerHTML = this.a[aC].label;
+					tr.pDivColor = td2.appendChild(document.createElement("div"));
+					tr.pDivColor.style.width = "100%";
+					tr.pDivColor.style.backgroundColor = "gray";
+					tr.pDivColor.style.color = "white";
+					tr.pDivColor.innerHTML = "&nbsp;waiting...";
+					this.trArray.push(tr);
+				}
   	    	}
   	    } 
 		var NUMSPACES=(this.config.defaultHeight/25)-4;
-- 
GitLab