www/filemanager/fileservers/list_fileservers.jsp

Code
Comments
Other
Rev Date Author Line
5361 14 Jun 10 nicklas 1 <%-- $Id $
5361 14 Jun 10 nicklas 2   ------------------------------------------------------------------
5361 14 Jun 10 nicklas 3   Copyright (C) 2010 Nicklas Nordborg
5361 14 Jun 10 nicklas 4
5361 14 Jun 10 nicklas 5   This file is part of BASE - BioArray Software Environment.
5361 14 Jun 10 nicklas 6   Available at http://base.thep.lu.se/
5361 14 Jun 10 nicklas 7
5361 14 Jun 10 nicklas 8   BASE is free software; you can redistribute it and/or
5361 14 Jun 10 nicklas 9   modify it under the terms of the GNU General Public License
5361 14 Jun 10 nicklas 10   as published by the Free Software Foundation; either version 3
5361 14 Jun 10 nicklas 11   of the License, or (at your option) any later version.
5361 14 Jun 10 nicklas 12
5361 14 Jun 10 nicklas 13   BASE is distributed in the hope that it will be useful,
5361 14 Jun 10 nicklas 14   but WITHOUT ANY WARRANTY; without even the implied warranty of
5361 14 Jun 10 nicklas 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
5361 14 Jun 10 nicklas 16   GNU General Public License for more details.
5361 14 Jun 10 nicklas 17
5361 14 Jun 10 nicklas 18   You should have received a copy of the GNU General Public License
5361 14 Jun 10 nicklas 19   along with BASE. If not, see <http://www.gnu.org/licenses/>.
5361 14 Jun 10 nicklas 20   ------------------------------------------------------------------
5361 14 Jun 10 nicklas 21 --%>
5426 24 Sep 10 nicklas 22 <%@ page pageEncoding="UTF-8" session="false"
5361 14 Jun 10 nicklas 23   import="net.sf.basedb.core.SessionControl"
5361 14 Jun 10 nicklas 24   import="net.sf.basedb.core.DbControl"
5361 14 Jun 10 nicklas 25   import="net.sf.basedb.core.Item"
5361 14 Jun 10 nicklas 26   import="net.sf.basedb.core.FileServer"
8160 07 Jun 23 nicklas 27   import="net.sf.basedb.core.AnnotationType"
5361 14 Jun 10 nicklas 28   import="net.sf.basedb.core.ItemQuery"
5361 14 Jun 10 nicklas 29   import="net.sf.basedb.core.ItemResultIterator"
5361 14 Jun 10 nicklas 30   import="net.sf.basedb.core.ItemContext"
5361 14 Jun 10 nicklas 31   import="net.sf.basedb.core.Nameable"
5361 14 Jun 10 nicklas 32   import="net.sf.basedb.core.Permission"
5361 14 Jun 10 nicklas 33   import="net.sf.basedb.core.PluginDefinition"
5361 14 Jun 10 nicklas 34   import="net.sf.basedb.core.plugin.GuiContext"
5361 14 Jun 10 nicklas 35   import="net.sf.basedb.core.plugin.Plugin"
5361 14 Jun 10 nicklas 36   import="net.sf.basedb.core.query.Hql"
5361 14 Jun 10 nicklas 37   import="net.sf.basedb.core.query.Orders"
8160 07 Jun 23 nicklas 38   import="net.sf.basedb.core.snapshot.AnnotationLoaderUtil"
8160 07 Jun 23 nicklas 39   import="net.sf.basedb.core.snapshot.AnnotationTypeFilter"
8160 07 Jun 23 nicklas 40   import="net.sf.basedb.core.snapshot.AnnotationSnapshot"
8160 07 Jun 23 nicklas 41   import="net.sf.basedb.core.snapshot.AnnotationSetSnapshot"
8160 07 Jun 23 nicklas 42   import="net.sf.basedb.core.snapshot.SnapshotManager"
5361 14 Jun 10 nicklas 43   import="net.sf.basedb.clients.web.Base"
5361 14 Jun 10 nicklas 44   import="net.sf.basedb.clients.web.PermissionUtil"
5361 14 Jun 10 nicklas 45   import="net.sf.basedb.clients.web.ModeInfo"
5361 14 Jun 10 nicklas 46   import="net.sf.basedb.clients.web.util.HTML"
5361 14 Jun 10 nicklas 47   import="net.sf.basedb.util.ShareableUtil"
5361 14 Jun 10 nicklas 48   import="net.sf.basedb.util.Values"
5599 31 Mar 11 nicklas 49   import="net.sf.basedb.util.Enumeration"
5361 14 Jun 10 nicklas 50   import="net.sf.basedb.util.formatter.Formatter"
5361 14 Jun 10 nicklas 51   import="net.sf.basedb.clients.web.formatter.FormatterFactory"
5361 14 Jun 10 nicklas 52   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
5361 14 Jun 10 nicklas 53   import="net.sf.basedb.clients.web.extensions.JspContext"
5361 14 Jun 10 nicklas 54   import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
7604 25 Feb 19 nicklas 55   import="net.sf.basedb.clients.web.extensions.toolbar.ButtonAction" 
5361 14 Jun 10 nicklas 56   import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
7604 25 Feb 19 nicklas 57   import="net.sf.basedb.clients.web.extensions.list.ListColumnAction"
6040 30 Mar 12 nicklas 58   import="net.sf.basedb.clients.web.extensions.list.ListColumnUtil"
8160 07 Jun 23 nicklas 59   import="net.sf.basedb.clients.web.util.ProjectSpecificInfoFilter"
5361 14 Jun 10 nicklas 60   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
5599 31 Mar 11 nicklas 61   import="net.sf.basedb.util.extensions.ExtensionsUtil"
5599 31 Mar 11 nicklas 62   import="net.sf.basedb.util.uri.ConnectionManagerUtil"
5599 31 Mar 11 nicklas 63   import="net.sf.basedb.util.uri.ConnectionManagerFactory"
8160 07 Jun 23 nicklas 64   import="java.util.ArrayList"
5361 14 Jun 10 nicklas 65   import="java.util.Date"
5361 14 Jun 10 nicklas 66   import="java.util.Iterator"
5361 14 Jun 10 nicklas 67   import="java.util.List"
5361 14 Jun 10 nicklas 68   import="java.util.Map"
5361 14 Jun 10 nicklas 69 %>
5361 14 Jun 10 nicklas 70 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
5361 14 Jun 10 nicklas 71 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
5361 14 Jun 10 nicklas 72 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
5361 14 Jun 10 nicklas 73 <%!
5361 14 Jun 10 nicklas 74   private static final Item itemType = Item.FILESERVER;
5361 14 Jun 10 nicklas 75   private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.LIST);
5361 14 Jun 10 nicklas 76 %>
5361 14 Jun 10 nicklas 77 <%
5361 14 Jun 10 nicklas 78 final SessionControl sc = Base.getExistingSessionControl(pageContext, Permission.DENIED, itemType);
5361 14 Jun 10 nicklas 79 final String ID = sc.getId();
5361 14 Jun 10 nicklas 80 final boolean createPermission = sc.hasPermission(Permission.CREATE, itemType);
5361 14 Jun 10 nicklas 81 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
5361 14 Jun 10 nicklas 82
5361 14 Jun 10 nicklas 83 final ModeInfo mode = ModeInfo.get(request.getParameter("mode"));
5361 14 Jun 10 nicklas 84 final String callback = request.getParameter("callback");
5361 14 Jun 10 nicklas 85 final String title = mode.generateTitle("file server", "file servers");
7954 12 May 21 nicklas 86 final DbControl dc = sc.newDbControl(":List "+itemType);
5361 14 Jun 10 nicklas 87 ItemResultIterator<FileServer> servers = null;
8160 07 Jun 23 nicklas 88 List<AnnotationLoaderUtil> annotationLoaders = new ArrayList<AnnotationLoaderUtil>();
5361 14 Jun 10 nicklas 89 try
5361 14 Jun 10 nicklas 90 {
5361 14 Jun 10 nicklas 91   Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
5361 14 Jun 10 nicklas 92
5361 14 Jun 10 nicklas 93   Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
8160 07 Jun 23 nicklas 94   ItemQuery<AnnotationType> annotationTypeQuery = Base.getAnnotationTypesQuery(itemType);
8160 07 Jun 23 nicklas 95   SnapshotManager manager = new SnapshotManager();
8160 07 Jun 23 nicklas 96   ProjectSpecificInfoFilter psInfo = new ProjectSpecificInfoFilter();
8160 07 Jun 23 nicklas 97   for (AnnotationType at : annotationTypeQuery.list(dc))
8160 07 Jun 23 nicklas 98   {
8160 07 Jun 23 nicklas 99     annotationLoaders.add(new AnnotationLoaderUtil(dc, manager, at));
8160 07 Jun 23 nicklas 100   }
8160 07 Jun 23 nicklas 101
7914 23 Feb 21 nicklas 102   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, null);
5361 14 Jun 10 nicklas 103   try
5361 14 Jun 10 nicklas 104   {
7914 23 Feb 21 nicklas 105     final ItemQuery<FileServer> query = Base.getConfiguredQuery(dc, cc, jspContext, true, FileServer.getQuery(), mode);
5361 14 Jun 10 nicklas 106     servers = query.iterate(dc);
5361 14 Jun 10 nicklas 107   }
5361 14 Jun 10 nicklas 108   catch (Throwable t)
5361 14 Jun 10 nicklas 109   {
5361 14 Jun 10 nicklas 110     cc.setMessage(t.getMessage());
5361 14 Jun 10 nicklas 111   }
5361 14 Jun 10 nicklas 112   int numListed = 0;
7604 25 Feb 19 nicklas 113   ExtensionsInvoker<ButtonAction> invoker = ToolbarUtil.useExtensions(jspContext);
7604 25 Feb 19 nicklas 114   ExtensionsInvoker<ListColumnAction<FileServer,?>> columnsInvoker = ListColumnUtil.useExtensions(jspContext);
5361 14 Jun 10 nicklas 115   %>
6308 20 Aug 13 nicklas 116   <base:page title="<%=title==null ? "File servers" : title%>" type="<%=mode.getPageType()%>" id="list-page">
6308 20 Aug 13 nicklas 117   <base:head scripts="table.js,~fileservers.js" styles="table.css,toolbar.css">
5361 14 Jun 10 nicklas 118     <ext:scripts context="<%=jspContext%>" />
5361 14 Jun 10 nicklas 119     <ext:stylesheets context="<%=jspContext%>" />
5361 14 Jun 10 nicklas 120   </base:head>
5361 14 Jun 10 nicklas 121   
5361 14 Jun 10 nicklas 122   <base:body>
5952 10 Feb 12 nicklas 123     <h1><%=title==null ? "File servers" : title%></h1>
5952 10 Feb 12 nicklas 124     <div class="content">
5361 14 Jun 10 nicklas 125     <tbl:table 
5361 14 Jun 10 nicklas 126       id="servers" 
5361 14 Jun 10 nicklas 127       columns="<%=cc.getSetting("columns")%>"
5361 14 Jun 10 nicklas 128       sortby="<%=cc.getSortProperty()%>" 
5361 14 Jun 10 nicklas 129       direction="<%=cc.getSortDirection()%>"
5361 14 Jun 10 nicklas 130       action="index.jsp"
5361 14 Jun 10 nicklas 131       sc="<%=sc%>"
5361 14 Jun 10 nicklas 132       item="<%=itemType%>"
6703 02 Feb 15 nicklas 133       filterrows="<%=cc.getFilterRows()%>"
5952 10 Feb 12 nicklas 134       subclass="fulltable"
7982 14 Jun 21 nicklas 135       stickyheaders="<%=cc.getSetting("columns.sticky", "name")%>"
5361 14 Jun 10 nicklas 136       >
5361 14 Jun 10 nicklas 137       <tbl:hidden 
5361 14 Jun 10 nicklas 138         name="mode" 
5361 14 Jun 10 nicklas 139         value="<%=mode.getName()%>" 
5361 14 Jun 10 nicklas 140       />
5361 14 Jun 10 nicklas 141       <tbl:hidden 
5361 14 Jun 10 nicklas 142         name="callback" 
5361 14 Jun 10 nicklas 143         value="<%=callback%>" 
5361 14 Jun 10 nicklas 144         skip="<%=callback == null%>" 
5361 14 Jun 10 nicklas 145       />
5361 14 Jun 10 nicklas 146       <tbl:columndef 
5361 14 Jun 10 nicklas 147         id="name"
5361 14 Jun 10 nicklas 148         property="name"
5361 14 Jun 10 nicklas 149         datatype="string"
5361 14 Jun 10 nicklas 150         title="Name"
5361 14 Jun 10 nicklas 151         sortable="true" 
5361 14 Jun 10 nicklas 152         filterable="true"
5361 14 Jun 10 nicklas 153         exportable="true"
5361 14 Jun 10 nicklas 154         show="always" 
5361 14 Jun 10 nicklas 155       />
5361 14 Jun 10 nicklas 156       <tbl:columndef 
5361 14 Jun 10 nicklas 157         id="id"
5361 14 Jun 10 nicklas 158         clazz="uniquecol"
5361 14 Jun 10 nicklas 159         property="id"
5361 14 Jun 10 nicklas 160         datatype="int"
5361 14 Jun 10 nicklas 161         title="ID"
5361 14 Jun 10 nicklas 162         sortable="true"
5361 14 Jun 10 nicklas 163         filterable="true"
5361 14 Jun 10 nicklas 164         exportable="true"
5361 14 Jun 10 nicklas 165       />
5361 14 Jun 10 nicklas 166       <tbl:columndef 
5361 14 Jun 10 nicklas 167         id="owner"
5361 14 Jun 10 nicklas 168         property="owner.name"
5361 14 Jun 10 nicklas 169         datatype="string"
5361 14 Jun 10 nicklas 170         title="Owner"
5361 14 Jun 10 nicklas 171         sortable="true" 
5361 14 Jun 10 nicklas 172         filterable="true"
5361 14 Jun 10 nicklas 173         exportable="true"
5361 14 Jun 10 nicklas 174       />
5599 31 Mar 11 nicklas 175       <%
5599 31 Mar 11 nicklas 176       Enumeration<String, String> cm = new Enumeration<String, String>();
5599 31 Mar 11 nicklas 177       cm.add("", "- auto -");
5599 31 Mar 11 nicklas 178       for (ConnectionManagerFactory cmf : ConnectionManagerUtil.getFactories())
5599 31 Mar 11 nicklas 179       {
5599 31 Mar 11 nicklas 180         cm.add(cmf.getId(), cmf.getDisplayName());
5599 31 Mar 11 nicklas 181       }
5599 31 Mar 11 nicklas 182       %>
5361 14 Jun 10 nicklas 183       <tbl:columndef 
5599 31 Mar 11 nicklas 184         id="connectionManager"
5599 31 Mar 11 nicklas 185         property="connectionManagerFactory"
5599 31 Mar 11 nicklas 186         datatype="string"
5599 31 Mar 11 nicklas 187         title="Connection manager" 
5599 31 Mar 11 nicklas 188         sortable="true" 
5599 31 Mar 11 nicklas 189         filterable="true" 
5599 31 Mar 11 nicklas 190         exportable="true"
5599 31 Mar 11 nicklas 191         enumeration="<%=cm%>"
5599 31 Mar 11 nicklas 192       />
5599 31 Mar 11 nicklas 193       <tbl:columndef 
5618 28 Apr 11 nicklas 194         id="host"
5618 28 Apr 11 nicklas 195         property="host"
5618 28 Apr 11 nicklas 196         datatype="string"
5618 28 Apr 11 nicklas 197         title="Host" 
5618 28 Apr 11 nicklas 198         sortable="true" 
5618 28 Apr 11 nicklas 199         filterable="true" 
5618 28 Apr 11 nicklas 200         exportable="true"
5618 28 Apr 11 nicklas 201       />
5618 28 Apr 11 nicklas 202       <tbl:columndef 
5361 14 Jun 10 nicklas 203         id="username"
5361 14 Jun 10 nicklas 204         property="username"
5361 14 Jun 10 nicklas 205         datatype="string"
5361 14 Jun 10 nicklas 206         title="Username" 
5361 14 Jun 10 nicklas 207         sortable="true" 
5361 14 Jun 10 nicklas 208         filterable="true" 
5361 14 Jun 10 nicklas 209         exportable="true"
5361 14 Jun 10 nicklas 210       />
5361 14 Jun 10 nicklas 211       <tbl:columndef 
6497 26 Jun 14 nicklas 212         id="rootPath"
6497 26 Jun 14 nicklas 213         property="rootPath"
6497 26 Jun 14 nicklas 214         datatype="string"
6497 26 Jun 14 nicklas 215         title="Root path" 
6497 26 Jun 14 nicklas 216         sortable="true" 
6497 26 Jun 14 nicklas 217         filterable="true" 
6497 26 Jun 14 nicklas 218         exportable="true"
6497 26 Jun 14 nicklas 219       />
6497 26 Jun 14 nicklas 220       <tbl:columndef 
6497 26 Jun 14 nicklas 221         id="sshFingerprint"
6497 26 Jun 14 nicklas 222         property="sshFingerprint"
6497 26 Jun 14 nicklas 223         datatype="string"
6497 26 Jun 14 nicklas 224         title="SSH fingerprint" 
6497 26 Jun 14 nicklas 225         sortable="true" 
6497 26 Jun 14 nicklas 226         filterable="true" 
6497 26 Jun 14 nicklas 227         exportable="true"
6497 26 Jun 14 nicklas 228       />
6497 26 Jun 14 nicklas 229       <tbl:columndef 
7333 11 Apr 17 nicklas 230         id="fingerprintType"
7333 11 Apr 17 nicklas 231         property="fingerprintType"
7333 11 Apr 17 nicklas 232         datatype="string"
7333 11 Apr 17 nicklas 233         title="Fingerprint type" 
7333 11 Apr 17 nicklas 234         enumeration="<%=Enumeration.from(null, FileServer.FINGERPRINT_TYPE_MD5, FileServer.FINGERPRINT_TYPE_SHA256)%>"
7333 11 Apr 17 nicklas 235         sortable="true" 
7333 11 Apr 17 nicklas 236         filterable="true" 
7333 11 Apr 17 nicklas 237         exportable="true"
7333 11 Apr 17 nicklas 238       />
7333 11 Apr 17 nicklas 239       <tbl:columndef 
5361 14 Jun 10 nicklas 240         id="description"
5361 14 Jun 10 nicklas 241         property="description"
5361 14 Jun 10 nicklas 242         datatype="string"
5361 14 Jun 10 nicklas 243         title="Description" 
5361 14 Jun 10 nicklas 244         sortable="true" 
5361 14 Jun 10 nicklas 245         filterable="true" 
5361 14 Jun 10 nicklas 246         exportable="true"
5361 14 Jun 10 nicklas 247       />
5361 14 Jun 10 nicklas 248       <tbl:columndef
5361 14 Jun 10 nicklas 249         id="permission"
5361 14 Jun 10 nicklas 250         title="Permission"
5361 14 Jun 10 nicklas 251       />
5361 14 Jun 10 nicklas 252       <tbl:columndef
5361 14 Jun 10 nicklas 253         id="sharedTo"
5361 14 Jun 10 nicklas 254         title="Shared to"
5361 14 Jun 10 nicklas 255         filterable="true"
5361 14 Jun 10 nicklas 256         filterproperty="!sharedTo.name"
5361 14 Jun 10 nicklas 257         datatype="string"
5361 14 Jun 10 nicklas 258       />
8160 07 Jun 23 nicklas 259       <%
8160 07 Jun 23 nicklas 260       for (AnnotationLoaderUtil loader : annotationLoaders)
8160 07 Jun 23 nicklas 261       {
8160 07 Jun 23 nicklas 262         AnnotationType at = loader.getAnnotationType();
8160 07 Jun 23 nicklas 263         Formatter<Object> formatter = FormatterFactory.getTypeFormatter(sc, at.getValueType());
8160 07 Jun 23 nicklas 264         Enumeration<String, String> annotationEnum = null;
8160 07 Jun 23 nicklas 265         if (at.isEnumeration())
8160 07 Jun 23 nicklas 266         {
8160 07 Jun 23 nicklas 267           annotationEnum = new Enumeration<String, String>();
8160 07 Jun 23 nicklas 268           if (!at.getDisplayAsList()) annotationEnum.add("", "-none-");
8160 07 Jun 23 nicklas 269           List<?> values = at.getValues();
8160 07 Jun 23 nicklas 270           for (Object value : values)
8160 07 Jun 23 nicklas 271           {
8160 07 Jun 23 nicklas 272             String encoded = HTML.encodeTags(value.toString());
8160 07 Jun 23 nicklas 273             annotationEnum.add(encoded, encoded);
8160 07 Jun 23 nicklas 274           }
8160 07 Jun 23 nicklas 275         }
8160 07 Jun 23 nicklas 276         %>
8160 07 Jun 23 nicklas 277         <tbl:columndef 
8160 07 Jun 23 nicklas 278           id="<%=(loader.isSearchingInheritedAnnotations() ? "ia" : "at")+at.getId()%>"
8160 07 Jun 23 nicklas 279           title="<%=HTML.encodeTags(at.getName())+(loader.isSearchingInheritedAnnotations() ? " [I]" : " [A]")%>" 
8160 07 Jun 23 nicklas 280           property="<%=(loader.isSearchingInheritedAnnotations() ? "##" : "#")+at.getId()%>"
8160 07 Jun 23 nicklas 281           annotation="true"
8160 07 Jun 23 nicklas 282           datatype="<%=at.getValueType().getStringValue()%>"
8160 07 Jun 23 nicklas 283           enumeration="<%=annotationEnum%>"
8160 07 Jun 23 nicklas 284           smartenum="<%=at.getDisplayAsList() %>"
8160 07 Jun 23 nicklas 285           sortable="<%=at.getMultiplicity() == 1 && !loader.isSearchingInheritedAnnotations()%>" 
8160 07 Jun 23 nicklas 286           filterable="true" 
8160 07 Jun 23 nicklas 287           exportable="true"
8160 07 Jun 23 nicklas 288           formatter="<%=formatter%>"
8160 07 Jun 23 nicklas 289           unit="<%=at.getDefaultUnit()%>"
8160 07 Jun 23 nicklas 290         />
8160 07 Jun 23 nicklas 291         <%
8160 07 Jun 23 nicklas 292       }
8160 07 Jun 23 nicklas 293       %>
6040 30 Mar 12 nicklas 294       <tbl:columndef 
6040 30 Mar 12 nicklas 295         id="xt-columns" 
6040 30 Mar 12 nicklas 296         extensions="<%=columnsInvoker%>" 
6040 30 Mar 12 nicklas 297         jspcontext="<%=jspContext%>" 
6040 30 Mar 12 nicklas 298       />
6604 18 Nov 14 nicklas 299       <div class="panelgroup bg-filled-50 bottomborder">
5952 10 Feb 12 nicklas 300         <tbl:toolbar
5952 10 Feb 12 nicklas 301           subclass="bottomborder"
5952 10 Feb 12 nicklas 302           visible="<%=mode.hasToolbar()%>"
5952 10 Feb 12 nicklas 303           >
5952 10 Feb 12 nicklas 304           <tbl:button 
6308 20 Aug 13 nicklas 305             id="btnNewItem"
5952 10 Feb 12 nicklas 306             disabled="<%=!createPermission%>" 
5952 10 Feb 12 nicklas 307             image="new.png" 
5952 10 Feb 12 nicklas 308             title="New&hellip;" 
5952 10 Feb 12 nicklas 309             tooltip="<%=createPermission ? "Create new file server" : "You do not have permission to create file servers"%>" 
5952 10 Feb 12 nicklas 310           />
5952 10 Feb 12 nicklas 311           <tbl:button 
6308 20 Aug 13 nicklas 312             id="btnDeleteItems"
5952 10 Feb 12 nicklas 313             image="delete.png"
5952 10 Feb 12 nicklas 314             title="Delete" 
5952 10 Feb 12 nicklas 315             tooltip="Delete the selected items" 
5952 10 Feb 12 nicklas 316           />
5952 10 Feb 12 nicklas 317           <tbl:button 
6308 20 Aug 13 nicklas 318             id="btnRestoreItems"
5952 10 Feb 12 nicklas 319             image="restore.png"
5952 10 Feb 12 nicklas 320             title="Restore" 
5952 10 Feb 12 nicklas 321             tooltip="Restore the selected (deleted) items"
5952 10 Feb 12 nicklas 322           />
5952 10 Feb 12 nicklas 323           <tbl:button 
6308 20 Aug 13 nicklas 324             id="btnShareItems"
5952 10 Feb 12 nicklas 325             image="share.png"
5952 10 Feb 12 nicklas 326             title="Share&hellip;" 
5952 10 Feb 12 nicklas 327             tooltip="Share the selected items"
5952 10 Feb 12 nicklas 328           />
5952 10 Feb 12 nicklas 329           <tbl:button 
6308 20 Aug 13 nicklas 330             id="btnSetOwner"
5952 10 Feb 12 nicklas 331             image="take_ownership.png"
5952 10 Feb 12 nicklas 332             title="Set owner&hellip;"
5952 10 Feb 12 nicklas 333             tooltip="Change owner of the selected items"
5952 10 Feb 12 nicklas 334           />
5952 10 Feb 12 nicklas 335           <tbl:button 
6308 20 Aug 13 nicklas 336             id="btnColumns"
5952 10 Feb 12 nicklas 337             image="columns.png" 
5952 10 Feb 12 nicklas 338             title="Columns&hellip;" 
5952 10 Feb 12 nicklas 339             tooltip="Show, hide and re-order columns" 
5952 10 Feb 12 nicklas 340           />
5952 10 Feb 12 nicklas 341           <tbl:button 
6308 20 Aug 13 nicklas 342             id="btnImport"
6308 20 Aug 13 nicklas 343             data-plugin-type="IMPORT"
5952 10 Feb 12 nicklas 344             image="import.png" 
5952 10 Feb 12 nicklas 345             title="Import&hellip;" 
5952 10 Feb 12 nicklas 346             tooltip="Import data" 
5952 10 Feb 12 nicklas 347             visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
5952 10 Feb 12 nicklas 348           />
5952 10 Feb 12 nicklas 349           <tbl:button 
6308 20 Aug 13 nicklas 350             id="btnExport"
6308 20 Aug 13 nicklas 351             data-plugin-type="EXPORT"
5952 10 Feb 12 nicklas 352             image="export.png" 
5952 10 Feb 12 nicklas 353             title="Export&hellip;" 
5952 10 Feb 12 nicklas 354             tooltip="Export data" 
5952 10 Feb 12 nicklas 355             visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
5952 10 Feb 12 nicklas 356           />
5952 10 Feb 12 nicklas 357           <tbl:button 
6308 20 Aug 13 nicklas 358             id="btnRunPlugin"
6308 20 Aug 13 nicklas 359             data-plugin-type="OTHER"
5952 10 Feb 12 nicklas 360             image="runplugin.png" 
5952 10 Feb 12 nicklas 361             title="Run plugin&hellip;" 
5952 10 Feb 12 nicklas 362             tooltip="Run a plugin" 
5952 10 Feb 12 nicklas 363             visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
5952 10 Feb 12 nicklas 364           />
5952 10 Feb 12 nicklas 365           <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
7604 25 Feb 19 nicklas 366             wrapper="<%=new PrefixSuffixRenderer<ButtonAction>(jspContext, "<td>", "</td>") %>"/>
5952 10 Feb 12 nicklas 367         </tbl:toolbar>
5952 10 Feb 12 nicklas 368         <tbl:panel>
6182 23 Oct 12 nicklas 369           <tbl:presetselector />
5952 10 Feb 12 nicklas 370           <tbl:navigator
5952 10 Feb 12 nicklas 371             page="<%=cc.getPage()%>" 
5952 10 Feb 12 nicklas 372             rowsperpage="<%=cc.getRowsPerPage()%>" 
5952 10 Feb 12 nicklas 373             totalrows="<%=servers == null ? 0 : servers.getTotalCount()%>" 
5952 10 Feb 12 nicklas 374             visible="<%=mode.hasNavigator()%>"
5952 10 Feb 12 nicklas 375           />
5952 10 Feb 12 nicklas 376         </tbl:panel>
5952 10 Feb 12 nicklas 377       </div>
5361 14 Jun 10 nicklas 378       <tbl:data>
5948 08 Feb 12 nicklas 379         <tbl:headers>
5948 08 Feb 12 nicklas 380           <tbl:headerrow>
7943 04 May 21 nicklas 381             <tbl:header clazz="row-index bg-filled-100" />
5948 08 Feb 12 nicklas 382             <tbl:columnheaders />
5948 08 Feb 12 nicklas 383           </tbl:headerrow>
6703 02 Feb 15 nicklas 384           <%
6703 02 Feb 15 nicklas 385           int numFilters = cc.getNumPropertyFilters();
6703 02 Feb 15 nicklas 386           int numRows = cc.getFilterRows();
6703 02 Feb 15 nicklas 387           for (int filterNo = 0; filterNo < numRows; filterNo++)
6703 02 Feb 15 nicklas 388           {
6703 02 Feb 15 nicklas 389             boolean lastRow = filterNo == numRows-1;
6703 02 Feb 15 nicklas 390             %>
6703 02 Feb 15 nicklas 391             <tbl:headerrow>
7943 04 May 21 nicklas 392               <tbl:header subclass="row-index bg-filled-100">
7943 04 May 21 nicklas 393                 <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 394                   <div class="index"></div>
7943 04 May 21 nicklas 395                   <div class="check">
7943 04 May 21 nicklas 396                     <base:icon 
7943 04 May 21 nicklas 397                       subclass="link table-check"
7943 04 May 21 nicklas 398                       image="check_uncheck.png" 
7943 04 May 21 nicklas 399                       tooltip="Toggle all (use CTRL, ALT or SHIFT to check/uncheck)" 
7943 04 May 21 nicklas 400                       visible="<%=lastRow && mode.hasCheck()%>"
7943 04 May 21 nicklas 401                     />
7943 04 May 21 nicklas 402                   </div>
7943 04 May 21 nicklas 403                   <div class="icons">
7943 04 May 21 nicklas 404                     <base:icon
7943 04 May 21 nicklas 405                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 406                       image="add.png"
7943 04 May 21 nicklas 407                       tooltip="Add extra filter row"
7943 04 May 21 nicklas 408                       visible="<%=lastRow%>"
7943 04 May 21 nicklas 409                     /><base:icon
7943 04 May 21 nicklas 410                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 411                       image="remove.png"
7943 04 May 21 nicklas 412                       tooltip="Remove this filter row"
7943 04 May 21 nicklas 413                       visible="<%=numRows > 1 || numFilters > 0 %>"
7943 04 May 21 nicklas 414                       data-remove-row="<%=filterNo%>"
7943 04 May 21 nicklas 415                     />
7943 04 May 21 nicklas 416                   </div>
7943 04 May 21 nicklas 417                 </div>
6703 02 Feb 15 nicklas 418               </tbl:header>
6703 02 Feb 15 nicklas 419               <tbl:propertyfilter row="<%=filterNo%>" />
6703 02 Feb 15 nicklas 420             </tbl:headerrow>
6703 02 Feb 15 nicklas 421             <%
6703 02 Feb 15 nicklas 422           }
6703 02 Feb 15 nicklas 423           %>
7913 22 Feb 21 nicklas 424           <tbl:columnsubtitles />
5948 08 Feb 12 nicklas 425         </tbl:headers>
5948 08 Feb 12 nicklas 426         <tbl:rows>
5361 14 Jun 10 nicklas 427           <%
5952 10 Feb 12 nicklas 428           if (cc.getMessage() != null)
5952 10 Feb 12 nicklas 429           {
5952 10 Feb 12 nicklas 430             %>
6604 18 Nov 14 nicklas 431             <tbl:panel subclass="bg-filled-50">
5952 10 Feb 12 nicklas 432               <div class="messagecontainer error"><%=cc.getMessage()%></div>
5952 10 Feb 12 nicklas 433             </tbl:panel>
5952 10 Feb 12 nicklas 434             <%
5952 10 Feb 12 nicklas 435             cc.setMessage(null);
5952 10 Feb 12 nicklas 436           }
5361 14 Jun 10 nicklas 437           int index = cc.getPage()*cc.getRowsPerPage();
5361 14 Jun 10 nicklas 438           int selectedItemId = cc.getId();
5361 14 Jun 10 nicklas 439           if (servers != null)
5361 14 Jun 10 nicklas 440           {            
5361 14 Jun 10 nicklas 441             while (servers.hasNext())
5361 14 Jun 10 nicklas 442             {
5361 14 Jun 10 nicklas 443               FileServer item = servers.next();
5361 14 Jun 10 nicklas 444               int itemId = item.getId();
6221 10 Jan 13 nicklas 445               
6221 10 Jan 13 nicklas 446               
5361 14 Jun 10 nicklas 447               boolean deletePermission = item.hasPermission(Permission.DELETE);
5361 14 Jun 10 nicklas 448               boolean sharePermission = item.hasPermission(Permission.SET_PERMISSION);  
5361 14 Jun 10 nicklas 449               boolean usePermission = item.hasPermission(Permission.USE);
5361 14 Jun 10 nicklas 450               boolean writePermission = item.hasPermission(Permission.WRITE);
5361 14 Jun 10 nicklas 451               String tooltip = mode.isSelectionMode() ? 
5361 14 Jun 10 nicklas 452                   "Select this item" : "View this item" + (writePermission ? " (use CTRL, ALT or SHIFT to edit)" : "");
5361 14 Jun 10 nicklas 453               String name = HTML.encodeTags(item.getName());
5361 14 Jun 10 nicklas 454               index++;
5361 14 Jun 10 nicklas 455               numListed++;
5599 31 Mar 11 nicklas 456               ConnectionManagerFactory cmf = ConnectionManagerUtil.getFactory(item.getConnectionManagerFactoryId());
5361 14 Jun 10 nicklas 457               %>
5361 14 Jun 10 nicklas 458               <tbl:row>
7943 04 May 21 nicklas 459                 <tbl:header clazz="row-index bg-filled-100">
7943 04 May 21 nicklas 460                   <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 461                     <div class="index <%=index>999?"index-smaller":""%>"><%=index%></div>
7943 04 May 21 nicklas 462                     <div class="check">
7943 04 May 21 nicklas 463                       <base:input
7943 04 May 21 nicklas 464                         type="checkbox" 
7943 04 May 21 nicklas 465                         name="<%=itemId%>" 
7943 04 May 21 nicklas 466                         value="<%=itemId%>" 
7943 04 May 21 nicklas 467                         title="<%=name%>" 
7943 04 May 21 nicklas 468                         checked="<%=cc.getSelected().contains(itemId)%>"
7943 04 May 21 nicklas 469                         visible="<%=mode.hasCheck()%>"
7943 04 May 21 nicklas 470                       />
7943 04 May 21 nicklas 471                       <base:input 
7943 04 May 21 nicklas 472                         type="radio" 
7943 04 May 21 nicklas 473                         name="item_id" 
7943 04 May 21 nicklas 474                         value="<%=itemId%>" 
7943 04 May 21 nicklas 475                         title="<%=name%>" 
7943 04 May 21 nicklas 476                         checked="<%=selectedItemId == itemId%>"
7943 04 May 21 nicklas 477                         visible="<%=mode.hasRadio()%>"
7943 04 May 21 nicklas 478                       />
7943 04 May 21 nicklas 479                     </div>
7943 04 May 21 nicklas 480                     <div class="icons">
7943 04 May 21 nicklas 481                       <base:icon 
7943 04 May 21 nicklas 482                         image="deleted.png"
7943 04 May 21 nicklas 483                         id="<%="delete."+itemId %>"
7943 04 May 21 nicklas 484                         subclass="<%=deletePermission ? "table-delete-item" : "disabled" %>"
7943 04 May 21 nicklas 485                         data-item-id="<%=itemId%>"
7943 04 May 21 nicklas 486                         tooltip="This item has been scheduled for deletion" 
7943 04 May 21 nicklas 487                         visible="<%=item.isRemoved()%>"
7943 04 May 21 nicklas 488                       /><base:icon 
7943 04 May 21 nicklas 489                         image="shared.png" 
7943 04 May 21 nicklas 490                         id="<%="share."+itemId %>"
7943 04 May 21 nicklas 491                         subclass="<%=sharePermission ? "table-share-item" : "disabled" %>"
7943 04 May 21 nicklas 492                         data-item-id="<%=itemId%>"
7943 04 May 21 nicklas 493                         tooltip="This item is shared to other users, groups and/or projects" 
7943 04 May 21 nicklas 494                         visible="<%=item.isShared()%>"
7943 04 May 21 nicklas 495                       />
7943 04 May 21 nicklas 496                     </div>
7943 04 May 21 nicklas 497                   </div>
7943 04 May 21 nicklas 498                 </tbl:header>
6308 20 Aug 13 nicklas 499                 <tbl:cell column="name"><div
6308 20 Aug 13 nicklas 500                   class="link table-item"
6308 20 Aug 13 nicklas 501                   data-item-id="<%=itemId%>"
6308 20 Aug 13 nicklas 502                   data-no-edit="<%=writePermission ? 0 : 1 %>" 
6308 20 Aug 13 nicklas 503                   tabindex="0"
5361 14 Jun 10 nicklas 504                   title="<%=tooltip%>"><%=name%></div></tbl:cell>
5361 14 Jun 10 nicklas 505                 <tbl:cell column="id"><%=item.getId()%></tbl:cell>
5361 14 Jun 10 nicklas 506                 <tbl:cell column="owner"
5361 14 Jun 10 nicklas 507                   ><base:propertyvalue 
5361 14 Jun 10 nicklas 508                     item="<%=item%>" 
5361 14 Jun 10 nicklas 509                     property="owner"
5361 14 Jun 10 nicklas 510                     enableEditLink="<%=mode.hasEditLink()%>" 
5361 14 Jun 10 nicklas 511                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
5361 14 Jun 10 nicklas 512                   /></tbl:cell>
5599 31 Mar 11 nicklas 513                 <tbl:cell column="connectionManager"><%=cmf == null ? "<i>- auto -</i>" : HTML.encodeTags(cmf.getDisplayName())%></tbl:cell>
5618 28 Apr 11 nicklas 514                 <tbl:cell column="host"><%=HTML.encodeTags(item.getHost())%></tbl:cell>
5361 14 Jun 10 nicklas 515                 <tbl:cell column="username"><%=HTML.encodeTags(item.getUsername())%></tbl:cell>
6497 26 Jun 14 nicklas 516                 <tbl:cell column="rootPath"><%=HTML.encodeTags(item.getRootPath())%></tbl:cell>
6497 26 Jun 14 nicklas 517                 <tbl:cell column="sshFingerprint"><%=HTML.encodeTags(item.getSshFingerprint())%></tbl:cell>
7333 11 Apr 17 nicklas 518                 <tbl:cell column="fingerprintType"><%=HTML.encodeTags(item.getFingerprintType())%></tbl:cell>
5361 14 Jun 10 nicklas 519                 <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
5361 14 Jun 10 nicklas 520                 <tbl:cell column="permission"><%=PermissionUtil.getShortPermissions(item)%></tbl:cell>
5361 14 Jun 10 nicklas 521                 <tbl:cell column="sharedTo">
5361 14 Jun 10 nicklas 522                   <%
5361 14 Jun 10 nicklas 523                   Iterator<Nameable> sharees = ShareableUtil.getSharedTo(dc, item).iterator();
5361 14 Jun 10 nicklas 524                   while(sharees.hasNext())
5361 14 Jun 10 nicklas 525                   {
5361 14 Jun 10 nicklas 526                     Nameable n = sharees.next();
5361 14 Jun 10 nicklas 527                     if (mode.hasPropertyLink())
5361 14 Jun 10 nicklas 528                     {
5361 14 Jun 10 nicklas 529                       out.write(Base.getLinkedName(ID, n, false, mode.hasEditLink()));
5361 14 Jun 10 nicklas 530                     }
5361 14 Jun 10 nicklas 531                     else
5361 14 Jun 10 nicklas 532                     {
5361 14 Jun 10 nicklas 533                       out.write(HTML.encodeTags(n.getName()));
5361 14 Jun 10 nicklas 534                     }
5361 14 Jun 10 nicklas 535                     out.write(sharees.hasNext() ? ", " : "");
5361 14 Jun 10 nicklas 536                   }
5361 14 Jun 10 nicklas 537                   %>
5361 14 Jun 10 nicklas 538                 </tbl:cell>
8160 07 Jun 23 nicklas 539                 <%
8160 07 Jun 23 nicklas 540                 if (item.isAnnotated())
8160 07 Jun 23 nicklas 541                 {
8160 07 Jun 23 nicklas 542                   AnnotationSetSnapshot snapshot = manager.getSnapshot(dc, item.getAnnotationSet().getId());
8160 07 Jun 23 nicklas 543                   for (AnnotationLoaderUtil loader : annotationLoaders)
8160 07 Jun 23 nicklas 544                   {
8160 07 Jun 23 nicklas 545                     %>
8160 07 Jun 23 nicklas 546                     <tbl:cell 
8160 07 Jun 23 nicklas 547                       column="<%=(loader.isSearchingInheritedAnnotations() ? "ia" : "at")+loader.getId()%>"
8160 07 Jun 23 nicklas 548                       ><%
8160 07 Jun 23 nicklas 549                       if (loader.find(snapshot, psInfo.reset())) 
8160 07 Jun 23 nicklas 550                       {
8160 07 Jun 23 nicklas 551                         %><tbl:cellvalue 
8160 07 Jun 23 nicklas 552                           list="<%=loader.getValues()%>"
8160 07 Jun 23 nicklas 553                           bulletlist="<%=loader.useBulletList() %>"
8160 07 Jun 23 nicklas 554                           suffix="<%=loader.getUnitSymbol()%>"
8160 07 Jun 23 nicklas 555                           clazz="<%=psInfo.hasProjectSpecificAnnotation() ? "ps-annotation" : null%>"
8160 07 Jun 23 nicklas 556                         /><%
8160 07 Jun 23 nicklas 557                       }
8160 07 Jun 23 nicklas 558                       %></tbl:cell>
8160 07 Jun 23 nicklas 559                     <%
8160 07 Jun 23 nicklas 560                   }
8160 07 Jun 23 nicklas 561                 }
8160 07 Jun 23 nicklas 562                 %>
6040 30 Mar 12 nicklas 563                 <tbl:xt-cells dc="<%=dc%>" item="<%=item%>">
6040 30 Mar 12 nicklas 564                   <tbl:cell column="xt-columns" />
6040 30 Mar 12 nicklas 565                 </tbl:xt-cells>
5361 14 Jun 10 nicklas 566               </tbl:row>
5361 14 Jun 10 nicklas 567               <%
5361 14 Jun 10 nicklas 568               }
5361 14 Jun 10 nicklas 569             }
5952 10 Feb 12 nicklas 570           if (numListed == 0)
5952 10 Feb 12 nicklas 571           {
5952 10 Feb 12 nicklas 572             %>
6604 18 Nov 14 nicklas 573             <tbl:panel subclass="bg-filled-50">
5952 10 Feb 12 nicklas 574               <div class="messagecontainer note">
5952 10 Feb 12 nicklas 575               <%=servers == null || servers.getTotalCount() == 0 ? "No file servers were found" : "No file servers on this page. Please select another page!" %>
5952 10 Feb 12 nicklas 576               </div>
5952 10 Feb 12 nicklas 577             </tbl:panel>
5952 10 Feb 12 nicklas 578             <%
5952 10 Feb 12 nicklas 579           }
5361 14 Jun 10 nicklas 580           %>
5952 10 Feb 12 nicklas 581         </tbl:rows>
5361 14 Jun 10 nicklas 582       </tbl:data>
5361 14 Jun 10 nicklas 583     </tbl:table>
5952 10 Feb 12 nicklas 584     </div>
5952 10 Feb 12 nicklas 585     
5951 09 Feb 12 nicklas 586     <base:buttongroup subclass="dialogbuttons">
6308 20 Aug 13 nicklas 587       <base:button id="btnOk" title="Ok" visible="<%=mode.hasOkButton()%>" />
6308 20 Aug 13 nicklas 588       <base:button id="close" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
6308 20 Aug 13 nicklas 589       <base:button id="close" title="Close" visible="<%=mode.hasCloseButton()%>" />
5361 14 Jun 10 nicklas 590     </base:buttongroup>
5951 09 Feb 12 nicklas 591     
5361 14 Jun 10 nicklas 592   </base:body>
5361 14 Jun 10 nicklas 593   </base:page>
5361 14 Jun 10 nicklas 594   <%
5361 14 Jun 10 nicklas 595 }
5361 14 Jun 10 nicklas 596 finally
5361 14 Jun 10 nicklas 597 {
5361 14 Jun 10 nicklas 598   if (servers != null) servers.close();
5361 14 Jun 10 nicklas 599   if (dc != null) dc.close();
5361 14 Jun 10 nicklas 600 }
5361 14 Jun 10 nicklas 601 %>