www/lims/plates/list_plates.jsp

Code
Comments
Other
Rev Date Author Line
1847 26 Jan 06 nicklas 1 <%-- $Id$
1847 26 Jan 06 nicklas 2   ------------------------------------------------------------------
5425 23 Sep 10 nicklas 3   Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
3675 16 Aug 07 jari 4   Copyright (C) 2007 Johan Enell, Martin Svensson
1847 26 Jan 06 nicklas 5
2304 22 May 06 jari 6   This file is part of BASE - BioArray Software Environment.
2304 22 May 06 jari 7   Available at http://base.thep.lu.se/
1847 26 Jan 06 nicklas 8
1847 26 Jan 06 nicklas 9   BASE is free software; you can redistribute it and/or
1847 26 Jan 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
1847 26 Jan 06 nicklas 12   of the License, or (at your option) any later version.
1847 26 Jan 06 nicklas 13
1847 26 Jan 06 nicklas 14   BASE is distributed in the hope that it will be useful,
1847 26 Jan 06 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
1847 26 Jan 06 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1847 26 Jan 06 nicklas 17   GNU General Public License for more details.
1847 26 Jan 06 nicklas 18
1847 26 Jan 06 nicklas 19   You should have received a copy of the GNU General Public License
4511 11 Sep 08 jari 20   along with BASE. If not, see <http://www.gnu.org/licenses/>.
1847 26 Jan 06 nicklas 21   ------------------------------------------------------------------
1847 26 Jan 06 nicklas 22
1847 26 Jan 06 nicklas 23   @author Nicklas
1847 26 Jan 06 nicklas 24   @version 2.0
1847 26 Jan 06 nicklas 25 --%>
5426 24 Sep 10 nicklas 26 <%@ page pageEncoding="UTF-8" session="false"
1847 26 Jan 06 nicklas 27   import="net.sf.basedb.core.SessionControl"
1847 26 Jan 06 nicklas 28   import="net.sf.basedb.core.DbControl"
1847 26 Jan 06 nicklas 29   import="net.sf.basedb.core.Item"
1847 26 Jan 06 nicklas 30   import="net.sf.basedb.core.AnnotationType"
1847 26 Jan 06 nicklas 31   import="net.sf.basedb.core.AnnotationSet"
4560 06 Oct 08 nicklas 32   import="net.sf.basedb.core.Annotation"
1847 26 Jan 06 nicklas 33   import="net.sf.basedb.core.Plate"
1847 26 Jan 06 nicklas 34   import="net.sf.basedb.core.PlateGeometry"
1847 26 Jan 06 nicklas 35   import="net.sf.basedb.core.ItemQuery"
1847 26 Jan 06 nicklas 36   import="net.sf.basedb.core.Include"
2446 29 Jun 06 nicklas 37   import="net.sf.basedb.core.Type"
1847 26 Jan 06 nicklas 38   import="net.sf.basedb.core.ItemResultIterator"
1847 26 Jan 06 nicklas 39   import="net.sf.basedb.core.ItemResultList"
1847 26 Jan 06 nicklas 40   import="net.sf.basedb.core.ItemContext"
3553 09 Jul 07 martin 41   import="net.sf.basedb.core.Nameable"
1847 26 Jan 06 nicklas 42   import="net.sf.basedb.core.Permission"
1847 26 Jan 06 nicklas 43   import="net.sf.basedb.core.PluginDefinition"
1847 26 Jan 06 nicklas 44   import="net.sf.basedb.core.query.Hql"
1847 26 Jan 06 nicklas 45   import="net.sf.basedb.core.query.Restrictions"
1847 26 Jan 06 nicklas 46   import="net.sf.basedb.core.query.Expressions"
1847 26 Jan 06 nicklas 47   import="net.sf.basedb.core.plugin.GuiContext"
1847 26 Jan 06 nicklas 48   import="net.sf.basedb.core.plugin.Plugin"
1847 26 Jan 06 nicklas 49   import="net.sf.basedb.core.query.Orders"
1847 26 Jan 06 nicklas 50   import="net.sf.basedb.core.query.Hql"
6541 29 Sep 14 nicklas 51   import="net.sf.basedb.core.snapshot.AnnotationLoaderUtil"
6541 29 Sep 14 nicklas 52   import="net.sf.basedb.core.snapshot.AnnotationTypeFilter"
6541 29 Sep 14 nicklas 53   import="net.sf.basedb.core.snapshot.AnnotationSnapshot"
6541 29 Sep 14 nicklas 54   import="net.sf.basedb.core.snapshot.AnnotationSetSnapshot"
6541 29 Sep 14 nicklas 55   import="net.sf.basedb.core.snapshot.SnapshotManager"
1847 26 Jan 06 nicklas 56   import="net.sf.basedb.util.Enumeration"
3553 09 Jul 07 martin 57   import="net.sf.basedb.util.ShareableUtil"
1847 26 Jan 06 nicklas 58   import="net.sf.basedb.clients.web.Base"
1847 26 Jan 06 nicklas 59   import="net.sf.basedb.clients.web.ModeInfo"
2401 21 Jun 06 martin 60   import="net.sf.basedb.clients.web.PermissionUtil"
1847 26 Jan 06 nicklas 61   import="net.sf.basedb.clients.web.util.HTML"
2942 22 Nov 06 nicklas 62   import="net.sf.basedb.util.formatter.Formatter"
2942 22 Nov 06 nicklas 63   import="net.sf.basedb.clients.web.formatter.FormatterFactory"
2753 20 Oct 06 nicklas 64   import="net.sf.basedb.util.Values"
4698 10 Dec 08 nicklas 65   import="net.sf.basedb.util.formatter.Formatter"
4698 10 Dec 08 nicklas 66   import="net.sf.basedb.clients.web.formatter.FormatterFactory"
4884 03 Apr 09 nicklas 67   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
4884 03 Apr 09 nicklas 68   import="net.sf.basedb.clients.web.extensions.JspContext"
4884 03 Apr 09 nicklas 69   import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
7604 25 Feb 19 nicklas 70   import="net.sf.basedb.clients.web.extensions.toolbar.ButtonAction" 
4884 03 Apr 09 nicklas 71   import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
7604 25 Feb 19 nicklas 72   import="net.sf.basedb.clients.web.extensions.list.ListColumnAction"
6039 29 Mar 12 nicklas 73   import="net.sf.basedb.clients.web.extensions.list.ListColumnUtil"
7337 12 Apr 17 nicklas 74   import="net.sf.basedb.clients.web.util.ProjectSpecificInfoFilter"
4884 03 Apr 09 nicklas 75   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
4698 10 Dec 08 nicklas 76   import="java.util.Date"
3553 09 Jul 07 martin 77   import="java.util.Iterator"
1847 26 Jan 06 nicklas 78   import="java.util.List"
1847 26 Jan 06 nicklas 79   import="java.util.Map"
6541 29 Sep 14 nicklas 80   import="java.util.ArrayList"
1847 26 Jan 06 nicklas 81 %>
1847 26 Jan 06 nicklas 82 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
1847 26 Jan 06 nicklas 83 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
4884 03 Apr 09 nicklas 84 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
1847 26 Jan 06 nicklas 85 <%!
1847 26 Jan 06 nicklas 86   private static final Item itemType = Item.PLATE;
1847 26 Jan 06 nicklas 87   private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.LIST);
1847 26 Jan 06 nicklas 88 %>
1847 26 Jan 06 nicklas 89 <%
1847 26 Jan 06 nicklas 90 final SessionControl sc = Base.getExistingSessionControl(pageContext, Permission.DENIED, itemType);
1847 26 Jan 06 nicklas 91 final String ID = sc.getId();
1847 26 Jan 06 nicklas 92 final boolean createPermission = sc.hasPermission(Permission.CREATE, itemType);
1847 26 Jan 06 nicklas 93 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
1847 26 Jan 06 nicklas 94
1847 26 Jan 06 nicklas 95 final ModeInfo mode = ModeInfo.get(request.getParameter("mode"));
1847 26 Jan 06 nicklas 96 final String callback = request.getParameter("callback");
1847 26 Jan 06 nicklas 97 final String title = mode.generateTitle("plate", "plates");
7954 12 May 21 nicklas 98 final DbControl dc = sc.newDbControl(":List "+itemType);
1847 26 Jan 06 nicklas 99 ItemResultIterator<Plate> plates = null;
6541 29 Sep 14 nicklas 100 List<AnnotationLoaderUtil> annotationLoaders = new ArrayList<AnnotationLoaderUtil>();
1847 26 Jan 06 nicklas 101 try
1847 26 Jan 06 nicklas 102 {
4698 10 Dec 08 nicklas 103   Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
1847 26 Jan 06 nicklas 104   final ItemQuery<AnnotationType> annotationTypeQuery = Base.getAnnotationTypesQuery(itemType);
6541 29 Sep 14 nicklas 105   SnapshotManager manager = new SnapshotManager();
7337 12 Apr 17 nicklas 106   ProjectSpecificInfoFilter psInfo = new ProjectSpecificInfoFilter();
6541 29 Sep 14 nicklas 107   for (AnnotationType at : annotationTypeQuery.list(dc))
6541 29 Sep 14 nicklas 108   {
6541 29 Sep 14 nicklas 109     annotationLoaders.add(new AnnotationLoaderUtil(dc, manager, at));
6541 29 Sep 14 nicklas 110   }
1847 26 Jan 06 nicklas 111
1847 26 Jan 06 nicklas 112   final ItemQuery<PlateGeometry> geometryQuery = PlateGeometry.getQuery();
1847 26 Jan 06 nicklas 113   geometryQuery.order(Orders.asc(Hql.property("name")));
1847 26 Jan 06 nicklas 114   geometryQuery.setCacheResult(true);
1847 26 Jan 06 nicklas 115   
2446 29 Jun 06 nicklas 116   // Query for parent plates of the current plate
2446 29 Jun 06 nicklas 117   final ItemQuery<Plate> parentQuery = Plate.getQuery();
2446 29 Jun 06 nicklas 118   parentQuery.include(cc.getInclude());
2446 29 Jun 06 nicklas 119   parentQuery.join(Hql.innerJoin("children", "c"));
2446 29 Jun 06 nicklas 120   parentQuery.restrict(Restrictions.eq(Hql.alias("c"), Expressions.parameter("plate")));
2446 29 Jun 06 nicklas 121   parentQuery.order(Orders.asc(Hql.property("name"))); 
2446 29 Jun 06 nicklas 122
2446 29 Jun 06 nicklas 123   // Query for child plates of the current plate
2446 29 Jun 06 nicklas 124   final ItemQuery<Plate> childQuery = Plate.getQuery();
2446 29 Jun 06 nicklas 125   childQuery.include(cc.getInclude());
2446 29 Jun 06 nicklas 126   childQuery.join(Hql.innerJoin("parents", "p"));
2446 29 Jun 06 nicklas 127   childQuery.restrict(Restrictions.eq(Hql.index("p", null), Expressions.parameter("plate")));
2446 29 Jun 06 nicklas 128   childQuery.order(Orders.asc(Hql.property("name"))); 
2446 29 Jun 06 nicklas 129   
1847 26 Jan 06 nicklas 130   Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
7914 23 Feb 21 nicklas 131   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, null);
2029 20 Feb 06 nicklas 132   try
2029 20 Feb 06 nicklas 133   {
7914 23 Feb 21 nicklas 134     final ItemQuery<Plate> query = Base.getConfiguredQuery(dc, cc, jspContext, true, Plate.getQuery(), mode);
2029 20 Feb 06 nicklas 135     plates = query.iterate(dc);
2029 20 Feb 06 nicklas 136   }
2029 20 Feb 06 nicklas 137   catch (Throwable t)
2029 20 Feb 06 nicklas 138   {
2029 20 Feb 06 nicklas 139     cc.setMessage(t.getMessage());
4560 06 Oct 08 nicklas 140     t.printStackTrace();
2029 20 Feb 06 nicklas 141   }
1847 26 Jan 06 nicklas 142   int numListed = 0;
7604 25 Feb 19 nicklas 143   ExtensionsInvoker<ButtonAction> invoker = ToolbarUtil.useExtensions(jspContext);
7604 25 Feb 19 nicklas 144   ExtensionsInvoker<ListColumnAction<Plate,?>> columnsInvoker = ListColumnUtil.useExtensions(jspContext);
1847 26 Jan 06 nicklas 145   %>
6307 15 Aug 13 nicklas 146   <base:page title="<%=title==null ? "Plates" : title%>" type="<%=mode.getPageType()%>" id="list-page">
6307 15 Aug 13 nicklas 147   <base:head scripts="table.js,~plates.js" styles="table.css,toolbar.css">
4884 03 Apr 09 nicklas 148     <ext:scripts context="<%=jspContext%>" />
4884 03 Apr 09 nicklas 149     <ext:stylesheets context="<%=jspContext%>" />
1847 26 Jan 06 nicklas 150   </base:head>
1847 26 Jan 06 nicklas 151   
1847 26 Jan 06 nicklas 152   <base:body>
5954 13 Feb 12 nicklas 153     <h1><%=title==null ? "Plates" : title%></h1>
5954 13 Feb 12 nicklas 154     <div class="content">
1847 26 Jan 06 nicklas 155     <tbl:table 
1847 26 Jan 06 nicklas 156       id="plates" 
1847 26 Jan 06 nicklas 157       columns="<%=cc.getSetting("columns")%>"
1847 26 Jan 06 nicklas 158       sortby="<%=cc.getSortProperty()%>" 
1847 26 Jan 06 nicklas 159       direction="<%=cc.getSortDirection()%>"
1847 26 Jan 06 nicklas 160       action="index.jsp"
1847 26 Jan 06 nicklas 161       sc="<%=sc%>"
1847 26 Jan 06 nicklas 162       item="<%=itemType%>"
6702 02 Feb 15 nicklas 163       filterrows="<%=cc.getFilterRows()%>"
5954 13 Feb 12 nicklas 164       subclass="fulltable"
7982 14 Jun 21 nicklas 165       stickyheaders="<%=cc.getSetting("columns.sticky", "name")%>"
1847 26 Jan 06 nicklas 166       >
1847 26 Jan 06 nicklas 167       <tbl:hidden 
1847 26 Jan 06 nicklas 168         name="mode" 
1847 26 Jan 06 nicklas 169         value="<%=mode.getName()%>" 
1847 26 Jan 06 nicklas 170       />
1847 26 Jan 06 nicklas 171       <tbl:hidden 
1847 26 Jan 06 nicklas 172         name="callback" 
1847 26 Jan 06 nicklas 173         value="<%=callback%>" 
1847 26 Jan 06 nicklas 174         skip="<%=callback == null%>" 
1847 26 Jan 06 nicklas 175       />
1847 26 Jan 06 nicklas 176       <tbl:columndef 
1847 26 Jan 06 nicklas 177         id="name"
1847 26 Jan 06 nicklas 178         property="name"
1847 26 Jan 06 nicklas 179         datatype="string"
1847 26 Jan 06 nicklas 180         title="Name"
1847 26 Jan 06 nicklas 181         sortable="true" 
1847 26 Jan 06 nicklas 182         filterable="true"
1847 26 Jan 06 nicklas 183         exportable="true"
1847 26 Jan 06 nicklas 184         show="always" 
1847 26 Jan 06 nicklas 185       />
1847 26 Jan 06 nicklas 186       <tbl:columndef 
4332 12 Jun 08 martin 187         id="id"
4387 11 Aug 08 nicklas 188         clazz="uniquecol"
4332 12 Jun 08 martin 189         property="id"
4332 12 Jun 08 martin 190         datatype="int"
4332 12 Jun 08 martin 191         title="ID"
4332 12 Jun 08 martin 192         sortable="true"
4332 12 Jun 08 martin 193         filterable="true"
4332 12 Jun 08 martin 194         exportable="true"
4332 12 Jun 08 martin 195       />
4332 12 Jun 08 martin 196       <tbl:columndef 
4698 10 Dec 08 nicklas 197         id="entryDate"
4698 10 Dec 08 nicklas 198         property="entryDate"
4698 10 Dec 08 nicklas 199         datatype="date"
4698 10 Dec 08 nicklas 200         title="Registered"
4698 10 Dec 08 nicklas 201         sortable="true" 
4698 10 Dec 08 nicklas 202         filterable="true"
4698 10 Dec 08 nicklas 203         exportable="true"
4698 10 Dec 08 nicklas 204         formatter="<%=dateFormatter%>"
4698 10 Dec 08 nicklas 205       />
4698 10 Dec 08 nicklas 206       <tbl:columndef 
1847 26 Jan 06 nicklas 207         id="barcode"
1847 26 Jan 06 nicklas 208         property="barcode"
1847 26 Jan 06 nicklas 209         datatype="string"
1847 26 Jan 06 nicklas 210         title="Barcode"
1847 26 Jan 06 nicklas 211         sortable="true" 
1847 26 Jan 06 nicklas 212         filterable="true"
1847 26 Jan 06 nicklas 213         exportable="true"
1847 26 Jan 06 nicklas 214       />
1847 26 Jan 06 nicklas 215       <tbl:columndef 
1847 26 Jan 06 nicklas 216         id="destroyed"
1847 26 Jan 06 nicklas 217         property="destroyed"
1847 26 Jan 06 nicklas 218         datatype="boolean"
1847 26 Jan 06 nicklas 219         title="Destroyed"
1847 26 Jan 06 nicklas 220         sortable="true" 
1847 26 Jan 06 nicklas 221         filterable="true"
1847 26 Jan 06 nicklas 222         exportable="true"
1847 26 Jan 06 nicklas 223       />
1847 26 Jan 06 nicklas 224       <tbl:columndef 
1847 26 Jan 06 nicklas 225         id="plateType"
1847 26 Jan 06 nicklas 226         property="plateType.name"
1847 26 Jan 06 nicklas 227         datatype="string"
1847 26 Jan 06 nicklas 228         title="Type"
1847 26 Jan 06 nicklas 229         sortable="true" 
1847 26 Jan 06 nicklas 230         filterable="true"
1847 26 Jan 06 nicklas 231         exportable="true"
1847 26 Jan 06 nicklas 232       />
1847 26 Jan 06 nicklas 233       <%
1847 26 Jan 06 nicklas 234       Enumeration<String, String> geometries = new Enumeration<String, String>();
1847 26 Jan 06 nicklas 235       ItemResultList<PlateGeometry> plateGeometries = geometryQuery.list(dc);
1847 26 Jan 06 nicklas 236       for (PlateGeometry pg : plateGeometries)
1847 26 Jan 06 nicklas 237       {
1847 26 Jan 06 nicklas 238         geometries.add(Integer.toString(pg.getId()), HTML.encodeTags(pg.getName()));
1847 26 Jan 06 nicklas 239       }
1847 26 Jan 06 nicklas 240       %>
1847 26 Jan 06 nicklas 241       <tbl:columndef 
1847 26 Jan 06 nicklas 242         id="plateGeometry"
1847 26 Jan 06 nicklas 243         property="plateType.plateGeometry"
1847 26 Jan 06 nicklas 244         sortproperty="plateType.plateGeometry.name"
6037 29 Mar 12 nicklas 245         exportproperty="plateType.plateGeometry.name:string"
1847 26 Jan 06 nicklas 246         datatype="int"
1847 26 Jan 06 nicklas 247         enumeration="<%=geometries%>"
1847 26 Jan 06 nicklas 248         title="Geometry"
1847 26 Jan 06 nicklas 249         sortable="true" 
1847 26 Jan 06 nicklas 250         filterable="true"
1847 26 Jan 06 nicklas 251         exportable="true"
1847 26 Jan 06 nicklas 252       />
1847 26 Jan 06 nicklas 253       <tbl:columndef 
1847 26 Jan 06 nicklas 254         id="plateMapping"
1847 26 Jan 06 nicklas 255         property="plateMapping.name"
1847 26 Jan 06 nicklas 256         datatype="string"
1847 26 Jan 06 nicklas 257         title="Plate mapping"
1847 26 Jan 06 nicklas 258         sortable="true" 
1847 26 Jan 06 nicklas 259         filterable="true"
1847 26 Jan 06 nicklas 260         exportable="true"
1847 26 Jan 06 nicklas 261       />
2446 29 Jun 06 nicklas 262       <tbl:columndef
2446 29 Jun 06 nicklas 263         id="parents"
2446 29 Jun 06 nicklas 264         title="Parents"
4610 28 Oct 08 nicklas 265         property="&parentSet(name)"
4610 28 Oct 08 nicklas 266         datatype="string"
4610 28 Oct 08 nicklas 267         filterable="true"
2446 29 Jun 06 nicklas 268       />
2446 29 Jun 06 nicklas 269       <tbl:columndef
2446 29 Jun 06 nicklas 270         id="children"
2446 29 Jun 06 nicklas 271         title="Children"
4610 28 Oct 08 nicklas 272         property="&children(name)"
4610 28 Oct 08 nicklas 273         datatype="string"
4610 28 Oct 08 nicklas 274         filterable="true"
2446 29 Jun 06 nicklas 275       />
1847 26 Jan 06 nicklas 276       <tbl:columndef 
1847 26 Jan 06 nicklas 277         id="owner"
1847 26 Jan 06 nicklas 278         property="owner.name"
1847 26 Jan 06 nicklas 279         datatype="string"
1847 26 Jan 06 nicklas 280         title="Owner"
1847 26 Jan 06 nicklas 281         sortable="true" 
1847 26 Jan 06 nicklas 282         filterable="true"
1847 26 Jan 06 nicklas 283         exportable="true"
1847 26 Jan 06 nicklas 284       />
1847 26 Jan 06 nicklas 285       <tbl:columndef 
1847 26 Jan 06 nicklas 286         id="description"
1847 26 Jan 06 nicklas 287         property="description"
1847 26 Jan 06 nicklas 288         datatype="string"
1847 26 Jan 06 nicklas 289         title="Description" 
1847 26 Jan 06 nicklas 290         sortable="true" 
1847 26 Jan 06 nicklas 291         filterable="true" 
1847 26 Jan 06 nicklas 292         exportable="true"
2401 21 Jun 06 martin 293       />      
1847 26 Jan 06 nicklas 294       <%
6541 29 Sep 14 nicklas 295       for (AnnotationLoaderUtil loader : annotationLoaders)
1847 26 Jan 06 nicklas 296       {
6541 29 Sep 14 nicklas 297         AnnotationType at = loader.getAnnotationType();
7605 26 Feb 19 nicklas 298         Formatter<Object> formatter = FormatterFactory.getTypeFormatter(sc, at.getValueType());
1847 26 Jan 06 nicklas 299         Enumeration<String, String> annotationEnum = null;
1847 26 Jan 06 nicklas 300         if (at.isEnumeration())
1847 26 Jan 06 nicklas 301         {
1847 26 Jan 06 nicklas 302           annotationEnum = new Enumeration<String, String>();
6784 18 Mar 15 nicklas 303           if (!at.getDisplayAsList()) annotationEnum.add("", "-none-");
1847 26 Jan 06 nicklas 304           List<?> values = at.getValues();
1847 26 Jan 06 nicklas 305           for (Object value : values)
1847 26 Jan 06 nicklas 306           {
2942 22 Nov 06 nicklas 307             String encoded = formatter.format(value);
1847 26 Jan 06 nicklas 308             annotationEnum.add(encoded, encoded);
1847 26 Jan 06 nicklas 309           }
1847 26 Jan 06 nicklas 310         }
1847 26 Jan 06 nicklas 311         %>
1847 26 Jan 06 nicklas 312         <tbl:columndef 
1847 26 Jan 06 nicklas 313           id="<%="at"+at.getId()%>"
1847 26 Jan 06 nicklas 314           title="<%=HTML.encodeTags(at.getName())+" [A]"%>" 
1847 26 Jan 06 nicklas 315           property="<%="#"+at.getId()%>"
1847 26 Jan 06 nicklas 316           annotation="true"
1847 26 Jan 06 nicklas 317           datatype="<%=at.getValueType().getStringValue()%>"
1847 26 Jan 06 nicklas 318           enumeration="<%=annotationEnum%>"
5674 27 Jun 11 nicklas 319           smartenum="<%=at.getDisplayAsList() %>"
6027 23 Mar 12 nicklas 320           sortable="<%=at.getMultiplicity() == 1%>" 
1847 26 Jan 06 nicklas 321           filterable="true" 
1847 26 Jan 06 nicklas 322           exportable="true"
2942 22 Nov 06 nicklas 323           formatter="<%=formatter%>"
4560 06 Oct 08 nicklas 324           unit="<%=at.getDefaultUnit()%>"
1847 26 Jan 06 nicklas 325         />
1847 26 Jan 06 nicklas 326         <%
1847 26 Jan 06 nicklas 327       }
1847 26 Jan 06 nicklas 328       %>
2401 21 Jun 06 martin 329       <tbl:columndef
2401 21 Jun 06 martin 330         id="permission"
2401 21 Jun 06 martin 331         title="Permission"
2401 21 Jun 06 martin 332       />
5165 28 Oct 09 nicklas 333       <tbl:columndef
5165 28 Oct 09 nicklas 334         id="sharedTo"
5165 28 Oct 09 nicklas 335         title="Shared to"
5165 28 Oct 09 nicklas 336         filterable="true"
5165 28 Oct 09 nicklas 337         filterproperty="!sharedTo.name"
5165 28 Oct 09 nicklas 338         datatype="string"
3553 09 Jul 07 martin 339       />
6039 29 Mar 12 nicklas 340       <tbl:columndef 
6039 29 Mar 12 nicklas 341         id="xt-columns" 
6039 29 Mar 12 nicklas 342         extensions="<%=columnsInvoker%>" 
6039 29 Mar 12 nicklas 343         jspcontext="<%=jspContext%>" 
6039 29 Mar 12 nicklas 344       />
6604 18 Nov 14 nicklas 345       <div class="panelgroup bg-filled-50 bottomborder">
5954 13 Feb 12 nicklas 346         <tbl:toolbar
5954 13 Feb 12 nicklas 347           subclass="bottomborder"
5954 13 Feb 12 nicklas 348           visible="<%=mode.hasToolbar()%>"
5954 13 Feb 12 nicklas 349           >
5954 13 Feb 12 nicklas 350           <tbl:button 
6307 15 Aug 13 nicklas 351             id="btnMergePlates"
5954 13 Feb 12 nicklas 352             disabled="<%=!createPermission%>" 
5954 13 Feb 12 nicklas 353             image="new.png" 
5954 13 Feb 12 nicklas 354             title="Merge&hellip;" 
5954 13 Feb 12 nicklas 355             tooltip="<%=createPermission ? "Create new plates by merging other plates" : "You do not have permission to create plates"%>" 
5954 13 Feb 12 nicklas 356           />
5954 13 Feb 12 nicklas 357           <tbl:button 
6307 15 Aug 13 nicklas 358             id="btnDeleteItems"
5954 13 Feb 12 nicklas 359             image="delete.png"
5954 13 Feb 12 nicklas 360             title="Delete" 
5954 13 Feb 12 nicklas 361             tooltip="Delete the selected items" 
5954 13 Feb 12 nicklas 362           />
5954 13 Feb 12 nicklas 363           <tbl:button 
6307 15 Aug 13 nicklas 364             id="btnRestoreItems"
5954 13 Feb 12 nicklas 365             image="restore.png"
5954 13 Feb 12 nicklas 366             title="Restore" 
5954 13 Feb 12 nicklas 367             tooltip="Restore the selected (deleted) items"
5954 13 Feb 12 nicklas 368           />
5954 13 Feb 12 nicklas 369           <tbl:button 
6307 15 Aug 13 nicklas 370             id="btnShareItems"
5954 13 Feb 12 nicklas 371             image="share.png"
5954 13 Feb 12 nicklas 372             title="Share&hellip;" 
5954 13 Feb 12 nicklas 373             tooltip="Share the selected items"
5954 13 Feb 12 nicklas 374           />
5954 13 Feb 12 nicklas 375           <tbl:button 
6307 15 Aug 13 nicklas 376             id="btnSetOwner"
5954 13 Feb 12 nicklas 377             image="take_ownership.png"
5954 13 Feb 12 nicklas 378             title="Set owner&hellip;"
5954 13 Feb 12 nicklas 379             tooltip="Change owner of the selected items"
5954 13 Feb 12 nicklas 380           />
5954 13 Feb 12 nicklas 381           <tbl:button 
6307 15 Aug 13 nicklas 382             id="btnColumns"
5954 13 Feb 12 nicklas 383             image="columns.png" 
5954 13 Feb 12 nicklas 384             title="Columns&hellip;" 
5954 13 Feb 12 nicklas 385             tooltip="Show, hide and re-order columns" 
5954 13 Feb 12 nicklas 386           />
5954 13 Feb 12 nicklas 387           <tbl:button 
6307 15 Aug 13 nicklas 388             id="btnImport"
6307 15 Aug 13 nicklas 389             data-plugin-type="IMPORT"
5954 13 Feb 12 nicklas 390             image="import.png" 
5954 13 Feb 12 nicklas 391             title="Import&hellip;" 
5954 13 Feb 12 nicklas 392             tooltip="Import data" 
5954 13 Feb 12 nicklas 393             visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
5954 13 Feb 12 nicklas 394           />
5954 13 Feb 12 nicklas 395           <tbl:button 
6307 15 Aug 13 nicklas 396             id="btnExport"
6307 15 Aug 13 nicklas 397             data-plugin-type="EXPORT"
5954 13 Feb 12 nicklas 398             image="export.png" 
5954 13 Feb 12 nicklas 399             title="Export&hellip;" 
5954 13 Feb 12 nicklas 400             tooltip="Export data" 
5954 13 Feb 12 nicklas 401             visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
5954 13 Feb 12 nicklas 402           />
5954 13 Feb 12 nicklas 403           <tbl:button 
6307 15 Aug 13 nicklas 404             id="btnRunPlugin"
6307 15 Aug 13 nicklas 405             data-plugin-type="OTHER"
5954 13 Feb 12 nicklas 406             image="runplugin.png" 
5954 13 Feb 12 nicklas 407             title="Run plugin&hellip;" 
5954 13 Feb 12 nicklas 408             tooltip="Run a plugin" 
5954 13 Feb 12 nicklas 409             visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
5954 13 Feb 12 nicklas 410           />
5954 13 Feb 12 nicklas 411           <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
7604 25 Feb 19 nicklas 412             wrapper="<%=new PrefixSuffixRenderer<ButtonAction>(jspContext, "<td>", "</td>") %>"/>
5954 13 Feb 12 nicklas 413         </tbl:toolbar>
5954 13 Feb 12 nicklas 414         <tbl:panel>
6182 23 Oct 12 nicklas 415           <tbl:presetselector />
5954 13 Feb 12 nicklas 416           <tbl:navigator
5954 13 Feb 12 nicklas 417             page="<%=cc.getPage()%>" 
5954 13 Feb 12 nicklas 418             rowsperpage="<%=cc.getRowsPerPage()%>" 
5954 13 Feb 12 nicklas 419             totalrows="<%=plates == null ? 0 : plates.getTotalCount()%>" 
5954 13 Feb 12 nicklas 420             visible="<%=mode.hasNavigator()%>"
5954 13 Feb 12 nicklas 421           />
5954 13 Feb 12 nicklas 422         </tbl:panel>
5954 13 Feb 12 nicklas 423       </div>
1847 26 Jan 06 nicklas 424       <tbl:data>
5948 08 Feb 12 nicklas 425         <tbl:headers>
5948 08 Feb 12 nicklas 426           <tbl:headerrow>
7943 04 May 21 nicklas 427             <tbl:header clazz="row-index bg-filled-100" />
5948 08 Feb 12 nicklas 428             <tbl:columnheaders />
5948 08 Feb 12 nicklas 429           </tbl:headerrow>
6702 02 Feb 15 nicklas 430           <%
6702 02 Feb 15 nicklas 431           int numFilters = cc.getNumPropertyFilters();
6702 02 Feb 15 nicklas 432           int numRows = cc.getFilterRows();
6702 02 Feb 15 nicklas 433           for (int filterNo = 0; filterNo < numRows; filterNo++)
6702 02 Feb 15 nicklas 434           {
6702 02 Feb 15 nicklas 435             boolean lastRow = filterNo == numRows-1;
6702 02 Feb 15 nicklas 436             %>
6702 02 Feb 15 nicklas 437             <tbl:headerrow>
7943 04 May 21 nicklas 438               <tbl:header subclass="row-index bg-filled-100">
7943 04 May 21 nicklas 439                 <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 440                   <div class="index"></div>
7943 04 May 21 nicklas 441                   <div class="check">
7943 04 May 21 nicklas 442                     <base:icon 
7943 04 May 21 nicklas 443                       subclass="link table-check"
7943 04 May 21 nicklas 444                       image="check_uncheck.png" 
7943 04 May 21 nicklas 445                       tooltip="Toggle all (use CTRL, ALT or SHIFT to check/uncheck)" 
7943 04 May 21 nicklas 446                       visible="<%=lastRow && mode.hasCheck()%>"
7943 04 May 21 nicklas 447                     />
7943 04 May 21 nicklas 448                   </div>
7943 04 May 21 nicklas 449                   <div class="icons">
7943 04 May 21 nicklas 450                     <base:icon
7943 04 May 21 nicklas 451                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 452                       image="add.png"
7943 04 May 21 nicklas 453                       tooltip="Add extra filter row"
7943 04 May 21 nicklas 454                       visible="<%=lastRow%>"
7943 04 May 21 nicklas 455                     /><base:icon
7943 04 May 21 nicklas 456                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 457                       image="remove.png"
7943 04 May 21 nicklas 458                       tooltip="Remove this filter row"
7943 04 May 21 nicklas 459                       visible="<%=numRows > 1 || numFilters > 0 %>"
7943 04 May 21 nicklas 460                       data-remove-row="<%=filterNo%>"
7943 04 May 21 nicklas 461                     />
7943 04 May 21 nicklas 462                   </div>
7943 04 May 21 nicklas 463                 </div>
6702 02 Feb 15 nicklas 464               </tbl:header>
6702 02 Feb 15 nicklas 465               <tbl:propertyfilter row="<%=filterNo%>" />
6702 02 Feb 15 nicklas 466             </tbl:headerrow>
6702 02 Feb 15 nicklas 467             <%
6702 02 Feb 15 nicklas 468           }
6702 02 Feb 15 nicklas 469           %>
7913 22 Feb 21 nicklas 470           <tbl:columnsubtitles />
5948 08 Feb 12 nicklas 471         </tbl:headers>
5948 08 Feb 12 nicklas 472         <tbl:rows>
1847 26 Jan 06 nicklas 473           <%
5954 13 Feb 12 nicklas 474           if (cc.getMessage() != null)
5954 13 Feb 12 nicklas 475           {
5954 13 Feb 12 nicklas 476             %>
6604 18 Nov 14 nicklas 477             <tbl:panel subclass="bg-filled-50">
5954 13 Feb 12 nicklas 478               <div class="messagecontainer error"><%=cc.getMessage()%></div>
5954 13 Feb 12 nicklas 479             </tbl:panel>
5954 13 Feb 12 nicklas 480             <%
5954 13 Feb 12 nicklas 481             cc.setMessage(null);
5954 13 Feb 12 nicklas 482           }
1847 26 Jan 06 nicklas 483           int index = cc.getPage()*cc.getRowsPerPage();
1847 26 Jan 06 nicklas 484           int selectedItemId = cc.getId();
2029 20 Feb 06 nicklas 485           if (plates != null)
1847 26 Jan 06 nicklas 486           {
2029 20 Feb 06 nicklas 487             while (plates.hasNext())
2029 20 Feb 06 nicklas 488             {
2029 20 Feb 06 nicklas 489               Plate item = plates.next();
2029 20 Feb 06 nicklas 490               int itemId = item.getId();
6221 10 Jan 13 nicklas 491               
6221 10 Jan 13 nicklas 492               
4003 26 Nov 07 nicklas 493               boolean deletePermission = item.hasPermission(Permission.DELETE);
2437 28 Jun 06 nicklas 494               boolean sharePermission = item.hasPermission(Permission.SET_PERMISSION);
2503 09 Aug 06 martin 495               boolean writePermission = item.hasPermission(Permission.WRITE);
2503 09 Aug 06 martin 496               String tooltip = mode.isSelectionMode() ? 
2503 09 Aug 06 martin 497                   "Select this item" : "View this item" + (writePermission ? " (use CTRL, ALT or SHIFT to edit)" : "");
2029 20 Feb 06 nicklas 498               String name = HTML.encodeTags(item.getName());
2029 20 Feb 06 nicklas 499               index++;
2029 20 Feb 06 nicklas 500               numListed++;
2029 20 Feb 06 nicklas 501               %>
2029 20 Feb 06 nicklas 502               <tbl:row>
7943 04 May 21 nicklas 503                 <tbl:header clazz="row-index bg-filled-100">
7943 04 May 21 nicklas 504                   <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 505                     <div class="index <%=index>999?"index-smaller":""%>"><%=index%></div>
7943 04 May 21 nicklas 506                     <div class="check">
7943 04 May 21 nicklas 507                       <base:input
7943 04 May 21 nicklas 508                         type="checkbox" 
7943 04 May 21 nicklas 509                         name="<%=itemId%>" 
7943 04 May 21 nicklas 510                         value="<%=itemId%>" 
7943 04 May 21 nicklas 511                         title="<%=name%>" 
7943 04 May 21 nicklas 512                         checked="<%=cc.getSelected().contains(itemId)%>"
7943 04 May 21 nicklas 513                         visible="<%=mode.hasCheck()%>"
7943 04 May 21 nicklas 514                       />
7943 04 May 21 nicklas 515                       <base:input 
7943 04 May 21 nicklas 516                         type="radio" 
7943 04 May 21 nicklas 517                         name="item_id" 
7943 04 May 21 nicklas 518                         value="<%=itemId%>" 
7943 04 May 21 nicklas 519                         title="<%=name%>" 
7943 04 May 21 nicklas 520                         checked="<%=selectedItemId == itemId%>"
7943 04 May 21 nicklas 521                         visible="<%=mode.hasRadio()%>"
7943 04 May 21 nicklas 522                       />
7943 04 May 21 nicklas 523                     </div>
7943 04 May 21 nicklas 524                     <div class="icons">
7943 04 May 21 nicklas 525                       <base:icon 
7943 04 May 21 nicklas 526                         image="deleted.png"
7943 04 May 21 nicklas 527                         id="<%="delete."+itemId %>"
7943 04 May 21 nicklas 528                         subclass="<%=deletePermission ? "table-delete-item" : "disabled" %>"
7943 04 May 21 nicklas 529                         data-item-id="<%=itemId%>"
7943 04 May 21 nicklas 530                         tooltip="This item has been scheduled for deletion" 
7943 04 May 21 nicklas 531                         visible="<%=item.isRemoved()%>"
7943 04 May 21 nicklas 532                       /><base:icon 
7943 04 May 21 nicklas 533                         image="shared.png" 
7943 04 May 21 nicklas 534                         id="<%="share."+itemId %>"
7943 04 May 21 nicklas 535                         subclass="<%=sharePermission ? "table-share-item" : "disabled" %>"
7943 04 May 21 nicklas 536                         data-item-id="<%=itemId%>"
7943 04 May 21 nicklas 537                         tooltip="This item is shared to other users, groups and/or projects" 
7943 04 May 21 nicklas 538                         visible="<%=item.isShared()%>"
7943 04 May 21 nicklas 539                       />
7943 04 May 21 nicklas 540                     </div>
7943 04 May 21 nicklas 541                   </div>
7943 04 May 21 nicklas 542                 </tbl:header>
6307 15 Aug 13 nicklas 543                 <tbl:cell column="name"><div
6307 15 Aug 13 nicklas 544                   class="link table-item"
6307 15 Aug 13 nicklas 545                   data-item-id="<%=itemId%>"
6307 15 Aug 13 nicklas 546                   data-no-edit="<%=writePermission ? 0 : 1 %>" 
6307 15 Aug 13 nicklas 547                   tabindex="0"
2446 29 Jun 06 nicklas 548                   title="<%=tooltip%>"><%=name%></div></tbl:cell>
4332 12 Jun 08 martin 549                 <tbl:cell column="id"><%=item.getId()%></tbl:cell>
4698 10 Dec 08 nicklas 550                 <tbl:cell column="entryDate" value="<%=item.getEntryDate()%>" />
2029 20 Feb 06 nicklas 551                 <tbl:cell column="barcode"><%=HTML.encodeTags(item.getBarcode())%></tbl:cell>
2029 20 Feb 06 nicklas 552                 <tbl:cell column="destroyed"><%=item.isDestroyed()%></tbl:cell>
2354 07 Jun 06 martin 553                 <tbl:cell column="owner"
2354 07 Jun 06 martin 554                   ><base:propertyvalue 
2354 07 Jun 06 martin 555                     item="<%=item%>" 
2354 07 Jun 06 martin 556                     property="owner"
2354 07 Jun 06 martin 557                     enableEditLink="<%=mode.hasEditLink()%>" 
2354 07 Jun 06 martin 558                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
2354 07 Jun 06 martin 559                   /></tbl:cell>
2354 07 Jun 06 martin 560                 <tbl:cell column="plateType"
2354 07 Jun 06 martin 561                   ><base:propertyvalue 
2354 07 Jun 06 martin 562                     item="<%=item%>" 
2354 07 Jun 06 martin 563                     property="plateType"
2354 07 Jun 06 martin 564                     enableEditLink="<%=mode.hasEditLink()%>" 
2354 07 Jun 06 martin 565                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
2354 07 Jun 06 martin 566                   /></tbl:cell>
2354 07 Jun 06 martin 567                 <tbl:cell column="plateGeometry"
2354 07 Jun 06 martin 568                   ><base:propertyvalue 
2354 07 Jun 06 martin 569                     item="<%=item%>" 
2354 07 Jun 06 martin 570                     property="plateType.plateGeometry"
2354 07 Jun 06 martin 571                     enableEditLink="<%=mode.hasEditLink()%>" 
2354 07 Jun 06 martin 572                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
2354 07 Jun 06 martin 573                   /></tbl:cell>
2354 07 Jun 06 martin 574                 <tbl:cell column="plateMapping"
2354 07 Jun 06 martin 575                   ><base:propertyvalue 
2354 07 Jun 06 martin 576                     item="<%=item%>" 
2354 07 Jun 06 martin 577                     property="plateMapping"
2354 07 Jun 06 martin 578                     enableEditLink="<%=mode.hasEditLink()%>" 
2354 07 Jun 06 martin 579                     enablePropertyLink="<%=mode.hasPropertyLink()%>"
2354 07 Jun 06 martin 580                   /></tbl:cell>
2446 29 Jun 06 nicklas 581                 <tbl:cell column="parents">
2446 29 Jun 06 nicklas 582                   <%
2446 29 Jun 06 nicklas 583                   parentQuery.setParameter("plate", itemId, Type.INT);
2446 29 Jun 06 nicklas 584                   try
2446 29 Jun 06 nicklas 585                   {
2446 29 Jun 06 nicklas 586                     String separator = "";
2446 29 Jun 06 nicklas 587                     for (Plate p : parentQuery.list(dc))
2446 29 Jun 06 nicklas 588                     {
2446 29 Jun 06 nicklas 589                       out.write(separator);
2446 29 Jun 06 nicklas 590                       if (mode.hasPropertyLink())
2446 29 Jun 06 nicklas 591                       {
2446 29 Jun 06 nicklas 592                         out.write(Base.getLinkedName(ID, p, false, mode.hasEditLink()));
2446 29 Jun 06 nicklas 593                       }
2446 29 Jun 06 nicklas 594                       else
2446 29 Jun 06 nicklas 595                       {
2446 29 Jun 06 nicklas 596                         out.write(HTML.encodeTags(p.getName()));
2446 29 Jun 06 nicklas 597                       }
2446 29 Jun 06 nicklas 598                       separator = ", ";
2446 29 Jun 06 nicklas 599                     }
2446 29 Jun 06 nicklas 600                   }
2446 29 Jun 06 nicklas 601                   catch (Throwable t)
2446 29 Jun 06 nicklas 602                   {
2446 29 Jun 06 nicklas 603                     %>
2446 29 Jun 06 nicklas 604                     <div class="error"><%=t.getMessage()%></div>
2446 29 Jun 06 nicklas 605                     <%
2446 29 Jun 06 nicklas 606                   }
2446 29 Jun 06 nicklas 607                   %>
2446 29 Jun 06 nicklas 608                 </tbl:cell>
2446 29 Jun 06 nicklas 609                 <tbl:cell column="children">
2446 29 Jun 06 nicklas 610                   <%
2446 29 Jun 06 nicklas 611                   childQuery.setParameter("plate", itemId, Type.INT);
2446 29 Jun 06 nicklas 612                   try
2446 29 Jun 06 nicklas 613                   {
2446 29 Jun 06 nicklas 614                     String separator = "";
2446 29 Jun 06 nicklas 615                     for (Plate p : childQuery.list(dc))
2446 29 Jun 06 nicklas 616                     {
2446 29 Jun 06 nicklas 617                       out.write(separator);
2446 29 Jun 06 nicklas 618                       if (mode.hasPropertyLink())
2446 29 Jun 06 nicklas 619                       {
2446 29 Jun 06 nicklas 620                         out.write(Base.getLinkedName(ID, p, false, mode.hasEditLink()));
2446 29 Jun 06 nicklas 621                       }
2446 29 Jun 06 nicklas 622                       else
2446 29 Jun 06 nicklas 623                       {
2446 29 Jun 06 nicklas 624                         out.write(HTML.encodeTags(p.getName()));
2446 29 Jun 06 nicklas 625                       }
2446 29 Jun 06 nicklas 626                       separator = ", ";
2446 29 Jun 06 nicklas 627                     }
2446 29 Jun 06 nicklas 628                   }
2446 29 Jun 06 nicklas 629                   catch (Throwable t)
2446 29 Jun 06 nicklas 630                   {
2446 29 Jun 06 nicklas 631                     %>
2446 29 Jun 06 nicklas 632                     <div class="error"><%=t.getMessage()%></div>
2446 29 Jun 06 nicklas 633                     <%
2446 29 Jun 06 nicklas 634                   }
2446 29 Jun 06 nicklas 635                   %>
2446 29 Jun 06 nicklas 636                 </tbl:cell>
2401 21 Jun 06 martin 637                 <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>                
2029 20 Feb 06 nicklas 638                 <%
6541 29 Sep 14 nicklas 639                 if (item.isAnnotated())
2029 20 Feb 06 nicklas 640                 {
6541 29 Sep 14 nicklas 641                   AnnotationSetSnapshot snapshot = manager.getSnapshot(dc, item.getAnnotationSet().getId());
6541 29 Sep 14 nicklas 642                   for (AnnotationLoaderUtil loader : annotationLoaders)
2942 22 Nov 06 nicklas 643                   {
6721 10 Feb 15 nicklas 644                     %>
6721 10 Feb 15 nicklas 645                     <tbl:cell 
6721 10 Feb 15 nicklas 646                       column="<%="at"+loader.getId()%>"
6721 10 Feb 15 nicklas 647                       ><%
7337 12 Apr 17 nicklas 648                       if (loader.find(snapshot, psInfo.reset())) 
6721 10 Feb 15 nicklas 649                       {
6721 10 Feb 15 nicklas 650                         %><tbl:cellvalue 
6541 29 Sep 14 nicklas 651                           list="<%=loader.getValues()%>"
8160 07 Jun 23 nicklas 652                           bulletlist="<%=loader.useBulletList() %>"
6541 29 Sep 14 nicklas 653                           suffix="<%=loader.getUnitSymbol()%>"
8083 20 Oct 22 nicklas 654                           clazz="<%=psInfo.hasProjectSpecificAnnotation() ? "ps-annotation" : null%>"
6721 10 Feb 15 nicklas 655                         /><%
6721 10 Feb 15 nicklas 656                       }
6721 10 Feb 15 nicklas 657                       %></tbl:cell>
6721 10 Feb 15 nicklas 658                     <%
2942 22 Nov 06 nicklas 659                   }
2029 20 Feb 06 nicklas 660                 }
2029 20 Feb 06 nicklas 661                 %>
2401 21 Jun 06 martin 662                 <tbl:cell column="permission"><%=PermissionUtil.getShortPermissions(item)%></tbl:cell>
3553 09 Jul 07 martin 663                 <tbl:cell column="sharedTo">
3553 09 Jul 07 martin 664                   <%
3553 09 Jul 07 martin 665                   Iterator<Nameable> sharees = ShareableUtil.getSharedTo(dc, item).iterator();
3553 09 Jul 07 martin 666                   while(sharees.hasNext())
3553 09 Jul 07 martin 667                   {
3553 09 Jul 07 martin 668                     Nameable n = sharees.next();
3553 09 Jul 07 martin 669                     if (mode.hasPropertyLink())
3553 09 Jul 07 martin 670                     {
3553 09 Jul 07 martin 671                       out.write(Base.getLinkedName(ID, n, false, mode.hasEditLink()));
3553 09 Jul 07 martin 672                     }
3553 09 Jul 07 martin 673                     else
3553 09 Jul 07 martin 674                     {
3553 09 Jul 07 martin 675                       out.write(HTML.encodeTags(n.getName()));
3553 09 Jul 07 martin 676                     }
3553 09 Jul 07 martin 677                     out.write(sharees.hasNext() ? ", " : "");
3553 09 Jul 07 martin 678                   }
3553 09 Jul 07 martin 679                   %>
3553 09 Jul 07 martin 680                 </tbl:cell>
6039 29 Mar 12 nicklas 681                 <tbl:xt-cells dc="<%=dc%>" item="<%=item%>">
6039 29 Mar 12 nicklas 682                   <tbl:cell column="xt-columns" />
6039 29 Mar 12 nicklas 683                 </tbl:xt-cells>
2029 20 Feb 06 nicklas 684               </tbl:row>
1847 26 Jan 06 nicklas 685               <%
1847 26 Jan 06 nicklas 686               }
1847 26 Jan 06 nicklas 687             }
5954 13 Feb 12 nicklas 688           if (numListed == 0)
5954 13 Feb 12 nicklas 689           {
5954 13 Feb 12 nicklas 690             %>
6604 18 Nov 14 nicklas 691             <tbl:panel subclass="bg-filled-50">
5954 13 Feb 12 nicklas 692               <div class="messagecontainer note">
5954 13 Feb 12 nicklas 693               <%=plates == null || plates.getTotalCount() == 0 ? "No plates were found" : "No plates on this page. Please select another page!" %>
5954 13 Feb 12 nicklas 694               </div>
5954 13 Feb 12 nicklas 695             </tbl:panel>
5954 13 Feb 12 nicklas 696             <%
5954 13 Feb 12 nicklas 697           }
1847 26 Jan 06 nicklas 698           %>
5954 13 Feb 12 nicklas 699         </tbl:rows>
1847 26 Jan 06 nicklas 700       </tbl:data>
1847 26 Jan 06 nicklas 701     </tbl:table>
5954 13 Feb 12 nicklas 702     </div>
5954 13 Feb 12 nicklas 703     
5951 09 Feb 12 nicklas 704     <base:buttongroup subclass="dialogbuttons">
6307 15 Aug 13 nicklas 705       <base:button id="btnOk" title="Ok" visible="<%=mode.hasOkButton()%>" />
6307 15 Aug 13 nicklas 706       <base:button id="close" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
6307 15 Aug 13 nicklas 707       <base:button id="close" title="Close" visible="<%=mode.hasCloseButton()%>" />
1847 26 Jan 06 nicklas 708     </base:buttongroup>
5951 09 Feb 12 nicklas 709     
1847 26 Jan 06 nicklas 710   </base:body>
1847 26 Jan 06 nicklas 711   </base:page>
1847 26 Jan 06 nicklas 712   <%
1847 26 Jan 06 nicklas 713 }
1847 26 Jan 06 nicklas 714 finally
1847 26 Jan 06 nicklas 715 {
1847 26 Jan 06 nicklas 716   if (plates != null) plates.close();
1847 26 Jan 06 nicklas 717   if (dc != null) dc.close();
1847 26 Jan 06 nicklas 718 }
3675 16 Aug 07 jari 719 %>