www/admin/protocols/list_protocol.jsp

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