www/admin/pluginconfigurations/list_configurations.jsp

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