www/admin/groups/list_groups.jsp

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