www/admin/diskusage/details/view_details.jsp

Code
Comments
Other
Rev Date Author Line
2929 17 Nov 06 nicklas 1 <%-- $Id$
2929 17 Nov 06 nicklas 2   ------------------------------------------------------------------
3675 16 Aug 07 jari 3   Copyright (C) 2006 Nicklas Nordborg
3675 16 Aug 07 jari 4   Copyright (C) 2007 Johan Enell
2929 17 Nov 06 nicklas 5
2929 17 Nov 06 nicklas 6   This file is part of BASE - BioArray Software Environment.
2929 17 Nov 06 nicklas 7   Available at http://base.thep.lu.se/
2929 17 Nov 06 nicklas 8
2929 17 Nov 06 nicklas 9   BASE is free software; you can redistribute it and/or
2929 17 Nov 06 nicklas 10   modify it under the terms of the GNU General Public License
4476 05 Sep 08 jari 11   as published by the Free Software Foundation; either version 3
2929 17 Nov 06 nicklas 12   of the License, or (at your option) any later version.
2929 17 Nov 06 nicklas 13
2929 17 Nov 06 nicklas 14   BASE is distributed in the hope that it will be useful,
2929 17 Nov 06 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
2929 17 Nov 06 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2929 17 Nov 06 nicklas 17   GNU General Public License for more details.
2929 17 Nov 06 nicklas 18
2929 17 Nov 06 nicklas 19   You should have received a copy of the GNU General Public License
4510 11 Sep 08 jari 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
2929 17 Nov 06 nicklas 21   ------------------------------------------------------------------
2929 17 Nov 06 nicklas 22
2929 17 Nov 06 nicklas 23   @author Nicklas
2929 17 Nov 06 nicklas 24   @version 2.0
2929 17 Nov 06 nicklas 25 --%>
5426 24 Sep 10 nicklas 26 <%@ page pageEncoding="UTF-8" session="false"
2929 17 Nov 06 nicklas 27   import="net.sf.basedb.core.SessionControl"
2929 17 Nov 06 nicklas 28   import="net.sf.basedb.core.DbControl"
2929 17 Nov 06 nicklas 29   import="net.sf.basedb.core.SystemItems"
2929 17 Nov 06 nicklas 30   import="net.sf.basedb.core.BasicItem"
2929 17 Nov 06 nicklas 31   import="net.sf.basedb.core.Item"
2929 17 Nov 06 nicklas 32   import="net.sf.basedb.core.Location"
2929 17 Nov 06 nicklas 33   import="net.sf.basedb.core.ItemContext"
2929 17 Nov 06 nicklas 34   import="net.sf.basedb.core.Permission"
2929 17 Nov 06 nicklas 35   import="net.sf.basedb.core.DiskUsage"
2929 17 Nov 06 nicklas 36   import="net.sf.basedb.core.DiskUsageStatistics"
2929 17 Nov 06 nicklas 37   import="net.sf.basedb.core.DiskConsumable"
2929 17 Nov 06 nicklas 38   import="net.sf.basedb.core.Quota"
2929 17 Nov 06 nicklas 39   import="net.sf.basedb.core.User"
2929 17 Nov 06 nicklas 40   import="net.sf.basedb.core.Group"
2929 17 Nov 06 nicklas 41   import="net.sf.basedb.core.Nameable"
2929 17 Nov 06 nicklas 42   import="net.sf.basedb.core.Removable"
2929 17 Nov 06 nicklas 43   import="net.sf.basedb.core.File"
2929 17 Nov 06 nicklas 44   import="net.sf.basedb.core.QuotaType"
2929 17 Nov 06 nicklas 45   import="net.sf.basedb.core.Metadata"
2929 17 Nov 06 nicklas 46   import="net.sf.basedb.core.PermissionDeniedException"
2929 17 Nov 06 nicklas 47   import="net.sf.basedb.core.PluginDefinition"
2929 17 Nov 06 nicklas 48   import="net.sf.basedb.core.ItemQuery"
2929 17 Nov 06 nicklas 49   import="net.sf.basedb.core.ItemResultIterator"
2929 17 Nov 06 nicklas 50   import="net.sf.basedb.core.Include"
4669 26 Nov 08 nicklas 51   import="net.sf.basedb.core.Quantity"
4669 26 Nov 08 nicklas 52   import="net.sf.basedb.core.Unit"
2929 17 Nov 06 nicklas 53   import="net.sf.basedb.util.Enumeration"
2929 17 Nov 06 nicklas 54   import="net.sf.basedb.core.query.Orders"
2929 17 Nov 06 nicklas 55   import="net.sf.basedb.core.query.Hql"
2929 17 Nov 06 nicklas 56   import="net.sf.basedb.core.plugin.GuiContext"
2929 17 Nov 06 nicklas 57   import="net.sf.basedb.core.plugin.Plugin"
4669 26 Nov 08 nicklas 58   import="net.sf.basedb.util.units.UnitUtil"
2929 17 Nov 06 nicklas 59   import="net.sf.basedb.clients.web.Base"
2929 17 Nov 06 nicklas 60   import="net.sf.basedb.clients.web.PermissionUtil"
2929 17 Nov 06 nicklas 61   import="net.sf.basedb.clients.web.util.HTML"
2929 17 Nov 06 nicklas 62   import="net.sf.basedb.util.Values"
4887 06 Apr 09 nicklas 63   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
4887 06 Apr 09 nicklas 64   import="net.sf.basedb.clients.web.extensions.JspContext"
4887 06 Apr 09 nicklas 65   import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
7604 25 Feb 19 nicklas 66   import="net.sf.basedb.clients.web.extensions.toolbar.ButtonAction" 
4887 06 Apr 09 nicklas 67   import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
4887 06 Apr 09 nicklas 68   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
2929 17 Nov 06 nicklas 69   import="java.util.Map"
2929 17 Nov 06 nicklas 70   import="java.util.List"
2929 17 Nov 06 nicklas 71 %>
2929 17 Nov 06 nicklas 72 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
2929 17 Nov 06 nicklas 73 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
2929 17 Nov 06 nicklas 74 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
2929 17 Nov 06 nicklas 75 <%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
4887 06 Apr 09 nicklas 76 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
2929 17 Nov 06 nicklas 77 <%!
2929 17 Nov 06 nicklas 78   private static final String subContext = "diskUsage";
2929 17 Nov 06 nicklas 79   private static final Enumeration<String, String> itemTypes = new Enumeration<String, String>();
2929 17 Nov 06 nicklas 80   static
2929 17 Nov 06 nicklas 81   {
2929 17 Nov 06 nicklas 82     for (Item item : Metadata.getDiskConsumableItems())
2929 17 Nov 06 nicklas 83     {
2929 17 Nov 06 nicklas 84       itemTypes.add(String.valueOf(item.getValue()), item.toString());
2929 17 Nov 06 nicklas 85     }
2929 17 Nov 06 nicklas 86   }
2929 17 Nov 06 nicklas 87   private static final Enumeration<String, String> locations = new Enumeration<String, String>();
2929 17 Nov 06 nicklas 88   static
2929 17 Nov 06 nicklas 89   {
5330 29 Apr 10 nicklas 90     for (Location l : Location.values())
5330 29 Apr 10 nicklas 91     {
5330 29 Apr 10 nicklas 92       locations.add(String.valueOf(l.getValue()), l.toString());
5330 29 Apr 10 nicklas 93     }
2929 17 Nov 06 nicklas 94   }
2929 17 Nov 06 nicklas 95 %>
2929 17 Nov 06 nicklas 96 <%
2929 17 Nov 06 nicklas 97 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
2929 17 Nov 06 nicklas 98 final String ID = sc.getId();
2929 17 Nov 06 nicklas 99 final Item itemType = Item.valueOf(request.getParameter("item_type"));
2929 17 Nov 06 nicklas 100 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, subContext, null, null);
2929 17 Nov 06 nicklas 101 final int itemId = cc.getId();
2929 17 Nov 06 nicklas 102 final float scale = Base.getScale(sc);
7954 12 May 21 nicklas 103 final DbControl dc = sc.newDbControl(":View "+itemType);
2929 17 Nov 06 nicklas 104 ItemResultIterator<DiskUsage> diskUsage = null;
2929 17 Nov 06 nicklas 105 try
2929 17 Nov 06 nicklas 106 {
4669 26 Nov 08 nicklas 107   Unit bytes = UnitUtil.getUnit(dc, Quantity.STORAGE_SIZE, "B");
2929 17 Nov 06 nicklas 108   String title = null;
2929 17 Nov 06 nicklas 109   User user = null;
2929 17 Nov 06 nicklas 110   Group group = null;
2929 17 Nov 06 nicklas 111   boolean writePermission = false;
4701 11 Dec 08 nicklas 112   final boolean hasDiskUsagePermission = sc.hasPermission(Permission.READ, Item.DISKUSAGE);
7605 26 Feb 19 nicklas 113   DiskUsageStatistics statistics = sc.getSessionSetting("diskUsageStatistics");
2929 17 Nov 06 nicklas 114   String returnCmd = null;
2929 17 Nov 06 nicklas 115   if (statistics == null)
2929 17 Nov 06 nicklas 116   {
2929 17 Nov 06 nicklas 117     statistics = DiskUsage.getStatistics(dc);
2929 17 Nov 06 nicklas 118     sc.setSessionSetting("diskUsageStatistics", statistics);
2929 17 Nov 06 nicklas 119   }
2929 17 Nov 06 nicklas 120   statistics.setDbControl(dc);
2929 17 Nov 06 nicklas 121   List<QuotaType> quotaTypes = statistics.getQuotaTypes();
2929 17 Nov 06 nicklas 122   DiskUsageStatistics.Summary summary = null;
2929 17 Nov 06 nicklas 123   if (itemType == Item.USER)
2929 17 Nov 06 nicklas 124   {
2929 17 Nov 06 nicklas 125     user = User.getById(dc, itemId);
2929 17 Nov 06 nicklas 126     title = user.getName() + " (user)";
2929 17 Nov 06 nicklas 127     writePermission = user.hasPermission(Permission.WRITE);
2929 17 Nov 06 nicklas 128     summary = statistics.getSummary(user);
2929 17 Nov 06 nicklas 129     returnCmd = "ListUsers";
2929 17 Nov 06 nicklas 130   }
2929 17 Nov 06 nicklas 131   else
2929 17 Nov 06 nicklas 132   {
2929 17 Nov 06 nicklas 133     group = Group.getById(dc, itemId);
2929 17 Nov 06 nicklas 134     title = group.getName() + " (group)";
2929 17 Nov 06 nicklas 135     writePermission = group.hasPermission(Permission.WRITE);
2929 17 Nov 06 nicklas 136     summary = statistics.getSummary(group);
2929 17 Nov 06 nicklas 137     returnCmd = "ListGroups";
2929 17 Nov 06 nicklas 138   }
2929 17 Nov 06 nicklas 139   long totalCount = 0;
2929 17 Nov 06 nicklas 140   int numListed = 0;
7914 23 Feb 21 nicklas 141   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, 
7914 23 Feb 21 nicklas 142       GuiContext.list(Item.DISKUSAGE), user == null ? group : user);
2929 17 Nov 06 nicklas 143   try
2929 17 Nov 06 nicklas 144   {
7914 23 Feb 21 nicklas 145     final ItemQuery<DiskUsage> query = Base.getConfiguredQuery(dc, cc, jspContext, true, DiskUsage.getQuery(user, group), null);
2929 17 Nov 06 nicklas 146     diskUsage = query.iterate(dc);
2929 17 Nov 06 nicklas 147     totalCount = diskUsage.getTotalCount();
2929 17 Nov 06 nicklas 148   }
2929 17 Nov 06 nicklas 149   catch (Throwable t)
2929 17 Nov 06 nicklas 150   {
2929 17 Nov 06 nicklas 151     cc.setMessage(t.getMessage());
2929 17 Nov 06 nicklas 152   }
7604 25 Feb 19 nicklas 153   ExtensionsInvoker<ButtonAction> invoker = ToolbarUtil.useExtensions(jspContext);
2929 17 Nov 06 nicklas 154   %>
2929 17 Nov 06 nicklas 155   <base:page >
6305 09 Aug 13 nicklas 156   <base:head scripts="table.js,tabcontrol-2.js,~details.js" styles="toolbar.css,table.css,headertabcontrol.css,path.css">
4887 06 Apr 09 nicklas 157     <ext:scripts context="<%=jspContext%>" />
4887 06 Apr 09 nicklas 158     <ext:stylesheets context="<%=jspContext%>" />
5950 09 Feb 12 nicklas 159     <style>
5950 09 Feb 12 nicklas 160     table.special
5950 09 Feb 12 nicklas 161     {
5950 09 Feb 12 nicklas 162       width: auto;
5950 09 Feb 12 nicklas 163     }
5950 09 Feb 12 nicklas 164     table.special td, table.special tr:first-child th
5950 09 Feb 12 nicklas 165     {
5950 09 Feb 12 nicklas 166       text-align: right;
6621 24 Nov 14 nicklas 167       border-right-width: 1px;
6621 24 Nov 14 nicklas 168       border-right-style: dotted;
5950 09 Feb 12 nicklas 169     }
5950 09 Feb 12 nicklas 170     </style>
2929 17 Nov 06 nicklas 171   </base:head>
2929 17 Nov 06 nicklas 172   <base:body>
5950 09 Feb 12 nicklas 173     <p:path><p:pathelement 
5950 09 Feb 12 nicklas 174       title="Disk usage" enabled="<%=hasDiskUsagePermission%>"
5950 09 Feb 12 nicklas 175         href="<%="../index.jsp?ID="+ID+"&cmd="+returnCmd%>" 
5950 09 Feb 12 nicklas 176       /><p:pathelement title="<%=HTML.encodeTags(title)%>" 
5950 09 Feb 12 nicklas 177       /></p:path>
6305 09 Aug 13 nicklas 178       
6305 09 Aug 13 nicklas 179     <div id="page-data" class="datacontainer" 
6305 09 Aug 13 nicklas 180       data-item-id="<%=itemId%>" data-item-type="<%=itemType.name()%>"></div>
2929 17 Nov 06 nicklas 181     
5950 09 Feb 12 nicklas 182     <t:tabcontrol id="main" 
5950 09 Feb 12 nicklas 183       subclass="mastertabcontrol content">
2929 17 Nov 06 nicklas 184     <t:tab id="details" title="Details">
5950 09 Feb 12 nicklas 185       <div>
5950 09 Feb 12 nicklas 186       <table class="fullform" style="height: auto;">
2929 17 Nov 06 nicklas 187       <tr>
5950 09 Feb 12 nicklas 188         <th class="itemstatus"></th>
5950 09 Feb 12 nicklas 189         <td style="padding: 0px;">
6605 18 Nov 14 nicklas 190           <tbl:toolbar subclass="bottomborder bg-filled-50">
5950 09 Feb 12 nicklas 191             <tbl:button 
6305 09 Aug 13 nicklas 192               id="btnEdit"
5950 09 Feb 12 nicklas 193               disabled="<%=!writePermission%>" 
5950 09 Feb 12 nicklas 194               image="edit.png" 
5950 09 Feb 12 nicklas 195               title="Edit&hellip;" 
5950 09 Feb 12 nicklas 196               tooltip="<%=writePermission ? "Edit this item" : "You do not have permission to edit this item"%>" 
5950 09 Feb 12 nicklas 197             />
5950 09 Feb 12 nicklas 198             <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
7604 25 Feb 19 nicklas 199               wrapper="<%=new PrefixSuffixRenderer<ButtonAction>(jspContext, "<td>", "</td>") %>"/>
5950 09 Feb 12 nicklas 200             <tbl:button
5950 09 Feb 12 nicklas 201               image="help.png"
6305 09 Aug 13 nicklas 202               subclass="auto-init"
6305 09 Aug 13 nicklas 203               data-auto-init="help"
6305 09 Aug 13 nicklas 204               data-help-id="diskusage.details"
5950 09 Feb 12 nicklas 205               title="Help&hellip;"
5950 09 Feb 12 nicklas 206               tooltip="Get help about this page"
5950 09 Feb 12 nicklas 207             />
5950 09 Feb 12 nicklas 208           </tbl:toolbar>
5950 09 Feb 12 nicklas 209         </td>
2929 17 Nov 06 nicklas 210       </tr>
5950 09 Feb 12 nicklas 211       </table>
5950 09 Feb 12 nicklas 212       <table style="width: 100%; height: 8em;" class="bottomborder">
5950 09 Feb 12 nicklas 213       <tr valign="top">
5950 09 Feb 12 nicklas 214         <td style="width: 50%; height: 100%;">
5950 09 Feb 12 nicklas 215           <%
5950 09 Feb 12 nicklas 216           if (user != null)
5950 09 Feb 12 nicklas 217           {
5950 09 Feb 12 nicklas 218             %>
5950 09 Feb 12 nicklas 219             <table class="fullform">
5950 09 Feb 12 nicklas 220             <tr>
5950 09 Feb 12 nicklas 221               <th>Name</th>
5950 09 Feb 12 nicklas 222               <td><%=Base.getLinkedName(ID, user, false, true)%></td>
5950 09 Feb 12 nicklas 223             </tr>
5950 09 Feb 12 nicklas 224             <tr>
5950 09 Feb 12 nicklas 225               <th>Quota</th>
5950 09 Feb 12 nicklas 226               <td><base:propertyvalue item="<%=user%>" property="quota" /></td>
5950 09 Feb 12 nicklas 227             </tr>
5950 09 Feb 12 nicklas 228             <tr>
5950 09 Feb 12 nicklas 229               <th>Quota group</th>
5950 09 Feb 12 nicklas 230               <td><base:propertyvalue item="<%=user%>" property="quotaGroup" /></td>
5950 09 Feb 12 nicklas 231             </tr>
5950 09 Feb 12 nicklas 232             <tr class="dynamic">
5950 09 Feb 12 nicklas 233               <th>Description</th>
5950 09 Feb 12 nicklas 234               <td><%=HTML.niceFormat(user.getDescription())%></td>
5950 09 Feb 12 nicklas 235             </tr>
5950 09 Feb 12 nicklas 236             </table>
5950 09 Feb 12 nicklas 237             <%
5950 09 Feb 12 nicklas 238           }
5950 09 Feb 12 nicklas 239           else if (group != null)
5950 09 Feb 12 nicklas 240           {
5950 09 Feb 12 nicklas 241             %>
5950 09 Feb 12 nicklas 242             <table class="fullform">
5950 09 Feb 12 nicklas 243             <tr>
5950 09 Feb 12 nicklas 244               <th>Name</th>
5950 09 Feb 12 nicklas 245               <td><%=Base.getLinkedName(ID, group, false, true)%></td>
5950 09 Feb 12 nicklas 246             </tr>
5950 09 Feb 12 nicklas 247             <tr>
5950 09 Feb 12 nicklas 248               <th>Quota</th>
5950 09 Feb 12 nicklas 249               <td><base:propertyvalue item="<%=group%>" property="quota" /></td>
5950 09 Feb 12 nicklas 250             </tr>
5950 09 Feb 12 nicklas 251             <tr class="dynamic">
5950 09 Feb 12 nicklas 252               <th>Description</th>
5950 09 Feb 12 nicklas 253               <td><%=HTML.niceFormat(group.getDescription())%></td>
5950 09 Feb 12 nicklas 254             </tr>
5950 09 Feb 12 nicklas 255             </table>
5950 09 Feb 12 nicklas 256             <%
5950 09 Feb 12 nicklas 257           }
5950 09 Feb 12 nicklas 258           %>
5950 09 Feb 12 nicklas 259         </td>
5950 09 Feb 12 nicklas 260         <td style="width: 50%; height: 100%;" class="leftborder">
5950 09 Feb 12 nicklas 261           <table class="special fullform">
5950 09 Feb 12 nicklas 262           <tr>
5950 09 Feb 12 nicklas 263             <th style="width: 10em;"></th>
5950 09 Feb 12 nicklas 264             <th style="width: 12em;">Total</td>
5950 09 Feb 12 nicklas 265             <th style="width: 12em;">Primary</td>
7595 22 Feb 19 nicklas 266             <th style="width: 12em;">External</td>
5950 09 Feb 12 nicklas 267             <th style="width: 12em;">Offline</td>
5950 09 Feb 12 nicklas 268           </tr>
6621 24 Nov 14 nicklas 269           <tr style="border-top-width: 1px;" class="highlight">
5950 09 Feb 12 nicklas 270             <th>Total</th>
5950 09 Feb 12 nicklas 271             <td><%=Values.formatBytes(summary.getTotal())%></td>
5950 09 Feb 12 nicklas 272             <td><%=Values.formatBytes(summary.getTotal(Location.PRIMARY))%></td>
7595 22 Feb 19 nicklas 273             <td><%=Values.formatBytes(summary.getTotal(Location.EXTERNAL))%></td>      
5950 09 Feb 12 nicklas 274             <td><%=Values.formatBytes(summary.getTotal(Location.OFFLINE))%></td>      
5950 09 Feb 12 nicklas 275           </tr>
5950 09 Feb 12 nicklas 276           <%
5950 09 Feb 12 nicklas 277           for (QuotaType qt : quotaTypes)
5950 09 Feb 12 nicklas 278           {
5950 09 Feb 12 nicklas 279             %>
5950 09 Feb 12 nicklas 280             <tr class="highlight">
5950 09 Feb 12 nicklas 281               <th><%=HTML.encodeTags(qt.getName())%></th>
5950 09 Feb 12 nicklas 282               <td><%=Values.formatBytes(summary.getTotal(qt))%></td>
5950 09 Feb 12 nicklas 283               <td><%=Values.formatBytes(summary.getTotal(qt, Location.PRIMARY))%></td>
7595 22 Feb 19 nicklas 284               <td><%=qt.getSystemId().equals(QuotaType.FILE) ? Values.formatBytes(summary.getTotal(qt, Location.EXTERNAL)) : "n/a"%></td>
5950 09 Feb 12 nicklas 285               <td><%=qt.getSystemId().equals(QuotaType.FILE) ? Values.formatBytes(summary.getTotal(qt, Location.OFFLINE)) : "n/a"%></td>
5950 09 Feb 12 nicklas 286             </tr>
5950 09 Feb 12 nicklas 287             <%
5950 09 Feb 12 nicklas 288           }
5950 09 Feb 12 nicklas 289           %>
5950 09 Feb 12 nicklas 290           </table>
5950 09 Feb 12 nicklas 291         </td>
2929 17 Nov 06 nicklas 292       </tr>
2929 17 Nov 06 nicklas 293       </table>
5950 09 Feb 12 nicklas 294       </div>
5950 09 Feb 12 nicklas 295     
6305 09 Aug 13 nicklas 296     <base:section id="itemsSection" 
5950 09 Feb 12 nicklas 297       title="<%="Disk consuming items (" + totalCount + ")"%>" 
5950 09 Feb 12 nicklas 298       context="<%=cc%>">
2929 17 Nov 06 nicklas 299       <tbl:table 
2929 17 Nov 06 nicklas 300         id="items" 
2929 17 Nov 06 nicklas 301         columns="<%=cc.getSetting("columns")%>"
2929 17 Nov 06 nicklas 302         sortby="<%=cc.getSortProperty()%>" 
2929 17 Nov 06 nicklas 303         direction="<%=cc.getSortDirection()%>"
2929 17 Nov 06 nicklas 304         action="index.jsp"
2929 17 Nov 06 nicklas 305         sc="<%=sc%>"
2929 17 Nov 06 nicklas 306         item="<%=itemType%>"
2929 17 Nov 06 nicklas 307         subcontext="<%=subContext%>"
6707 02 Feb 15 nicklas 308         filterrows="<%=cc.getFilterRows()%>"
2929 17 Nov 06 nicklas 309         >
2929 17 Nov 06 nicklas 310         <tbl:hidden
2929 17 Nov 06 nicklas 311           name="item_type"
2929 17 Nov 06 nicklas 312           value="<%=itemType.name()%>"
2929 17 Nov 06 nicklas 313         />
2929 17 Nov 06 nicklas 314         <tbl:columndef
2929 17 Nov 06 nicklas 315           id="type"
2929 17 Nov 06 nicklas 316           property="itemType"
2929 17 Nov 06 nicklas 317           datatype="int"
2929 17 Nov 06 nicklas 318           title="Item type"
2929 17 Nov 06 nicklas 319           enumeration="<%=itemTypes%>"
2929 17 Nov 06 nicklas 320           filterable="true"
2929 17 Nov 06 nicklas 321           sortable="true"
2929 17 Nov 06 nicklas 322           show="always"
2929 17 Nov 06 nicklas 323         />
2929 17 Nov 06 nicklas 324         <tbl:columndef 
2929 17 Nov 06 nicklas 325           id="name"
2929 17 Nov 06 nicklas 326           title="Name"
2929 17 Nov 06 nicklas 327           show="always" 
2929 17 Nov 06 nicklas 328         />
2929 17 Nov 06 nicklas 329         <tbl:columndef 
2929 17 Nov 06 nicklas 330           id="bytes"
2929 17 Nov 06 nicklas 331           property="bytes"
2929 17 Nov 06 nicklas 332           datatype="long"
2929 17 Nov 06 nicklas 333           title="Bytes"
2929 17 Nov 06 nicklas 334           sortable="true"
2929 17 Nov 06 nicklas 335           filterable="true"
2929 17 Nov 06 nicklas 336           exportable="true"
4669 26 Nov 08 nicklas 337           unit="<%=bytes%>"
2929 17 Nov 06 nicklas 338         />
2929 17 Nov 06 nicklas 339         <tbl:columndef 
2929 17 Nov 06 nicklas 340           id="location"
2929 17 Nov 06 nicklas 341           property="location"
2929 17 Nov 06 nicklas 342           datatype="int"
2929 17 Nov 06 nicklas 343           title="Location"
2929 17 Nov 06 nicklas 344           enumeration="<%=locations%>"
2929 17 Nov 06 nicklas 345           filterable="true"
2929 17 Nov 06 nicklas 346           sortable="true"
2929 17 Nov 06 nicklas 347         />
2929 17 Nov 06 nicklas 348         <tbl:columndef 
2929 17 Nov 06 nicklas 349           id="owner"
2929 17 Nov 06 nicklas 350           property="user.name"
2929 17 Nov 06 nicklas 351           datatype="string"
2929 17 Nov 06 nicklas 352           title="Owner"
2929 17 Nov 06 nicklas 353           sortable="true" 
2929 17 Nov 06 nicklas 354           filterable="true"
2929 17 Nov 06 nicklas 355           exportable="true"
2929 17 Nov 06 nicklas 356         />
2929 17 Nov 06 nicklas 357         <tbl:columndef 
2929 17 Nov 06 nicklas 358           id="group"
2929 17 Nov 06 nicklas 359           property="group.name"
2929 17 Nov 06 nicklas 360           datatype="string"
2929 17 Nov 06 nicklas 361           title="Group"
2929 17 Nov 06 nicklas 362           sortable="true" 
2929 17 Nov 06 nicklas 363           filterable="true"
2929 17 Nov 06 nicklas 364           exportable="true"
2929 17 Nov 06 nicklas 365         />
2929 17 Nov 06 nicklas 366         <tbl:columndef 
2929 17 Nov 06 nicklas 367           id="description"
2929 17 Nov 06 nicklas 368           title="Description"
2929 17 Nov 06 nicklas 369         />
6621 24 Nov 14 nicklas 370         <div class="panelgroup topborder leftborder rightborder bg-filled-50">
6621 24 Nov 14 nicklas 371           <tbl:toolbar subclass="bottomborder">
5950 09 Feb 12 nicklas 372             <tbl:button 
6305 09 Aug 13 nicklas 373               id="btnDeleteItems"
5950 09 Feb 12 nicklas 374               image="delete.png"
5950 09 Feb 12 nicklas 375               title="Delete" 
5950 09 Feb 12 nicklas 376               tooltip="Mark the selected items for deletion" 
5950 09 Feb 12 nicklas 377               disabled="<%=totalCount <= 0%>"
5950 09 Feb 12 nicklas 378             />
5950 09 Feb 12 nicklas 379             <tbl:button 
6305 09 Aug 13 nicklas 380               id="btnRestoreItems"
5950 09 Feb 12 nicklas 381               image="restore.png"
5950 09 Feb 12 nicklas 382               title="Restore" 
5950 09 Feb 12 nicklas 383               tooltip="Restore the selected items"
5950 09 Feb 12 nicklas 384               disabled="<%=totalCount <= 0%>"
5950 09 Feb 12 nicklas 385             />
5950 09 Feb 12 nicklas 386             <tbl:button 
6305 09 Aug 13 nicklas 387               id="btnShareItems"
5950 09 Feb 12 nicklas 388               image="share.png"
5950 09 Feb 12 nicklas 389               title="Share&hellip;" 
5950 09 Feb 12 nicklas 390               tooltip="Share the selected items"
5950 09 Feb 12 nicklas 391               disabled="<%=totalCount <= 0%>"
5950 09 Feb 12 nicklas 392             />
5950 09 Feb 12 nicklas 393             <tbl:button 
6305 09 Aug 13 nicklas 394               id="btnColumns"
5950 09 Feb 12 nicklas 395               image="columns.png" 
5950 09 Feb 12 nicklas 396               title="Columns&hellip;" 
5950 09 Feb 12 nicklas 397               tooltip="Show, hide and re-order columns" 
5950 09 Feb 12 nicklas 398             />
5950 09 Feb 12 nicklas 399           </tbl:toolbar>
5950 09 Feb 12 nicklas 400           <tbl:panel>
6182 23 Oct 12 nicklas 401             <tbl:presetselector
5948 08 Feb 12 nicklas 402               disableremoved="true"
5948 08 Feb 12 nicklas 403             />
5950 09 Feb 12 nicklas 404             <tbl:navigator
5950 09 Feb 12 nicklas 405               page="<%=cc.getPage()%>" 
5950 09 Feb 12 nicklas 406               rowsperpage="<%=cc.getRowsPerPage()%>" 
5950 09 Feb 12 nicklas 407               totalrows="<%=totalCount%>"
5950 09 Feb 12 nicklas 408             />
5950 09 Feb 12 nicklas 409           </tbl:panel>
5950 09 Feb 12 nicklas 410         </div>
2929 17 Nov 06 nicklas 411         <tbl:data>
5948 08 Feb 12 nicklas 412           <tbl:headers>
5948 08 Feb 12 nicklas 413             <tbl:headerrow>
5950 09 Feb 12 nicklas 414               <tbl:header colspan="3" />
5950 09 Feb 12 nicklas 415               <tbl:columnheaders />
5950 09 Feb 12 nicklas 416             </tbl:headerrow>
6707 02 Feb 15 nicklas 417           <%
6707 02 Feb 15 nicklas 418           int numFilters = cc.getNumPropertyFilters();
6707 02 Feb 15 nicklas 419           int numRows = cc.getFilterRows();
6707 02 Feb 15 nicklas 420           for (int filterNo = 0; filterNo < numRows; filterNo++)
6707 02 Feb 15 nicklas 421           {
6707 02 Feb 15 nicklas 422             boolean lastRow = filterNo == numRows-1;
6707 02 Feb 15 nicklas 423             %>
5950 09 Feb 12 nicklas 424             <tbl:headerrow>
5948 08 Feb 12 nicklas 425               <tbl:header subclass="index" />
5948 08 Feb 12 nicklas 426               <tbl:header 
6707 02 Feb 15 nicklas 427                 subclass="check" 
5948 08 Feb 12 nicklas 428                 ><base:icon 
6834 08 Apr 15 nicklas 429                   subclass="link table-check"
6176 19 Oct 12 nicklas 430                   image="check_uncheck.png" 
6834 08 Apr 15 nicklas 431                   tooltip="Toggle all (use CTRL, ALT or SHIFT to check/uncheck)" 
6707 02 Feb 15 nicklas 432                   visible="<%=lastRow%>"
5948 08 Feb 12 nicklas 433                 /></tbl:header>
5948 08 Feb 12 nicklas 434               <tbl:header 
5948 08 Feb 12 nicklas 435                 subclass="icons" 
6707 02 Feb 15 nicklas 436                 >
6707 02 Feb 15 nicklas 437                 <base:icon
6707 02 Feb 15 nicklas 438                   subclass="link table-filter-row-action"
6707 02 Feb 15 nicklas 439                   image="add.png"
6707 02 Feb 15 nicklas 440                   tooltip="Add extra filter row"
6707 02 Feb 15 nicklas 441                   visible="<%=lastRow%>"
6707 02 Feb 15 nicklas 442                 /><base:icon
6707 02 Feb 15 nicklas 443                   subclass="link table-filter-row-action"
6707 02 Feb 15 nicklas 444                   image="remove.png"
6707 02 Feb 15 nicklas 445                   tooltip="Remove this filter row"
6707 02 Feb 15 nicklas 446                   visible="<%=numRows > 1 || numFilters > 0 %>"
6707 02 Feb 15 nicklas 447                   data-remove-row="<%=filterNo%>"
5948 08 Feb 12 nicklas 448                 />
6707 02 Feb 15 nicklas 449               </tbl:header>
6707 02 Feb 15 nicklas 450               <tbl:propertyfilter row="<%=filterNo%>" />
5948 08 Feb 12 nicklas 451             </tbl:headerrow>
6707 02 Feb 15 nicklas 452             <%
6707 02 Feb 15 nicklas 453           }
6707 02 Feb 15 nicklas 454           %>
5948 08 Feb 12 nicklas 455           </tbl:headers>
2929 17 Nov 06 nicklas 456           <tbl:rows>
2929 17 Nov 06 nicklas 457           <%
5950 09 Feb 12 nicklas 458           if (cc.getMessage() != null)
5950 09 Feb 12 nicklas 459           {
5950 09 Feb 12 nicklas 460             %>
6604 18 Nov 14 nicklas 461             <tbl:panel subclass="bg-filled-50">
5950 09 Feb 12 nicklas 462               <div class="messagecontainer error"><%=HTML.encodeTags(cc.getMessage())%></div>
5950 09 Feb 12 nicklas 463             </tbl:panel>
5950 09 Feb 12 nicklas 464             <%
5950 09 Feb 12 nicklas 465             cc.setMessage(null);
5950 09 Feb 12 nicklas 466           }
2929 17 Nov 06 nicklas 467           int index = cc.getPage()*cc.getRowsPerPage();
2929 17 Nov 06 nicklas 468           if (diskUsage != null)
2929 17 Nov 06 nicklas 469           {
2929 17 Nov 06 nicklas 470             while (diskUsage.hasNext())
2929 17 Nov 06 nicklas 471             {
2929 17 Nov 06 nicklas 472               DiskUsage du = diskUsage.next();
2929 17 Nov 06 nicklas 473               DiskConsumable item = null;
2929 17 Nov 06 nicklas 474               boolean hasReadPermission = true;
2929 17 Nov 06 nicklas 475               boolean hasWritePermission = false;
2929 17 Nov 06 nicklas 476               boolean isRemoved = false;
2929 17 Nov 06 nicklas 477               int consumableId = 0;
2929 17 Nov 06 nicklas 478               try
2929 17 Nov 06 nicklas 479               {
2929 17 Nov 06 nicklas 480                 item = du.getItem();
2929 17 Nov 06 nicklas 481                 consumableId = item.getId();
2929 17 Nov 06 nicklas 482                 hasWritePermission = item.hasPermission(Permission.WRITE);
2929 17 Nov 06 nicklas 483               }
2929 17 Nov 06 nicklas 484               catch (PermissionDeniedException ex)
2929 17 Nov 06 nicklas 485               {
2929 17 Nov 06 nicklas 486                 hasReadPermission = false;
2929 17 Nov 06 nicklas 487               }
2929 17 Nov 06 nicklas 488               String name = "";
2929 17 Nov 06 nicklas 489               String description = "";
2929 17 Nov 06 nicklas 490               if (item instanceof File)
2929 17 Nov 06 nicklas 491               {
2929 17 Nov 06 nicklas 492                 File file = (File)item;
2929 17 Nov 06 nicklas 493                 name = file.getPath().toString();
2929 17 Nov 06 nicklas 494                 description = file.getDescription();
2929 17 Nov 06 nicklas 495               }
2929 17 Nov 06 nicklas 496               else if (item instanceof Nameable)
2929 17 Nov 06 nicklas 497               {
2929 17 Nov 06 nicklas 498                 Nameable nameable = (Nameable)item;
2929 17 Nov 06 nicklas 499                 name = nameable.getName();
2929 17 Nov 06 nicklas 500                 description = nameable.getDescription();
2929 17 Nov 06 nicklas 501               }
2929 17 Nov 06 nicklas 502               else if (item != null)
2929 17 Nov 06 nicklas 503               {
2929 17 Nov 06 nicklas 504                 name = item.toString();
2929 17 Nov 06 nicklas 505               }
2929 17 Nov 06 nicklas 506               if (item instanceof Removable)
2929 17 Nov 06 nicklas 507               {
2929 17 Nov 06 nicklas 508                 isRemoved = ((Removable)item).isRemoved();
2929 17 Nov 06 nicklas 509               }
2929 17 Nov 06 nicklas 510               String link = hasReadPermission ? 
2929 17 Nov 06 nicklas 511                 Base.getLink(ID, HTML.encodeTags(name), du.getItemType(), 
2929 17 Nov 06 nicklas 512                 consumableId, hasWritePermission) : "<i>- denied -</i>";
2929 17 Nov 06 nicklas 513               index++;
2929 17 Nov 06 nicklas 514               numListed++;
2929 17 Nov 06 nicklas 515               %>
2929 17 Nov 06 nicklas 516               <tbl:row>
2929 17 Nov 06 nicklas 517                 <tbl:header 
2929 17 Nov 06 nicklas 518                   clazz="index"
2929 17 Nov 06 nicklas 519                   ><%=index%></tbl:header>
2929 17 Nov 06 nicklas 520                 <tbl:header 
2929 17 Nov 06 nicklas 521                   clazz="check" 
2929 17 Nov 06 nicklas 522                   ><input 
2929 17 Nov 06 nicklas 523                     type="checkbox" 
2929 17 Nov 06 nicklas 524                     name="item:<%=du.getItemType().name()%>" 
2929 17 Nov 06 nicklas 525                     value="<%=consumableId%>"
2929 17 Nov 06 nicklas 526                   ></tbl:header>
2929 17 Nov 06 nicklas 527                 <tbl:header 
2929 17 Nov 06 nicklas 528                   clazz="icons" 
2929 17 Nov 06 nicklas 529                   ><base:icon 
5946 03 Feb 12 nicklas 530                     image="deleted.png" 
2929 17 Nov 06 nicklas 531                     tooltip="This item has been marked for deletion" 
2929 17 Nov 06 nicklas 532                     visible="<%=isRemoved%>"
2929 17 Nov 06 nicklas 533                   />&nbsp;</tbl:header>
2929 17 Nov 06 nicklas 534                 <tbl:cell column="type"><%=du.getItemType()%></tbl:cell>
2929 17 Nov 06 nicklas 535                 <tbl:cell column="name"><%=link%></tbl:cell>
2929 17 Nov 06 nicklas 536                 <tbl:cell column="bytes"><%=Values.formatBytes(du.getBytes())%></tbl:cell>
2929 17 Nov 06 nicklas 537                 <tbl:cell column="location"><%=du.getLocation()%></tbl:cell>
2929 17 Nov 06 nicklas 538                 <tbl:cell column="owner"><base:propertyvalue item="<%=du%>" property="user" /></tbl:cell>
2929 17 Nov 06 nicklas 539                 <tbl:cell column="group"><base:propertyvalue item="<%=du%>" property="group" /></tbl:cell>
2929 17 Nov 06 nicklas 540                 <tbl:cell column="description"><%=HTML.encodeTags(description)%></tbl:cell>
2929 17 Nov 06 nicklas 541               </tbl:row>
2929 17 Nov 06 nicklas 542               <%
2929 17 Nov 06 nicklas 543               }
2929 17 Nov 06 nicklas 544             }
5950 09 Feb 12 nicklas 545             if (numListed == 0)
5950 09 Feb 12 nicklas 546             {
5950 09 Feb 12 nicklas 547               %>
6604 18 Nov 14 nicklas 548               <tbl:panel subclass="bg-filled-50">
5950 09 Feb 12 nicklas 549                 <div class="messagecontainer note">
5950 09 Feb 12 nicklas 550                 <%=totalCount == 0 ? "No items were found" : "No items on this page. Please select another page!" %>
5950 09 Feb 12 nicklas 551                 </div>
5950 09 Feb 12 nicklas 552               </tbl:panel>
5950 09 Feb 12 nicklas 553               <%
5950 09 Feb 12 nicklas 554             }
2929 17 Nov 06 nicklas 555           %>
2929 17 Nov 06 nicklas 556           </tbl:rows>
2929 17 Nov 06 nicklas 557         </tbl:data>
2929 17 Nov 06 nicklas 558       </tbl:table>
5950 09 Feb 12 nicklas 559       </base:section>
2929 17 Nov 06 nicklas 560     </t:tab>
2929 17 Nov 06 nicklas 561     </t:tabcontrol>
2929 17 Nov 06 nicklas 562
2929 17 Nov 06 nicklas 563   </base:body>
2929 17 Nov 06 nicklas 564   </base:page>
2929 17 Nov 06 nicklas 565   <%
2929 17 Nov 06 nicklas 566 }
2929 17 Nov 06 nicklas 567 finally
2929 17 Nov 06 nicklas 568 {
2929 17 Nov 06 nicklas 569   if (dc != null) dc.close();
2929 17 Nov 06 nicklas 570 }
2929 17 Nov 06 nicklas 571
2929 17 Nov 06 nicklas 572 %>