www/admin/plugintypes/index.jsp

Code
Comments
Other
Rev Date Author Line
1382 27 Sep 05 nicklas 1 <%-- $Id$
1382 27 Sep 05 nicklas 2   ------------------------------------------------------------------
3675 16 Aug 07 jari 3   Copyright (C) 2005 Nicklas Nordborg
5425 23 Sep 10 nicklas 4   Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
1382 27 Sep 05 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/
1382 27 Sep 05 nicklas 8
1382 27 Sep 05 nicklas 9   BASE is free software; you can redistribute it and/or
1382 27 Sep 05 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
1382 27 Sep 05 nicklas 12   of the License, or (at your option) any later version.
1382 27 Sep 05 nicklas 13
1382 27 Sep 05 nicklas 14   BASE is distributed in the hope that it will be useful,
1382 27 Sep 05 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
1382 27 Sep 05 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1382 27 Sep 05 nicklas 17   GNU General Public License for more details.
1382 27 Sep 05 nicklas 18
1382 27 Sep 05 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/>.
1382 27 Sep 05 nicklas 21   ------------------------------------------------------------------
1382 27 Sep 05 nicklas 22
1382 27 Sep 05 nicklas 23   @author Nicklas
1382 27 Sep 05 nicklas 24   @version 2.0
1382 27 Sep 05 nicklas 25 --%>
5426 24 Sep 10 nicklas 26 <%@ page pageEncoding="UTF-8" session="false"
1382 27 Sep 05 nicklas 27   import="net.sf.basedb.core.SessionControl"
1382 27 Sep 05 nicklas 28   import="net.sf.basedb.core.DbControl"
1382 27 Sep 05 nicklas 29   import="net.sf.basedb.core.Item"
1991 15 Feb 06 nicklas 30   import="net.sf.basedb.core.Include"
1382 27 Sep 05 nicklas 31   import="net.sf.basedb.core.PluginType"
1418 07 Oct 05 nicklas 32   import="net.sf.basedb.core.ItemQuery"
1382 27 Sep 05 nicklas 33   import="net.sf.basedb.core.Permission"
1991 15 Feb 06 nicklas 34   import="net.sf.basedb.core.ItemContext"
1991 15 Feb 06 nicklas 35   import="net.sf.basedb.core.MultiPermissions"
1991 15 Feb 06 nicklas 36   import="net.sf.basedb.core.PermissionDeniedException"
4906 24 Apr 09 martin 37   import="net.sf.basedb.core.PluginDefinition"
1991 15 Feb 06 nicklas 38   import="net.sf.basedb.core.ItemAlreadyExistsException"
4906 24 Apr 09 martin 39   import="net.sf.basedb.core.query.Expressions"
4906 24 Apr 09 martin 40   import="net.sf.basedb.core.query.Hql"
4906 24 Apr 09 martin 41   import="net.sf.basedb.core.query.Orders"
4906 24 Apr 09 martin 42   import="net.sf.basedb.core.query.Restrictions"
1991 15 Feb 06 nicklas 43   import="net.sf.basedb.util.RemovableUtil"
4906 24 Apr 09 martin 44   import="net.sf.basedb.util.formatter.NameableFormatter"
1382 27 Sep 05 nicklas 45   import="net.sf.basedb.clients.web.Base"
1991 15 Feb 06 nicklas 46   import="net.sf.basedb.clients.web.WebException"
2753 20 Oct 06 nicklas 47   import="net.sf.basedb.util.Values"
4906 24 Apr 09 martin 48   import="net.sf.basedb.clients.web.plugins.ItemQueryLoader"
1382 27 Sep 05 nicklas 49   import="net.sf.basedb.clients.web.util.HTML"
5508 19 Nov 10 nicklas 50   import="net.sf.basedb.core.plugin.GuiContext"
5508 19 Nov 10 nicklas 51   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
5508 19 Nov 10 nicklas 52   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
5508 19 Nov 10 nicklas 53   import="net.sf.basedb.clients.web.extensions.JspContext"
5508 19 Nov 10 nicklas 54   import="net.sf.basedb.clients.web.extensions.edit.EditUtil"
7604 25 Feb 19 nicklas 55   import="net.sf.basedb.clients.web.extensions.edit.OnSaveAction"
5508 19 Nov 10 nicklas 56   import="net.sf.basedb.clients.web.extensions.edit.OnSaveRenderer"
6045 03 Apr 12 nicklas 57   import="net.sf.basedb.clients.web.extensions.list.ListColumnExportRenderer"
7604 25 Feb 19 nicklas 58   import="net.sf.basedb.clients.web.extensions.list.ListColumnAction"
6045 03 Apr 12 nicklas 59   import="net.sf.basedb.clients.web.extensions.list.ListColumnUtil"
1991 15 Feb 06 nicklas 60   import="java.util.Enumeration"
1382 27 Sep 05 nicklas 61   import="java.util.Set"
1991 15 Feb 06 nicklas 62   import="java.util.HashSet"
1991 15 Feb 06 nicklas 63   import="java.util.List"
1991 15 Feb 06 nicklas 64   import="java.util.ArrayList"
1991 15 Feb 06 nicklas 65   import="java.util.Collections"
1382 27 Sep 05 nicklas 66 %>
1382 27 Sep 05 nicklas 67 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
1382 27 Sep 05 nicklas 68 <%!
1991 15 Feb 06 nicklas 69   private static final ItemContext defaultContext = Base.createDefaultContext("name", "name,interfaceName,description");
1991 15 Feb 06 nicklas 70   private static final Item itemType = Item.PLUGINTYPE;
4906 24 Apr 09 martin 71   
4906 24 Apr 09 martin 72   private static void registerExportUtils(ItemContext cc)
4906 24 Apr 09 martin 73   {
4906 24 Apr 09 martin 74     // Register formatters
4906 24 Apr 09 martin 75     cc.setObject("export.formatter.&plugins(name)", new NameableFormatter());
4906 24 Apr 09 martin 76     
4906 24 Apr 09 martin 77     // Register dataloaders
4906 24 Apr 09 martin 78     String typeParameter = "pluginType";
4906 24 Apr 09 martin 79     ItemQuery<PluginDefinition> pluginQuery = PluginDefinition.getQuery();
4906 24 Apr 09 martin 80     pluginQuery.include(cc.getInclude());
4906 24 Apr 09 martin 81     pluginQuery.include(Include.MINE, Include.SHARED, Include.IN_PROJECT, Include.OTHERS);
4906 24 Apr 09 martin 82     pluginQuery.join(Hql.innerJoin("pluginTypes", "pt"));
4906 24 Apr 09 martin 83     pluginQuery.restrict(Restrictions.eq(Hql.alias("pt"), Expressions.parameter(typeParameter)));
4906 24 Apr 09 martin 84     pluginQuery.order(Orders.asc(Hql.property("name"))); 
7604 25 Feb 19 nicklas 85     cc.setObject("export.dataloader.&plugins(name)", new ItemQueryLoader<PluginType>(pluginQuery, typeParameter));
4906 24 Apr 09 martin 86   }
1382 27 Sep 05 nicklas 87 %>
1382 27 Sep 05 nicklas 88 <%
1991 15 Feb 06 nicklas 89 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
1382 27 Sep 05 nicklas 90 final String ID = sc.getId();
1991 15 Feb 06 nicklas 91 final String cmd = request.getParameter("cmd");
1991 15 Feb 06 nicklas 92 final String root = request.getContextPath()+"/";
1991 15 Feb 06 nicklas 93 final String mode = request.getParameter("mode");
1991 15 Feb 06 nicklas 94 final String callback = request.getParameter("callback");
1991 15 Feb 06 nicklas 95 final String itemId = request.getParameter("item_id");
1991 15 Feb 06 nicklas 96 final String listPage = "list_plugintypes.jsp?ID="+ID
1991 15 Feb 06 nicklas 97   +(mode == null ? "" : "&mode="+mode)
1991 15 Feb 06 nicklas 98   +(callback == null ? "" : "&callback="+callback)
1991 15 Feb 06 nicklas 99   +(itemId == null ? "" : "&item_id="+itemId);
1991 15 Feb 06 nicklas 100 final String viewPage = "view_plugintype.jsp?ID="+ID;
1991 15 Feb 06 nicklas 101 final String editPage = "edit_plugintype.jsp?ID="+ID;
1382 27 Sep 05 nicklas 102
1991 15 Feb 06 nicklas 103 String forward = null;
1991 15 Feb 06 nicklas 104 String redirect = null;
1991 15 Feb 06 nicklas 105 String message = null;
1991 15 Feb 06 nicklas 106 DbControl dc = null;
1991 15 Feb 06 nicklas 107
1382 27 Sep 05 nicklas 108 try
1382 27 Sep 05 nicklas 109 {
1991 15 Feb 06 nicklas 110   if (cmd == null || "List".equals(cmd))
1991 15 Feb 06 nicklas 111   {
1991 15 Feb 06 nicklas 112     // Display the list page without updatinging the current context
2811 26 Oct 06 nicklas 113     Base.getAndSetCurrentContext(sc, itemType, null, defaultContext, true);
1991 15 Feb 06 nicklas 114     redirect = listPage;
1991 15 Feb 06 nicklas 115   }
1991 15 Feb 06 nicklas 116   else if ("UpdateContext".equals(cmd))
1991 15 Feb 06 nicklas 117   {
1991 15 Feb 06 nicklas 118     // Display the list page after updating the current context from the request parameters
1991 15 Feb 06 nicklas 119     Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1991 15 Feb 06 nicklas 120     redirect = listPage;
1991 15 Feb 06 nicklas 121   }
1991 15 Feb 06 nicklas 122   else if ("LoadContext".equals(cmd))
1991 15 Feb 06 nicklas 123   {
1991 15 Feb 06 nicklas 124     // Display the list page after loading a saved context
1991 15 Feb 06 nicklas 125     int contextId = Values.getInt(request.getParameter("context"));
1991 15 Feb 06 nicklas 126     Base.loadContext(sc, contextId, defaultContext);
1991 15 Feb 06 nicklas 127     redirect = listPage;
1991 15 Feb 06 nicklas 128   }
1991 15 Feb 06 nicklas 129
1991 15 Feb 06 nicklas 130   else if ("ViewItem".equals(cmd))
1991 15 Feb 06 nicklas 131   {
1991 15 Feb 06 nicklas 132     // Display the view page for a single item 
1991 15 Feb 06 nicklas 133     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1991 15 Feb 06 nicklas 134     forward = viewPage;
1991 15 Feb 06 nicklas 135   }
1991 15 Feb 06 nicklas 136   else if ("EditItem".equals(cmd))
1991 15 Feb 06 nicklas 137   {
1991 15 Feb 06 nicklas 138     // Display the edit page for a single item (should be opened in a popup)
1991 15 Feb 06 nicklas 139     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1991 15 Feb 06 nicklas 140     redirect = editPage;
1991 15 Feb 06 nicklas 141   }
1991 15 Feb 06 nicklas 142   else if ("NewItem".equals(cmd))
1991 15 Feb 06 nicklas 143   {
1991 15 Feb 06 nicklas 144     // Display the edit page for a new item (should be opened in a popup)
1991 15 Feb 06 nicklas 145     if (!sc.hasPermission(Permission.CREATE, itemType))
1382 27 Sep 05 nicklas 146     {
1991 15 Feb 06 nicklas 147       throw new PermissionDeniedException(Permission.CREATE, itemType.toString());
1382 27 Sep 05 nicklas 148     }
1991 15 Feb 06 nicklas 149     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1991 15 Feb 06 nicklas 150     cc.setId(0);
1991 15 Feb 06 nicklas 151     redirect = editPage;
1991 15 Feb 06 nicklas 152   }
1991 15 Feb 06 nicklas 153   else if ("UpdateItem".equals(cmd))
1991 15 Feb 06 nicklas 154   {
1991 15 Feb 06 nicklas 155     // Update the properties on an item (will close the popup)
1991 15 Feb 06 nicklas 156     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, defaultContext);
7954 12 May 21 nicklas 157     dc = sc.newDbControl(":Edit "+itemType);
7605 26 Feb 19 nicklas 158     PluginType pluginType = cc.getObject("item");
1991 15 Feb 06 nicklas 159     String interfaceName = Values.getStringOrNull(request.getParameter("interfaceName"));
5613 18 Apr 11 nicklas 160     String jarFile = Values.getStringOrNull(request.getParameter("jarFile"));
1991 15 Feb 06 nicklas 161     if (pluginType == null)
1382 27 Sep 05 nicklas 162     {
5613 18 Apr 11 nicklas 163       pluginType = PluginType.getNew(dc, interfaceName, jarFile);
1991 15 Feb 06 nicklas 164       message = "Plugin type created";
1991 15 Feb 06 nicklas 165       dc.saveItem(pluginType);
1382 27 Sep 05 nicklas 166     }
1991 15 Feb 06 nicklas 167     else
1382 27 Sep 05 nicklas 168     {
5060 19 Aug 09 nicklas 169       dc.reattachItem(pluginType, false);
5613 18 Apr 11 nicklas 170       pluginType.loadInterfaceInformation(jarFile, interfaceName);
1991 15 Feb 06 nicklas 171       message = "Plugin type updated";
1382 27 Sep 05 nicklas 172     }
5508 19 Nov 10 nicklas 173     JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.item(Item.PLUGINTYPE), pluginType);
7604 25 Feb 19 nicklas 174     ExtensionsInvoker<OnSaveAction> invoker = EditUtil.useOnSaveExtensions(jspContext);
5508 19 Nov 10 nicklas 175     try
5508 19 Nov 10 nicklas 176     {
5508 19 Nov 10 nicklas 177       pluginType.setName(Values.getStringOrNull(request.getParameter("name")));
5508 19 Nov 10 nicklas 178       pluginType.setDescription(Values.getStringOrNull(request.getParameter("description")));
5508 19 Nov 10 nicklas 179       
5508 19 Nov 10 nicklas 180       // OnSave extensions
5508 19 Nov 10 nicklas 181       invoker.render(OnSaveRenderer.ON_SAVE);
5508 19 Nov 10 nicklas 182       dc.commit();
5508 19 Nov 10 nicklas 183       invoker.render(OnSaveRenderer.ON_COMMIT);
5508 19 Nov 10 nicklas 184     }
5508 19 Nov 10 nicklas 185     catch (Exception ex)
5508 19 Nov 10 nicklas 186     {
5508 19 Nov 10 nicklas 187       invoker.render(OnSaveRenderer.onRollback(ex));
5508 19 Nov 10 nicklas 188       throw ex;
5508 19 Nov 10 nicklas 189     }
5508 19 Nov 10 nicklas 190     finally
5508 19 Nov 10 nicklas 191     {
5508 19 Nov 10 nicklas 192       cc.removeObject("item");
5508 19 Nov 10 nicklas 193     }
1991 15 Feb 06 nicklas 194   }
1991 15 Feb 06 nicklas 195   else if ("DeleteItem".equals(cmd))
1991 15 Feb 06 nicklas 196   {
1991 15 Feb 06 nicklas 197     // Delete a single item and then return to the view page
7954 12 May 21 nicklas 198     dc = sc.newDbControl(":Delete "+itemType);
1991 15 Feb 06 nicklas 199     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1991 15 Feb 06 nicklas 200     RemovableUtil.setRemoved(dc, itemType, Collections.singleton(cc.getId()), true);
1991 15 Feb 06 nicklas 201     dc.commit();
1991 15 Feb 06 nicklas 202     redirect = viewPage;
1991 15 Feb 06 nicklas 203   }
1991 15 Feb 06 nicklas 204   else if ("DeleteItems".equals(cmd))
1991 15 Feb 06 nicklas 205   {
1991 15 Feb 06 nicklas 206     // Delete all selected items on the list page
7954 12 May 21 nicklas 207     dc = sc.newDbControl(":Delete "+itemType);
1991 15 Feb 06 nicklas 208     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1991 15 Feb 06 nicklas 209     int numTotal = cc.getSelected().size();
1991 15 Feb 06 nicklas 210     int numRemoved = RemovableUtil.setRemoved(dc, itemType, cc.getSelected(), true);
1991 15 Feb 06 nicklas 211     dc.commit();
1991 15 Feb 06 nicklas 212     if (numTotal != numRemoved)
1382 27 Sep 05 nicklas 213     {
1991 15 Feb 06 nicklas 214       message = (numRemoved == 0 ? "No" : "Only "+numRemoved+" of "+numTotal) + " items could be deleted, because you have no DELETE permission";
1382 27 Sep 05 nicklas 215     }
6192 31 Oct 12 nicklas 216     redirect = listPage;
1991 15 Feb 06 nicklas 217   }
1991 15 Feb 06 nicklas 218   else if ("RestoreItem".equals(cmd))
1991 15 Feb 06 nicklas 219   {
1991 15 Feb 06 nicklas 220     // Restore a single item and then return to the view page
7954 12 May 21 nicklas 221     dc = sc.newDbControl(":Restore "+itemType);
1991 15 Feb 06 nicklas 222     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1991 15 Feb 06 nicklas 223     RemovableUtil.setRemoved(dc, itemType, Collections.singleton(cc.getId()), false);
1991 15 Feb 06 nicklas 224     dc.commit();
1991 15 Feb 06 nicklas 225     redirect = viewPage;
1991 15 Feb 06 nicklas 226   }
1991 15 Feb 06 nicklas 227   else if ("RestoreItems".equals(cmd))
1991 15 Feb 06 nicklas 228   {
1991 15 Feb 06 nicklas 229     // Restore all selected items on the list page
7954 12 May 21 nicklas 230     dc = sc.newDbControl(":Restore "+itemType);
1991 15 Feb 06 nicklas 231     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1991 15 Feb 06 nicklas 232     int numTotal = cc.getSelected().size();
1991 15 Feb 06 nicklas 233     int numRemoved = RemovableUtil.setRemoved(dc, itemType, cc.getSelected(), false);
1991 15 Feb 06 nicklas 234     dc.commit();
1991 15 Feb 06 nicklas 235     if (numTotal != numRemoved)
1382 27 Sep 05 nicklas 236     {
2528 15 Aug 06 martin 237       message = (numRemoved == 0 ? "No" : "Only "+numRemoved+" of "+numTotal) + " items could be restored, because you have no WRITE permission";
1382 27 Sep 05 nicklas 238     }
6192 31 Oct 12 nicklas 239     redirect = listPage;
1991 15 Feb 06 nicklas 240   }
1991 15 Feb 06 nicklas 241   else if ("ExportItems".equals(cmd))
1991 15 Feb 06 nicklas 242   {
1991 15 Feb 06 nicklas 243     // Run an export plugin in a list context
1991 15 Feb 06 nicklas 244     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1991 15 Feb 06 nicklas 245     final ItemQuery<PluginType> query = PluginType.getQuery();
7954 12 May 21 nicklas 246     dc = sc.newDbControl(":Export "+itemType);
7914 23 Feb 21 nicklas 247     JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.list(itemType), null);
7914 23 Feb 21 nicklas 248     cc.configureQuery(dc, query, jspContext, true);
1991 15 Feb 06 nicklas 249     cc.setQuery(query);
4906 24 Apr 09 martin 250     registerExportUtils(cc);
7604 25 Feb 19 nicklas 251     ExtensionsInvoker<ListColumnAction<PluginType,?>> listInvoker = ListColumnUtil.useExtensions(jspContext);
7604 25 Feb 19 nicklas 252     listInvoker.render(new ListColumnExportRenderer<PluginType>(cc));
6045 03 Apr 12 nicklas 253     dc.close();
1991 15 Feb 06 nicklas 254     redirect = "../../common/export/index.jsp?ID="+ID+"&cmd=SelectPlugin&item_type="+itemType.name()+"&context_type=LIST&title=Export+plugin+types";
1991 15 Feb 06 nicklas 255   }
1991 15 Feb 06 nicklas 256   else if ("ExportItem".equals(cmd))
1991 15 Feb 06 nicklas 257   {
1991 15 Feb 06 nicklas 258     // Run an export plugin in single-item context
1991 15 Feb 06 nicklas 259     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
4906 24 Apr 09 martin 260     registerExportUtils(cc);
1991 15 Feb 06 nicklas 261     redirect = "../../common/export/index.jsp?ID="+ID+"&cmd=SelectPlugin&item_type="+itemType.name()+"&context_type=ITEM&title=Export+plugin+type";
1991 15 Feb 06 nicklas 262   }
1991 15 Feb 06 nicklas 263   else if ("ImportItems".equals(cmd))
1991 15 Feb 06 nicklas 264   {
1991 15 Feb 06 nicklas 265     // Run an import plugin in a list context
1991 15 Feb 06 nicklas 266     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1991 15 Feb 06 nicklas 267     final ItemQuery<PluginType> query = PluginType.getQuery();
7954 12 May 21 nicklas 268     dc = sc.newDbControl(":Import "+itemType);
7914 23 Feb 21 nicklas 269     JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.list(itemType), null);
7914 23 Feb 21 nicklas 270     cc.configureQuery(dc, query, jspContext, true);
5590 16 Mar 11 nicklas 271     dc.close();
1991 15 Feb 06 nicklas 272     cc.setQuery(query);
1991 15 Feb 06 nicklas 273     redirect = "../../common/import/index.jsp?ID="+ID+"&cmd=SelectPlugin&item_type="+itemType.name()+"&context_type=LIST&title=Import+plugin+types";
1991 15 Feb 06 nicklas 274   }
1991 15 Feb 06 nicklas 275   else if ("ImportItem".equals(cmd))
1991 15 Feb 06 nicklas 276   {
1991 15 Feb 06 nicklas 277     // Run an import plugin in single-item context
1991 15 Feb 06 nicklas 278     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1991 15 Feb 06 nicklas 279     redirect = "../../common/import/index.jsp?ID="+ID+"&cmd=SelectPlugin&item_type="+itemType.name()+"&context_type=ITEM&title=Import+plugin+type";
1991 15 Feb 06 nicklas 280   }
1991 15 Feb 06 nicklas 281   else if ("RunListPlugin".equals(cmd))
1991 15 Feb 06 nicklas 282   {
1991 15 Feb 06 nicklas 283     // Run another plugin in a list context
1991 15 Feb 06 nicklas 284     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1991 15 Feb 06 nicklas 285     final ItemQuery<PluginType> query = PluginType.getQuery();
7954 12 May 21 nicklas 286     dc = sc.newDbControl(":Run plugin "+itemType);
7914 23 Feb 21 nicklas 287     JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.list(itemType), null);
7914 23 Feb 21 nicklas 288     cc.configureQuery(dc, query, jspContext, true);
5590 16 Mar 11 nicklas 289     dc.close();
1991 15 Feb 06 nicklas 290     cc.setQuery(query);
1991 15 Feb 06 nicklas 291     redirect = "../../common/plugin/index.jsp?ID="+ID+"&cmd=SelectPlugin&item_type="+itemType.name()+"&context_type=LIST&main_type=OTHER&title=Run+plugin";
1991 15 Feb 06 nicklas 292   }
1991 15 Feb 06 nicklas 293   else if ("RunPlugin".equals(cmd))
1991 15 Feb 06 nicklas 294   {
1991 15 Feb 06 nicklas 295     // Run another plugin in single-item context
1991 15 Feb 06 nicklas 296     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1991 15 Feb 06 nicklas 297     redirect = "../../common/plugin/index.jsp?ID="+ID+"&cmd=SelectPlugin&item_type="+itemType.name()+"&context_type=ITEM&main_type=OTHER&title=Run+plugin";
1991 15 Feb 06 nicklas 298   }
1991 15 Feb 06 nicklas 299   else
1991 15 Feb 06 nicklas 300   {
1991 15 Feb 06 nicklas 301     throw new WebException("popup", "Invalid command", "The command {1} is not recognised as a valid command.", cmd);
1991 15 Feb 06 nicklas 302   }
1382 27 Sep 05 nicklas 303 }
1382 27 Sep 05 nicklas 304 finally
1382 27 Sep 05 nicklas 305 {
1382 27 Sep 05 nicklas 306   if (dc != null) dc.close();
1382 27 Sep 05 nicklas 307 }
1991 15 Feb 06 nicklas 308
1991 15 Feb 06 nicklas 309 if (forward != null)
1991 15 Feb 06 nicklas 310 {
6192 31 Oct 12 nicklas 311   sc.setSessionSetting("alert-message", message);
1991 15 Feb 06 nicklas 312   pageContext.forward(forward);
1991 15 Feb 06 nicklas 313 }
1991 15 Feb 06 nicklas 314 else if (redirect != null)
1991 15 Feb 06 nicklas 315 {
6192 31 Oct 12 nicklas 316   sc.setSessionSetting("alert-message", message);
1991 15 Feb 06 nicklas 317   response.sendRedirect(redirect);
1991 15 Feb 06 nicklas 318 }
1991 15 Feb 06 nicklas 319 else if (message == null)
1991 15 Feb 06 nicklas 320 {
1991 15 Feb 06 nicklas 321   response.sendRedirect(root + "common/close_popup.jsp?refresh_opener=1&wait=0");
1991 15 Feb 06 nicklas 322 }
1991 15 Feb 06 nicklas 323 else
1991 15 Feb 06 nicklas 324 {
1991 15 Feb 06 nicklas 325   response.sendRedirect(root + "common/close_popup.jsp?refresh_opener=1&message="+HTML.urlEncode(message));
1991 15 Feb 06 nicklas 326 }
1991 15 Feb 06 nicklas 327 %>
1991 15 Feb 06 nicklas 328