www/admin/itemsubtypes/list_subtypes.jsp

Code
Comments
Other
Rev Date Author Line
5630 13 May 11 nicklas 1 <%-- $Id$
5630 13 May 11 nicklas 2   ------------------------------------------------------------------
5630 13 May 11 nicklas 3   Copyright (C) 2011 Nicklas Nordborg
5630 13 May 11 nicklas 4
5630 13 May 11 nicklas 5   This file is part of BASE - BioArray Software Environment.
5630 13 May 11 nicklas 6   Available at http://base.thep.lu.se/
5630 13 May 11 nicklas 7
5630 13 May 11 nicklas 8   BASE is free software; you can redistribute it and/or
5630 13 May 11 nicklas 9   modify it under the terms of the GNU General Public License
5630 13 May 11 nicklas 10   as published by the Free Software Foundation; either version 3
5630 13 May 11 nicklas 11   of the License, or (at your option) any later version.
5630 13 May 11 nicklas 12
5630 13 May 11 nicklas 13   BASE is distributed in the hope that it will be useful,
5630 13 May 11 nicklas 14   but WITHOUT ANY WARRANTY; without even the implied warranty of
5630 13 May 11 nicklas 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
5630 13 May 11 nicklas 16   GNU General Public License for more details.
5630 13 May 11 nicklas 17
5630 13 May 11 nicklas 18   You should have received a copy of the GNU General Public License
5630 13 May 11 nicklas 19   along with BASE. If not, see <http://www.gnu.org/licenses/>.
5630 13 May 11 nicklas 20   ------------------------------------------------------------------
5630 13 May 11 nicklas 21
5630 13 May 11 nicklas 22   @author Nicklas
5630 13 May 11 nicklas 23   @since 3.0
5630 13 May 11 nicklas 24 --%>
5630 13 May 11 nicklas 25 <%@ page pageEncoding="UTF-8" session="false"
5630 13 May 11 nicklas 26   import="net.sf.basedb.core.SessionControl"
5630 13 May 11 nicklas 27   import="net.sf.basedb.core.DbControl"
5630 13 May 11 nicklas 28   import="net.sf.basedb.core.Item"
5630 13 May 11 nicklas 29   import="net.sf.basedb.core.ItemSubtype"
5698 15 Aug 11 nicklas 30   import="net.sf.basedb.core.DataFileType"
5630 13 May 11 nicklas 31   import="net.sf.basedb.core.ItemQuery"
5630 13 May 11 nicklas 32   import="net.sf.basedb.core.Include"
5630 13 May 11 nicklas 33   import="net.sf.basedb.core.Type"
5630 13 May 11 nicklas 34   import="net.sf.basedb.core.ItemResultIterator"
5630 13 May 11 nicklas 35   import="net.sf.basedb.core.ItemResultList"
5630 13 May 11 nicklas 36   import="net.sf.basedb.core.ItemContext"
5630 13 May 11 nicklas 37   import="net.sf.basedb.core.Permission"
5630 13 May 11 nicklas 38   import="net.sf.basedb.core.PluginDefinition"
5630 13 May 11 nicklas 39   import="net.sf.basedb.core.Metadata"
5630 13 May 11 nicklas 40   import="net.sf.basedb.core.query.Orders"
5630 13 May 11 nicklas 41   import="net.sf.basedb.core.query.Hql"
5630 13 May 11 nicklas 42   import="net.sf.basedb.core.query.Expressions"
5630 13 May 11 nicklas 43   import="net.sf.basedb.core.query.Restrictions"
5630 13 May 11 nicklas 44   import="net.sf.basedb.core.plugin.GuiContext"
5630 13 May 11 nicklas 45   import="net.sf.basedb.core.plugin.Plugin"
5630 13 May 11 nicklas 46   import="net.sf.basedb.util.Enumeration"
5630 13 May 11 nicklas 47   import="net.sf.basedb.clients.web.Base"
5630 13 May 11 nicklas 48   import="net.sf.basedb.clients.web.PermissionUtil"
5630 13 May 11 nicklas 49   import="net.sf.basedb.clients.web.ModeInfo"
5630 13 May 11 nicklas 50   import="net.sf.basedb.clients.web.util.HTML"
5630 13 May 11 nicklas 51   import="net.sf.basedb.util.Values"
5630 13 May 11 nicklas 52   import="net.sf.basedb.util.formatter.Formatter"
5630 13 May 11 nicklas 53   import="net.sf.basedb.clients.web.formatter.FormatterFactory"
5630 13 May 11 nicklas 54   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
5630 13 May 11 nicklas 55   import="net.sf.basedb.clients.web.extensions.JspContext"
5630 13 May 11 nicklas 56   import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
7604 25 Feb 19 nicklas 57   import="net.sf.basedb.clients.web.extensions.toolbar.ButtonAction" 
5630 13 May 11 nicklas 58   import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
7604 25 Feb 19 nicklas 59   import="net.sf.basedb.clients.web.extensions.list.ListColumnAction"
6045 03 Apr 12 nicklas 60   import="net.sf.basedb.clients.web.extensions.list.ListColumnUtil"
5630 13 May 11 nicklas 61   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
5630 13 May 11 nicklas 62   import="java.util.Date"
5630 13 May 11 nicklas 63   import="java.util.List"
5630 13 May 11 nicklas 64   import="java.util.Map"
5630 13 May 11 nicklas 65 %>
5630 13 May 11 nicklas 66 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
5630 13 May 11 nicklas 67 <%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
5630 13 May 11 nicklas 68 <%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
5630 13 May 11 nicklas 69 <%!
5630 13 May 11 nicklas 70   private static final Item itemType = Item.ITEMSUBTYPE;
5630 13 May 11 nicklas 71   private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.LIST);
5630 13 May 11 nicklas 72   private static final Enumeration<String, String> items = new Enumeration<String, String>();
5630 13 May 11 nicklas 73   static
5630 13 May 11 nicklas 74   {
5630 13 May 11 nicklas 75     for (Item item : Metadata.getSubtypableItems())
5630 13 May 11 nicklas 76     {
5630 13 May 11 nicklas 77       items.add(Integer.toString(item.getValue()), item.toString());
5630 13 May 11 nicklas 78     }
5630 13 May 11 nicklas 79   }
5630 13 May 11 nicklas 80 %>
5630 13 May 11 nicklas 81 <%
5630 13 May 11 nicklas 82 final SessionControl sc = Base.getExistingSessionControl(pageContext, Permission.DENIED, itemType);
5630 13 May 11 nicklas 83 final String ID = sc.getId();
5630 13 May 11 nicklas 84 final boolean writePermission = sc.hasPermission(Permission.WRITE, itemType);
5630 13 May 11 nicklas 85 final boolean createPermission = sc.hasPermission(Permission.CREATE, itemType);
5630 13 May 11 nicklas 86 final boolean deletePermission = sc.hasPermission(Permission.DELETE, itemType);
5630 13 May 11 nicklas 87 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
5630 13 May 11 nicklas 88
5630 13 May 11 nicklas 89 final ModeInfo mode = ModeInfo.get(request.getParameter("mode"));
5630 13 May 11 nicklas 90 final String callback = request.getParameter("callback");
5630 13 May 11 nicklas 91 final String title = mode.generateTitle("item subtype", "item subtypes");
7954 12 May 21 nicklas 92 final DbControl dc = sc.newDbControl(":List "+itemType);
5630 13 May 11 nicklas 93 ItemResultIterator<ItemSubtype> subtypes = null;
5630 13 May 11 nicklas 94 try
5630 13 May 11 nicklas 95 {
5630 13 May 11 nicklas 96   Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
5630 13 May 11 nicklas 97
5686 05 Aug 11 nicklas 98   ItemQuery<ItemSubtype> relatedQuery = ItemSubtype.getQuery(null);
5686 05 Aug 11 nicklas 99   relatedQuery.join(Hql.innerJoin("parents", "pp"));
5686 05 Aug 11 nicklas 100   relatedQuery.restrict(Restrictions.eq(Hql.alias("pp"), Hql.entityParameter("subtype", Item.ITEMSUBTYPE)));
5686 05 Aug 11 nicklas 101   relatedQuery.order(Orders.asc(Hql.property("name")));
5686 05 Aug 11 nicklas 102   relatedQuery.include(cc.getInclude());
5686 05 Aug 11 nicklas 103   
5698 15 Aug 11 nicklas 104   final ItemQuery<DataFileType> fileTypesQuery = DataFileType.getQuery();
5698 15 Aug 11 nicklas 105   fileTypesQuery.include(cc.getInclude());
5698 15 Aug 11 nicklas 106   fileTypesQuery.join(Hql.innerJoin("itemSubtypes", "ist"));
6319 09 Sep 13 nicklas 107   fileTypesQuery.join(Hql.innerJoin("ist", "itemSubtype", "ist2"));
6319 09 Sep 13 nicklas 108   fileTypesQuery.restrict(Restrictions.eq(Hql.alias("ist2"), Expressions.parameter("subtype")));
5698 15 Aug 11 nicklas 109   fileTypesQuery.order(Orders.asc(Hql.property("name"))); 
5698 15 Aug 11 nicklas 110
5630 13 May 11 nicklas 111   Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
7914 23 Feb 21 nicklas 112   JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, null);
5630 13 May 11 nicklas 113   try
5630 13 May 11 nicklas 114   {
7914 23 Feb 21 nicklas 115     final ItemQuery<ItemSubtype> query = Base.getConfiguredQuery(dc, cc, jspContext, true, ItemSubtype.getQuery(null), mode);
5630 13 May 11 nicklas 116     subtypes = query.iterate(dc);
5630 13 May 11 nicklas 117   }
5630 13 May 11 nicklas 118   catch (Throwable t)
5630 13 May 11 nicklas 119   {
5630 13 May 11 nicklas 120     cc.setMessage(t.getMessage());
5630 13 May 11 nicklas 121     t.printStackTrace();
5630 13 May 11 nicklas 122   }
5630 13 May 11 nicklas 123   int numListed = 0;
7604 25 Feb 19 nicklas 124   ExtensionsInvoker<ButtonAction> invoker = ToolbarUtil.useExtensions(jspContext);
7604 25 Feb 19 nicklas 125   ExtensionsInvoker<ListColumnAction<ItemSubtype,?>> columnsInvoker = ListColumnUtil.useExtensions(jspContext);
5630 13 May 11 nicklas 126   %>
6289 05 Jun 13 nicklas 127   <base:page title="<%=title==null ? "Item subtypes" : title%>" type="<%=mode.getPageType()%>" id="list-page">
6289 05 Jun 13 nicklas 128   <base:head scripts="table.js,~subtypes.js" styles="table.css,toolbar.css">
5630 13 May 11 nicklas 129     <ext:scripts context="<%=jspContext%>" />
5630 13 May 11 nicklas 130     <ext:stylesheets context="<%=jspContext%>" />
5630 13 May 11 nicklas 131   </base:head>
5630 13 May 11 nicklas 132   
5630 13 May 11 nicklas 133   <base:body>
5954 13 Feb 12 nicklas 134     <h1><%=title==null ? "Item subtypes" : title%></h1>
5954 13 Feb 12 nicklas 135     <div class="content">
5630 13 May 11 nicklas 136     <tbl:table 
5630 13 May 11 nicklas 137       id="subtypes" 
5630 13 May 11 nicklas 138       columns="<%=cc.getSetting("columns")%>"
5630 13 May 11 nicklas 139       sortby="<%=cc.getSortProperty()%>" 
5630 13 May 11 nicklas 140       direction="<%=cc.getSortDirection()%>"
5630 13 May 11 nicklas 141       action="index.jsp"
5630 13 May 11 nicklas 142       sc="<%=sc%>"
5630 13 May 11 nicklas 143       item="<%=itemType%>"
6706 02 Feb 15 nicklas 144       filterrows="<%=cc.getFilterRows()%>"
5954 13 Feb 12 nicklas 145       subclass="fulltable"
7982 14 Jun 21 nicklas 146       stickyheaders="<%=cc.getSetting("columns.sticky", "name")%>"
5630 13 May 11 nicklas 147       >
5630 13 May 11 nicklas 148       <tbl:hidden 
5630 13 May 11 nicklas 149         name="mode" 
5630 13 May 11 nicklas 150         value="<%=mode.getName()%>" 
5630 13 May 11 nicklas 151       />
5630 13 May 11 nicklas 152       <tbl:hidden 
5630 13 May 11 nicklas 153         name="callback" 
5630 13 May 11 nicklas 154         value="<%=callback%>" 
5630 13 May 11 nicklas 155         skip="<%=callback == null%>" 
5630 13 May 11 nicklas 156       />
5630 13 May 11 nicklas 157       <tbl:columndef 
5630 13 May 11 nicklas 158         id="name"
5630 13 May 11 nicklas 159         property="name"
5630 13 May 11 nicklas 160         datatype="string"
5630 13 May 11 nicklas 161         title="Name"
5630 13 May 11 nicklas 162         sortable="true" 
5630 13 May 11 nicklas 163         filterable="true"
5630 13 May 11 nicklas 164         exportable="true"
5630 13 May 11 nicklas 165         show="always" 
5630 13 May 11 nicklas 166       />
5630 13 May 11 nicklas 167       <tbl:columndef 
5630 13 May 11 nicklas 168         id="id"
5630 13 May 11 nicklas 169         clazz="uniquecol"
5630 13 May 11 nicklas 170         property="id"
5630 13 May 11 nicklas 171         datatype="int"
5630 13 May 11 nicklas 172         title="ID"
5630 13 May 11 nicklas 173         sortable="true"
5630 13 May 11 nicklas 174         filterable="true"
5630 13 May 11 nicklas 175         exportable="true"
5630 13 May 11 nicklas 176       />
5630 13 May 11 nicklas 177       <tbl:columndef 
5630 13 May 11 nicklas 178         id="entryDate"
5630 13 May 11 nicklas 179         property="entryDate"
5630 13 May 11 nicklas 180         datatype="date"
5630 13 May 11 nicklas 181         title="Registered"
5630 13 May 11 nicklas 182         sortable="true" 
5630 13 May 11 nicklas 183         filterable="true"
5630 13 May 11 nicklas 184         exportable="true"
5630 13 May 11 nicklas 185         formatter="<%=dateFormatter%>"
5630 13 May 11 nicklas 186       />
5630 13 May 11 nicklas 187       <tbl:columndef 
5630 13 May 11 nicklas 188         id="systemId"
5630 13 May 11 nicklas 189         clazz="uniquecol"
5630 13 May 11 nicklas 190         property="systemId"
5630 13 May 11 nicklas 191         datatype="string"
5630 13 May 11 nicklas 192         title="System ID"
5630 13 May 11 nicklas 193         sortable="true"
5630 13 May 11 nicklas 194         filterable="true"
5630 13 May 11 nicklas 195         exportable="true"
5630 13 May 11 nicklas 196       />
5630 13 May 11 nicklas 197       <tbl:columndef 
5630 13 May 11 nicklas 198         id="itemType"
5630 13 May 11 nicklas 199         property="itemType"
5630 13 May 11 nicklas 200         datatype="int"
5630 13 May 11 nicklas 201         title="Main item type"
5630 13 May 11 nicklas 202         enumeration="<%=items%>"
5630 13 May 11 nicklas 203         sortable="true"
5630 13 May 11 nicklas 204         filterable="true"
5630 13 May 11 nicklas 205         exportable="true"
5630 13 May 11 nicklas 206       />
5630 13 May 11 nicklas 207       <tbl:columndef 
5983 23 Feb 12 nicklas 208         id="pushAnnotations"
5983 23 Feb 12 nicklas 209         property="pushAnnotations"
5983 23 Feb 12 nicklas 210         datatype="boolean"
5983 23 Feb 12 nicklas 211         title="Push annotations to parent"
5983 23 Feb 12 nicklas 212         sortable="true"
5983 23 Feb 12 nicklas 213         filterable="true"
5983 23 Feb 12 nicklas 214         exportable="true"
5983 23 Feb 12 nicklas 215       />
5983 23 Feb 12 nicklas 216       <tbl:columndef 
5686 05 Aug 11 nicklas 217         id="relatedTypes"
5686 05 Aug 11 nicklas 218         property="&relatedSubtypes(name)"
5686 05 Aug 11 nicklas 219         datatype="string"
5686 05 Aug 11 nicklas 220         title="Related item types"
5686 05 Aug 11 nicklas 221         filterable="true"
5686 05 Aug 11 nicklas 222         exportable="true"
5686 05 Aug 11 nicklas 223       />      
5698 15 Aug 11 nicklas 224       <tbl:columndef
5698 15 Aug 11 nicklas 225         id="dataFileTypes"
5698 15 Aug 11 nicklas 226         title="File types"
6319 09 Sep 13 nicklas 227         property="&fileTypes(dataFileType.name)"
5698 15 Aug 11 nicklas 228         datatype="string"
5698 15 Aug 11 nicklas 229         filterable="true"
5698 15 Aug 11 nicklas 230         exportable="true"
5698 15 Aug 11 nicklas 231       />
5686 05 Aug 11 nicklas 232       <tbl:columndef 
5630 13 May 11 nicklas 233         id="description"
5630 13 May 11 nicklas 234         property="description"
5630 13 May 11 nicklas 235         datatype="string"
5630 13 May 11 nicklas 236         title="Description" 
5630 13 May 11 nicklas 237         sortable="true" 
5630 13 May 11 nicklas 238         filterable="true" 
5630 13 May 11 nicklas 239         exportable="true"
5630 13 May 11 nicklas 240       />
6045 03 Apr 12 nicklas 241       <tbl:columndef 
6045 03 Apr 12 nicklas 242         id="xt-columns" 
6045 03 Apr 12 nicklas 243         extensions="<%=columnsInvoker%>" 
6045 03 Apr 12 nicklas 244         jspcontext="<%=jspContext%>" 
6045 03 Apr 12 nicklas 245       />
6604 18 Nov 14 nicklas 246       <div class="panelgroup bg-filled-50 bottomborder">
5954 13 Feb 12 nicklas 247         <tbl:toolbar
5954 13 Feb 12 nicklas 248           subclass="bottomborder"
5954 13 Feb 12 nicklas 249           visible="<%=mode.hasToolbar()%>"
5954 13 Feb 12 nicklas 250           >
5954 13 Feb 12 nicklas 251           <tbl:button
6289 05 Jun 13 nicklas 252             id="btnNewItem"
5954 13 Feb 12 nicklas 253             visible="<%=!mode.isSelectionMode() %>"
5954 13 Feb 12 nicklas 254             disabled="<%=createPermission ? false : true %>"
5954 13 Feb 12 nicklas 255             image="new.png"
5954 13 Feb 12 nicklas 256             title="New&hellip;" 
5954 13 Feb 12 nicklas 257             tooltip="<%=createPermission ? "Create new item subtype" : "You do not have permission to create item subtypes"%>"
5954 13 Feb 12 nicklas 258           />
5954 13 Feb 12 nicklas 259           <tbl:button
6289 05 Jun 13 nicklas 260             id="btnDeleteItems"
5954 13 Feb 12 nicklas 261             disabled="<%=deletePermission ? false : true %>"
5954 13 Feb 12 nicklas 262             image="delete.png"
5954 13 Feb 12 nicklas 263             title="Delete"
5954 13 Feb 12 nicklas 264             tooltip="<%=deletePermission ? "Delete the selected items" : "You do not have permission to delete item subtypes" %>" 
5954 13 Feb 12 nicklas 265           />
5954 13 Feb 12 nicklas 266           <tbl:button 
6289 05 Jun 13 nicklas 267             id="btnRestoreItems"
5954 13 Feb 12 nicklas 268             disabled="<%=!writePermission%>" 
5954 13 Feb 12 nicklas 269             image="restore.png" 
5954 13 Feb 12 nicklas 270             title="Restore" 
5954 13 Feb 12 nicklas 271             tooltip="<%=writePermission ? "Restore the selected (deleted) items" : "You do not have permission to edit item subtypes" %>" 
5954 13 Feb 12 nicklas 272           />
5954 13 Feb 12 nicklas 273           <tbl:button 
6289 05 Jun 13 nicklas 274             id="btnColumns"
5954 13 Feb 12 nicklas 275             image="columns.png" 
5954 13 Feb 12 nicklas 276             title="Columns&hellip;" 
5954 13 Feb 12 nicklas 277             tooltip="Show, hide and re-order columns" 
5954 13 Feb 12 nicklas 278           />
5954 13 Feb 12 nicklas 279           <tbl:button 
6289 05 Jun 13 nicklas 280             id="btnImport"
6289 05 Jun 13 nicklas 281             data-plugin-type="IMPORT"
5954 13 Feb 12 nicklas 282             image="import.png" 
5954 13 Feb 12 nicklas 283             title="Import&hellip;" 
5954 13 Feb 12 nicklas 284             tooltip="Import data" 
5954 13 Feb 12 nicklas 285             visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
5954 13 Feb 12 nicklas 286           />
5954 13 Feb 12 nicklas 287           <tbl:button 
6289 05 Jun 13 nicklas 288             id="btnExport"
6289 05 Jun 13 nicklas 289             data-plugin-type="EXPORT"
5954 13 Feb 12 nicklas 290             image="export.png" 
5954 13 Feb 12 nicklas 291             title="Export&hellip;" 
5954 13 Feb 12 nicklas 292             tooltip="Export data" 
5954 13 Feb 12 nicklas 293             visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
5954 13 Feb 12 nicklas 294           />
5954 13 Feb 12 nicklas 295           <tbl:button 
6289 05 Jun 13 nicklas 296             id="btnRunPlugin"
6289 05 Jun 13 nicklas 297             data-plugin-type="OTHER"
5954 13 Feb 12 nicklas 298             image="runplugin.png" 
5954 13 Feb 12 nicklas 299             title="Run plugin&hellip;" 
5954 13 Feb 12 nicklas 300             tooltip="Run a plugin" 
5954 13 Feb 12 nicklas 301             visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
5954 13 Feb 12 nicklas 302           />
5954 13 Feb 12 nicklas 303           <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
7604 25 Feb 19 nicklas 304             wrapper="<%=new PrefixSuffixRenderer<ButtonAction>(jspContext, "<td>", "</td>") %>"/>
5954 13 Feb 12 nicklas 305         </tbl:toolbar>
5954 13 Feb 12 nicklas 306         <tbl:panel>
6182 23 Oct 12 nicklas 307           <tbl:presetselector />
5954 13 Feb 12 nicklas 308           <tbl:navigator
5954 13 Feb 12 nicklas 309             page="<%=cc.getPage()%>" 
5954 13 Feb 12 nicklas 310             rowsperpage="<%=cc.getRowsPerPage()%>" 
5954 13 Feb 12 nicklas 311             totalrows="<%=subtypes == null ? 0 : subtypes.getTotalCount()%>" 
5954 13 Feb 12 nicklas 312             visible="<%=mode.hasNavigator()%>"
5954 13 Feb 12 nicklas 313           />
5954 13 Feb 12 nicklas 314         </tbl:panel>
5954 13 Feb 12 nicklas 315       </div>
5630 13 May 11 nicklas 316       <tbl:data>
5948 08 Feb 12 nicklas 317         <tbl:headers>
5948 08 Feb 12 nicklas 318           <tbl:headerrow>
7943 04 May 21 nicklas 319             <tbl:header clazz="row-index bg-filled-100" />
5948 08 Feb 12 nicklas 320             <tbl:columnheaders />
5948 08 Feb 12 nicklas 321           </tbl:headerrow>
6706 02 Feb 15 nicklas 322           <%
6706 02 Feb 15 nicklas 323           int numFilters = cc.getNumPropertyFilters();
6706 02 Feb 15 nicklas 324           int numRows = cc.getFilterRows();
6706 02 Feb 15 nicklas 325           for (int filterNo = 0; filterNo < numRows; filterNo++)
6706 02 Feb 15 nicklas 326           {
6706 02 Feb 15 nicklas 327             boolean lastRow = filterNo == numRows-1;
6706 02 Feb 15 nicklas 328             %>
6706 02 Feb 15 nicklas 329             <tbl:headerrow>
7943 04 May 21 nicklas 330               <tbl:header subclass="row-index bg-filled-100">
7943 04 May 21 nicklas 331                 <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 332                   <div class="index"></div>
7943 04 May 21 nicklas 333                   <div class="check">
7943 04 May 21 nicklas 334                     <base:icon 
7943 04 May 21 nicklas 335                       subclass="link table-check"
7943 04 May 21 nicklas 336                       image="check_uncheck.png" 
7943 04 May 21 nicklas 337                       tooltip="Toggle all (use CTRL, ALT or SHIFT to check/uncheck)" 
7943 04 May 21 nicklas 338                       visible="<%=lastRow && mode.hasCheck()%>"
7943 04 May 21 nicklas 339                     />
7943 04 May 21 nicklas 340                   </div>
7943 04 May 21 nicklas 341                   <div class="icons">
7943 04 May 21 nicklas 342                     <base:icon
7943 04 May 21 nicklas 343                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 344                       image="add.png"
7943 04 May 21 nicklas 345                       tooltip="Add extra filter row"
7943 04 May 21 nicklas 346                       visible="<%=lastRow%>"
7943 04 May 21 nicklas 347                     /><base:icon
7943 04 May 21 nicklas 348                       subclass="link table-filter-row-action"
7943 04 May 21 nicklas 349                       image="remove.png"
7943 04 May 21 nicklas 350                       tooltip="Remove this filter row"
7943 04 May 21 nicklas 351                       visible="<%=numRows > 1 || numFilters > 0 %>"
7943 04 May 21 nicklas 352                       data-remove-row="<%=filterNo%>"
7943 04 May 21 nicklas 353                     />
7943 04 May 21 nicklas 354                   </div>
7943 04 May 21 nicklas 355                 </div>
6706 02 Feb 15 nicklas 356               </tbl:header>
6706 02 Feb 15 nicklas 357               <tbl:propertyfilter row="<%=filterNo%>" />
6706 02 Feb 15 nicklas 358             </tbl:headerrow>
6706 02 Feb 15 nicklas 359             <%
6706 02 Feb 15 nicklas 360           }
6706 02 Feb 15 nicklas 361           %>
7913 22 Feb 21 nicklas 362           <tbl:columnsubtitles />
5948 08 Feb 12 nicklas 363         </tbl:headers>
5948 08 Feb 12 nicklas 364         <tbl:rows>
5630 13 May 11 nicklas 365           <%
5954 13 Feb 12 nicklas 366           if (cc.getMessage() != null)
5954 13 Feb 12 nicklas 367           {
5954 13 Feb 12 nicklas 368             %>
6604 18 Nov 14 nicklas 369             <tbl:panel subclass="bg-filled-50">
5954 13 Feb 12 nicklas 370               <div class="messagecontainer error"><%=cc.getMessage()%></div>
5954 13 Feb 12 nicklas 371             </tbl:panel>
5954 13 Feb 12 nicklas 372             <%
5954 13 Feb 12 nicklas 373             cc.setMessage(null);
5954 13 Feb 12 nicklas 374           }
5630 13 May 11 nicklas 375           int index = cc.getPage()*cc.getRowsPerPage();
5630 13 May 11 nicklas 376           int selectedItemId = cc.getId();
5630 13 May 11 nicklas 377           if (subtypes != null)
5630 13 May 11 nicklas 378           {
5630 13 May 11 nicklas 379             
5630 13 May 11 nicklas 380             while (subtypes.hasNext())
5630 13 May 11 nicklas 381             {
5630 13 May 11 nicklas 382               ItemSubtype item = subtypes.next();
5630 13 May 11 nicklas 383               int itemId = item.getId();
5630 13 May 11 nicklas 384               String name = HTML.encodeTags(item.getName());
6221 10 Jan 13 nicklas 385               
5630 13 May 11 nicklas 386               boolean usePermission = item.hasPermission(Permission.USE);
5630 13 May 11 nicklas 387               String tooltip = mode.isSelectionMode() ? 
5630 13 May 11 nicklas 388                   "Select this item" : "View this item" + (writePermission ? " (use CTRL, ALT or SHIFT to edit)" : "");
5630 13 May 11 nicklas 389               index++;
5630 13 May 11 nicklas 390               numListed++;
5630 13 May 11 nicklas 391               %>
5630 13 May 11 nicklas 392               <tbl:row>
7943 04 May 21 nicklas 393                 <tbl:header clazz="row-index bg-filled-100">
7943 04 May 21 nicklas 394                   <div class="index-<%=mode.getName()%>">
7943 04 May 21 nicklas 395                     <div class="index <%=index>999?"index-smaller":""%>"><%=index%></div>
7943 04 May 21 nicklas 396                     <div class="check">
7943 04 May 21 nicklas 397                       <base:input
7943 04 May 21 nicklas 398                         type="checkbox" 
7943 04 May 21 nicklas 399                         name="<%=itemId%>" 
7943 04 May 21 nicklas 400                         value="<%=itemId%>" 
7943 04 May 21 nicklas 401                         title="<%=name%>" 
7943 04 May 21 nicklas 402                         checked="<%=cc.getSelected().contains(itemId)%>"
7943 04 May 21 nicklas 403                         visible="<%=mode.hasCheck()%>"
7943 04 May 21 nicklas 404                       />
7943 04 May 21 nicklas 405                       <base:input 
7943 04 May 21 nicklas 406                         type="radio" 
7943 04 May 21 nicklas 407                         name="item_id" 
7943 04 May 21 nicklas 408                         value="<%=itemId%>" 
7943 04 May 21 nicklas 409                         title="<%=name%>" 
7943 04 May 21 nicklas 410                         checked="<%=selectedItemId == itemId%>"
7943 04 May 21 nicklas 411                         visible="<%=mode.hasRadio()%>"
7943 04 May 21 nicklas 412                       />
7943 04 May 21 nicklas 413                     </div>
7943 04 May 21 nicklas 414                     <div class="icons">
7943 04 May 21 nicklas 415                       <base:icon 
7943 04 May 21 nicklas 416                         image="deleted.png"
7943 04 May 21 nicklas 417                         id="<%="delete."+itemId %>"
7943 04 May 21 nicklas 418                         subclass="<%=deletePermission ? "table-delete-item" : "disabled" %>"
7943 04 May 21 nicklas 419                         data-item-id="<%=itemId%>"
7943 04 May 21 nicklas 420                         tooltip="This item has been scheduled for deletion" 
7943 04 May 21 nicklas 421                         visible="<%=item.isRemoved()%>"
7943 04 May 21 nicklas 422                       /><base:icon
7943 04 May 21 nicklas 423                         image="systemitem.png"
7943 04 May 21 nicklas 424                         tooltip="This item is a system item"
7943 04 May 21 nicklas 425                         visible="<%=item.isSystemItem()%>" 
7943 04 May 21 nicklas 426                       />
7943 04 May 21 nicklas 427                     </div>
7943 04 May 21 nicklas 428                   </div>
7943 04 May 21 nicklas 429                 </tbl:header>
6289 05 Jun 13 nicklas 430                 <tbl:cell column="name"><div 
6289 05 Jun 13 nicklas 431                   class="link table-item"
6289 05 Jun 13 nicklas 432                   data-item-id="<%=itemId%>"
6289 05 Jun 13 nicklas 433                   data-no-edit="<%=writePermission ? 0 : 1 %>" 
6289 05 Jun 13 nicklas 434                   tabindex="0"
5630 13 May 11 nicklas 435                   title="<%=tooltip%>"><%=name%></div></tbl:cell>
5630 13 May 11 nicklas 436                 <tbl:cell column="id"><%=item.getId()%></tbl:cell>
5630 13 May 11 nicklas 437                 <tbl:cell column="entryDate" value="<%=item.getEntryDate()%>" />
5630 13 May 11 nicklas 438                 <tbl:cell column="systemId"><%=Values.getString(item.getSystemId())%></tbl:cell>
5630 13 May 11 nicklas 439                 <tbl:cell column="itemType"><%=item.getMainItemType()%></tbl:cell>
5983 23 Feb 12 nicklas 440                 <tbl:cell column="pushAnnotations"><%=item.getPushAnnotations() %></tbl:cell>
5686 05 Aug 11 nicklas 441                 <tbl:cell column="relatedTypes">
5686 05 Aug 11 nicklas 442                   <%
5686 05 Aug 11 nicklas 443                   relatedQuery.setEntityParameter("subtype", item);
5686 05 Aug 11 nicklas 444                   String separator = "";
5686 05 Aug 11 nicklas 445                   for (ItemSubtype related : relatedQuery.list(dc))
5686 05 Aug 11 nicklas 446                   {
5686 05 Aug 11 nicklas 447                     out.write(separator);
5686 05 Aug 11 nicklas 448                     if (mode.hasPropertyLink())
5686 05 Aug 11 nicklas 449                     {
5686 05 Aug 11 nicklas 450                       out.write(Base.getLinkedName(ID, related, false, mode.hasEditLink()));
5686 05 Aug 11 nicklas 451                     }
5686 05 Aug 11 nicklas 452                     else
5686 05 Aug 11 nicklas 453                     {
5686 05 Aug 11 nicklas 454                       out.write(HTML.encodeTags(related.getName()));
5686 05 Aug 11 nicklas 455                     }
5686 05 Aug 11 nicklas 456                     out.write(" (" + related.getMainItemType() + ")");
5686 05 Aug 11 nicklas 457                     separator = ", ";
5686 05 Aug 11 nicklas 458                   }
5686 05 Aug 11 nicklas 459                   %>
5686 05 Aug 11 nicklas 460                 </tbl:cell>
5698 15 Aug 11 nicklas 461                 <tbl:cell column="dataFileTypes">
5698 15 Aug 11 nicklas 462                   <%
5698 15 Aug 11 nicklas 463                   fileTypesQuery.setParameter("subtype", itemId, Type.INT);
5698 15 Aug 11 nicklas 464                   String separator = "";
5698 15 Aug 11 nicklas 465                   for (DataFileType dft : fileTypesQuery.list(dc))
5698 15 Aug 11 nicklas 466                   {
5698 15 Aug 11 nicklas 467                     out.write(separator);
5698 15 Aug 11 nicklas 468                     if (mode.hasPropertyLink())
5698 15 Aug 11 nicklas 469                     {
5698 15 Aug 11 nicklas 470                       out.write(Base.getLinkedName(ID, dft, false, mode.hasEditLink()));
5698 15 Aug 11 nicklas 471                     }
5698 15 Aug 11 nicklas 472                     else
5698 15 Aug 11 nicklas 473                     {
5698 15 Aug 11 nicklas 474                       out.write(HTML.encodeTags(dft.getName()));
5698 15 Aug 11 nicklas 475                     }
5698 15 Aug 11 nicklas 476                     separator = ", ";
5698 15 Aug 11 nicklas 477                   }
5698 15 Aug 11 nicklas 478                   %>
5698 15 Aug 11 nicklas 479                 </tbl:cell>
5630 13 May 11 nicklas 480                 <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
6045 03 Apr 12 nicklas 481                 <tbl:xt-cells dc="<%=dc%>" item="<%=item%>">
6045 03 Apr 12 nicklas 482                   <tbl:cell column="xt-columns" />
6045 03 Apr 12 nicklas 483                 </tbl:xt-cells>
5630 13 May 11 nicklas 484               </tbl:row>
5630 13 May 11 nicklas 485               <%
5630 13 May 11 nicklas 486               }
5630 13 May 11 nicklas 487             }
5954 13 Feb 12 nicklas 488           if (numListed == 0)
5954 13 Feb 12 nicklas 489           {
5954 13 Feb 12 nicklas 490             %>
6604 18 Nov 14 nicklas 491             <tbl:panel subclass="bg-filled-50">
5954 13 Feb 12 nicklas 492               <div class="messagecontainer note">
5954 13 Feb 12 nicklas 493               <%=subtypes == null || subtypes.getTotalCount() == 0 ? "No item subtypes were found" : "No item subtypes on this page. Please select another page!" %>
5954 13 Feb 12 nicklas 494               </div>
5954 13 Feb 12 nicklas 495             </tbl:panel>
5954 13 Feb 12 nicklas 496             <%
5954 13 Feb 12 nicklas 497           }
5630 13 May 11 nicklas 498           %>
5954 13 Feb 12 nicklas 499         </tbl:rows>
5630 13 May 11 nicklas 500       </tbl:data>
5630 13 May 11 nicklas 501     </tbl:table>
5954 13 Feb 12 nicklas 502     </div>
5954 13 Feb 12 nicklas 503     
5951 09 Feb 12 nicklas 504     <base:buttongroup subclass="dialogbuttons">
6289 05 Jun 13 nicklas 505       <base:button id="btnOk" title="Ok" visible="<%=mode.hasOkButton()%>" />
6289 05 Jun 13 nicklas 506       <base:button id="close" title="Cancel" visible="<%=mode.hasCancelButton()%>" />
6289 05 Jun 13 nicklas 507       <base:button id="close" title="Close" visible="<%=mode.hasCloseButton()%>" />
5630 13 May 11 nicklas 508     </base:buttongroup>
5951 09 Feb 12 nicklas 509     
5630 13 May 11 nicklas 510   </base:body>
5630 13 May 11 nicklas 511   </base:page>
5630 13 May 11 nicklas 512   <%
5630 13 May 11 nicklas 513 }
5630 13 May 11 nicklas 514 finally
5630 13 May 11 nicklas 515 {
5630 13 May 11 nicklas 516   if (subtypes != null) subtypes.close();
5630 13 May 11 nicklas 517   if (dc != null) dc.close();
5630 13 May 11 nicklas 518 }
5630 13 May 11 nicklas 519 %>