www/admin/software/index.jsp

Code
Comments
Other
Rev Date Author Line
702 01 Jun 05 nicklas 1 <%-- $Id$
702 01 Jun 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
702 01 Jun 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/
702 01 Jun 05 nicklas 8
702 01 Jun 05 nicklas 9   BASE is free software; you can redistribute it and/or
702 01 Jun 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
702 01 Jun 05 nicklas 12   of the License, or (at your option) any later version.
702 01 Jun 05 nicklas 13
702 01 Jun 05 nicklas 14   BASE is distributed in the hope that it will be useful,
702 01 Jun 05 nicklas 15   but WITHOUT ANY WARRANTY; without even the implied warranty of
702 01 Jun 05 nicklas 16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
702 01 Jun 05 nicklas 17   GNU General Public License for more details.
702 01 Jun 05 nicklas 18
702 01 Jun 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/>.
702 01 Jun 05 nicklas 21   ------------------------------------------------------------------
702 01 Jun 05 nicklas 22
702 01 Jun 05 nicklas 23   @author Nicklas
702 01 Jun 05 nicklas 24   @version 2.0
702 01 Jun 05 nicklas 25 --%>
5426 24 Sep 10 nicklas 26 <%@ page pageEncoding="UTF-8" session="false"
702 01 Jun 05 nicklas 27   import="net.sf.basedb.core.SessionControl"
702 01 Jun 05 nicklas 28   import="net.sf.basedb.core.DbControl"
702 01 Jun 05 nicklas 29   import="net.sf.basedb.core.Item"
1777 17 Jan 06 nicklas 30   import="net.sf.basedb.core.Include"
702 01 Jun 05 nicklas 31   import="net.sf.basedb.core.Software"
5964 15 Feb 12 nicklas 32   import="net.sf.basedb.core.Project"
5630 13 May 11 nicklas 33   import="net.sf.basedb.core.ItemSubtype"
1418 07 Oct 05 nicklas 34   import="net.sf.basedb.core.ItemQuery"
702 01 Jun 05 nicklas 35   import="net.sf.basedb.core.Permission"
1777 17 Jan 06 nicklas 36   import="net.sf.basedb.core.ItemContext"
1777 17 Jan 06 nicklas 37   import="net.sf.basedb.core.MultiPermissions"
4587 15 Oct 08 martin 38   import="net.sf.basedb.core.OwnedItem"
1777 17 Jan 06 nicklas 39   import="net.sf.basedb.core.PermissionDeniedException"
1777 17 Jan 06 nicklas 40   import="net.sf.basedb.core.ItemAlreadyExistsException"
1777 17 Jan 06 nicklas 41   import="net.sf.basedb.util.RemovableUtil"
1777 17 Jan 06 nicklas 42   import="net.sf.basedb.util.ShareableUtil"
2921 15 Nov 06 nicklas 43   import="net.sf.basedb.util.OwnableUtil"
702 01 Jun 05 nicklas 44   import="net.sf.basedb.clients.web.Base"
1777 17 Jan 06 nicklas 45   import="net.sf.basedb.clients.web.WebException"
2753 20 Oct 06 nicklas 46   import="net.sf.basedb.util.Values"
702 01 Jun 05 nicklas 47   import="net.sf.basedb.clients.web.util.HTML"
5506 19 Nov 10 nicklas 48   import="net.sf.basedb.core.plugin.GuiContext"
5506 19 Nov 10 nicklas 49   import="net.sf.basedb.util.extensions.ExtensionsInvoker"
5506 19 Nov 10 nicklas 50   import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
5506 19 Nov 10 nicklas 51   import="net.sf.basedb.clients.web.extensions.JspContext"
5506 19 Nov 10 nicklas 52   import="net.sf.basedb.clients.web.extensions.edit.EditUtil"
7604 25 Feb 19 nicklas 53   import="net.sf.basedb.clients.web.extensions.edit.OnSaveAction"
5506 19 Nov 10 nicklas 54   import="net.sf.basedb.clients.web.extensions.edit.OnSaveRenderer"
6029 27 Mar 12 nicklas 55   import="net.sf.basedb.clients.web.extensions.list.ListColumnExportRenderer"
7604 25 Feb 19 nicklas 56   import="net.sf.basedb.clients.web.extensions.list.ListColumnAction"
6029 27 Mar 12 nicklas 57   import="net.sf.basedb.clients.web.extensions.list.ListColumnUtil"
1777 17 Jan 06 nicklas 58   import="java.util.Enumeration"
1777 17 Jan 06 nicklas 59   import="java.util.Set"
1777 17 Jan 06 nicklas 60   import="java.util.HashSet"
1777 17 Jan 06 nicklas 61   import="java.util.List"
1777 17 Jan 06 nicklas 62   import="java.util.ArrayList"
1777 17 Jan 06 nicklas 63   import="java.util.Collections"
702 01 Jun 05 nicklas 64 %>
702 01 Jun 05 nicklas 65 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
702 01 Jun 05 nicklas 66 <%!
5643 26 May 11 nicklas 67   private static final ItemContext defaultContext = Base.createDefaultContext("name", "name,itemSubtype,version,description");
1777 17 Jan 06 nicklas 68   private static final Item itemType = Item.SOFTWARE;
702 01 Jun 05 nicklas 69 %>
702 01 Jun 05 nicklas 70 <%
1777 17 Jan 06 nicklas 71 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
702 01 Jun 05 nicklas 72 final String ID = sc.getId();
1777 17 Jan 06 nicklas 73 final String cmd = request.getParameter("cmd");
1777 17 Jan 06 nicklas 74 final String root = request.getContextPath()+"/";
1777 17 Jan 06 nicklas 75 final String mode = request.getParameter("mode");
1777 17 Jan 06 nicklas 76 final String callback = request.getParameter("callback");
1777 17 Jan 06 nicklas 77 final String itemId = request.getParameter("item_id");
1777 17 Jan 06 nicklas 78 final String listPage = "list_software.jsp?ID="+ID
1777 17 Jan 06 nicklas 79   +(mode == null ? "" : "&mode="+mode)
1777 17 Jan 06 nicklas 80   +(callback == null ? "" : "&callback="+callback)
1777 17 Jan 06 nicklas 81   +(itemId == null ? "" : "&item_id="+itemId);
1777 17 Jan 06 nicklas 82 final String viewPage = "view_software.jsp?ID="+ID;
1777 17 Jan 06 nicklas 83 final String editPage = "edit_software.jsp?ID="+ID;
702 01 Jun 05 nicklas 84
1777 17 Jan 06 nicklas 85 String forward = null;
1777 17 Jan 06 nicklas 86 String redirect = null;
1777 17 Jan 06 nicklas 87 String message = null;
1777 17 Jan 06 nicklas 88 DbControl dc = null;
1777 17 Jan 06 nicklas 89
702 01 Jun 05 nicklas 90 try
702 01 Jun 05 nicklas 91 {
1777 17 Jan 06 nicklas 92   if (cmd == null || "List".equals(cmd))
1777 17 Jan 06 nicklas 93   {
1777 17 Jan 06 nicklas 94     // Display the list page without updatinging the current context
2811 26 Oct 06 nicklas 95     Base.getAndSetCurrentContext(sc, itemType, null, defaultContext, true);
1777 17 Jan 06 nicklas 96     redirect = listPage;
1777 17 Jan 06 nicklas 97   }
1777 17 Jan 06 nicklas 98   else if ("UpdateContext".equals(cmd))
1777 17 Jan 06 nicklas 99   {
1777 17 Jan 06 nicklas 100     // Display the list page after updating the current context from the request parameters
1777 17 Jan 06 nicklas 101     Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 102     redirect = listPage;
1777 17 Jan 06 nicklas 103   }
1777 17 Jan 06 nicklas 104   else if ("LoadContext".equals(cmd))
1777 17 Jan 06 nicklas 105   {
1777 17 Jan 06 nicklas 106     // Display the list page after loading a saved context
1777 17 Jan 06 nicklas 107     int contextId = Values.getInt(request.getParameter("context"));
1777 17 Jan 06 nicklas 108     Base.loadContext(sc, contextId, defaultContext);
1777 17 Jan 06 nicklas 109     redirect = listPage;
1777 17 Jan 06 nicklas 110   }
1777 17 Jan 06 nicklas 111
1777 17 Jan 06 nicklas 112   else if ("ViewItem".equals(cmd))
1777 17 Jan 06 nicklas 113   {
1777 17 Jan 06 nicklas 114     // Display the view page for a single item 
1777 17 Jan 06 nicklas 115     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 116     forward = viewPage;
1777 17 Jan 06 nicklas 117   }
1777 17 Jan 06 nicklas 118   else if ("EditItem".equals(cmd))
1777 17 Jan 06 nicklas 119   {
1777 17 Jan 06 nicklas 120     // Display the edit page for a single item (should be opened in a popup)
1777 17 Jan 06 nicklas 121     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 122     redirect = editPage;
1777 17 Jan 06 nicklas 123   }
1777 17 Jan 06 nicklas 124   else if ("NewItem".equals(cmd))
1777 17 Jan 06 nicklas 125   {
1777 17 Jan 06 nicklas 126     // Display the edit page for a new item (should be opened in a popup)
1777 17 Jan 06 nicklas 127     if (!sc.hasPermission(Permission.CREATE, itemType))
702 01 Jun 05 nicklas 128     {
1777 17 Jan 06 nicklas 129       throw new PermissionDeniedException(Permission.CREATE, itemType.toString());
702 01 Jun 05 nicklas 130     }
1777 17 Jan 06 nicklas 131     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 132     cc.setId(0);
2442 28 Jun 06 nicklas 133     forward = editPage;
1777 17 Jan 06 nicklas 134   }
1777 17 Jan 06 nicklas 135   else if ("UpdateItem".equals(cmd))
1777 17 Jan 06 nicklas 136   {
1777 17 Jan 06 nicklas 137     // Update the properties on an item (will close the popup)
1777 17 Jan 06 nicklas 138     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, defaultContext);
2598 28 Aug 06 nicklas 139     final int maxRecent = Base.getMaxRecent(sc);
7954 12 May 21 nicklas 140     dc = sc.newDbControl(":Edit "+itemType);
7605 26 Feb 19 nicklas 141     Software software = cc.getObject("item");
1777 17 Jan 06 nicklas 142     if (software == null)
702 01 Jun 05 nicklas 143     {
5630 13 May 11 nicklas 144       software = Software.getNew(dc);
1777 17 Jan 06 nicklas 145       message = "Software created";
1777 17 Jan 06 nicklas 146       dc.saveItem(software);
702 01 Jun 05 nicklas 147     }
1777 17 Jan 06 nicklas 148     else
702 01 Jun 05 nicklas 149     {
5060 19 Aug 09 nicklas 150       dc.reattachItem(software, false);
1777 17 Jan 06 nicklas 151       message = "Software updated";
702 01 Jun 05 nicklas 152     }
5506 19 Nov 10 nicklas 153     JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.item(Item.SOFTWARE), software);
7604 25 Feb 19 nicklas 154     ExtensionsInvoker<OnSaveAction> invoker = EditUtil.useOnSaveExtensions(jspContext);
5506 19 Nov 10 nicklas 155     try
702 01 Jun 05 nicklas 156     {
5506 19 Nov 10 nicklas 157       software.setName(Values.getStringOrNull(request.getParameter("name")));
5506 19 Nov 10 nicklas 158       software.setVersionString(Values.getStringOrNull(request.getParameter("version")));
5506 19 Nov 10 nicklas 159       software.setDescription(Values.getStringOrNull(request.getParameter("description")));
5643 26 May 11 nicklas 160
5643 26 May 11 nicklas 161       int subtypeId = Values.getInt(request.getParameter("subtype_id"), -1);
5643 26 May 11 nicklas 162       if (subtypeId >= 0) // < 0 = denied or unchanged
5506 19 Nov 10 nicklas 163       {
5643 26 May 11 nicklas 164         ItemSubtype subtype = subtypeId == 0 ? null : ItemSubtype.getById(dc, subtypeId);
5643 26 May 11 nicklas 165         software.setItemSubtype(subtype);
7703 11 Apr 19 nicklas 166         cc.setRecent(Item.ITEMSUBTYPE, subtype, maxRecent);
5506 19 Nov 10 nicklas 167       }
5506 19 Nov 10 nicklas 168       
6058 13 Jun 12 nicklas 169       // Project default
6058 13 Jun 12 nicklas 170       if (Values.getBoolean(request.getParameter("setAsProjectDefault")))
6058 13 Jun 12 nicklas 171       {
6058 13 Jun 12 nicklas 172         Project p = Project.getById(dc, sc.getActiveProjectId());
6058 13 Jun 12 nicklas 173         if (Values.getBoolean(request.getParameter("replaceExistingDefault")))
6058 13 Jun 12 nicklas 174         {
6058 13 Jun 12 nicklas 175           p.replaceDefaultItem(software);
6058 13 Jun 12 nicklas 176         }
6058 13 Jun 12 nicklas 177         else
6058 13 Jun 12 nicklas 178         {
6058 13 Jun 12 nicklas 179           p.addDefaultItem(software);
6058 13 Jun 12 nicklas 180         }
6058 13 Jun 12 nicklas 181       }
6058 13 Jun 12 nicklas 182       
6334 16 Oct 13 olle 183       Base.updateAnnotations(dc, software, software, request);
5506 19 Nov 10 nicklas 184       // OnSave extensions
5506 19 Nov 10 nicklas 185       invoker.render(OnSaveRenderer.ON_SAVE);
5506 19 Nov 10 nicklas 186       dc.commit();
5506 19 Nov 10 nicklas 187       invoker.render(OnSaveRenderer.ON_COMMIT);
702 01 Jun 05 nicklas 188     }
5506 19 Nov 10 nicklas 189     catch (Exception ex)
5506 19 Nov 10 nicklas 190     {
5506 19 Nov 10 nicklas 191       invoker.render(OnSaveRenderer.onRollback(ex));
5506 19 Nov 10 nicklas 192       throw ex;
5506 19 Nov 10 nicklas 193     }
5506 19 Nov 10 nicklas 194     finally
5506 19 Nov 10 nicklas 195     {
5506 19 Nov 10 nicklas 196       cc.removeObject("item");
5506 19 Nov 10 nicklas 197     }
1777 17 Jan 06 nicklas 198   }
1777 17 Jan 06 nicklas 199   else if ("DeleteItem".equals(cmd))
1777 17 Jan 06 nicklas 200   {
1777 17 Jan 06 nicklas 201     // Delete a single item and then return to the view page
7954 12 May 21 nicklas 202     dc = sc.newDbControl(":Delete "+itemType);
1777 17 Jan 06 nicklas 203     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 204     RemovableUtil.setRemoved(dc, itemType, Collections.singleton(cc.getId()), true);
1777 17 Jan 06 nicklas 205     dc.commit();
1777 17 Jan 06 nicklas 206     redirect = viewPage;
1777 17 Jan 06 nicklas 207   }
1777 17 Jan 06 nicklas 208   else if ("DeleteItems".equals(cmd))
1777 17 Jan 06 nicklas 209   {
1777 17 Jan 06 nicklas 210     // Delete all selected items on the list page
7954 12 May 21 nicklas 211     dc = sc.newDbControl(":Delete "+itemType);
1777 17 Jan 06 nicklas 212     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 213     int numTotal = cc.getSelected().size();
1777 17 Jan 06 nicklas 214     int numRemoved = RemovableUtil.setRemoved(dc, itemType, cc.getSelected(), true);
1777 17 Jan 06 nicklas 215     dc.commit();
1777 17 Jan 06 nicklas 216     if (numTotal != numRemoved)
702 01 Jun 05 nicklas 217     {
1777 17 Jan 06 nicklas 218       message = (numRemoved == 0 ? "No" : "Only "+numRemoved+" of "+numTotal) + " items could be deleted, because you have no DELETE permission";
702 01 Jun 05 nicklas 219     }
6334 16 Oct 13 olle 220     redirect = listPage+(message != null ? "&popmessage="+HTML.urlEncode(message) : "");
1777 17 Jan 06 nicklas 221   }
1777 17 Jan 06 nicklas 222   else if ("RestoreItem".equals(cmd))
1777 17 Jan 06 nicklas 223   {
1777 17 Jan 06 nicklas 224     // Restore a single item and then return to the view page
7954 12 May 21 nicklas 225     dc = sc.newDbControl(":Restore "+itemType);
1777 17 Jan 06 nicklas 226     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 227     RemovableUtil.setRemoved(dc, itemType, Collections.singleton(cc.getId()), false);
1777 17 Jan 06 nicklas 228     dc.commit();
1777 17 Jan 06 nicklas 229     redirect = viewPage;
1777 17 Jan 06 nicklas 230   }
1777 17 Jan 06 nicklas 231   else if ("RestoreItems".equals(cmd))
1777 17 Jan 06 nicklas 232   {
1777 17 Jan 06 nicklas 233     // Restore all selected items on the list page
7954 12 May 21 nicklas 234     dc = sc.newDbControl(":Restore "+itemType);
1777 17 Jan 06 nicklas 235     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 236     int numTotal = cc.getSelected().size();
1777 17 Jan 06 nicklas 237     int numRemoved = RemovableUtil.setRemoved(dc, itemType, cc.getSelected(), false);
1777 17 Jan 06 nicklas 238     dc.commit();
1777 17 Jan 06 nicklas 239     if (numTotal != numRemoved)
702 01 Jun 05 nicklas 240     {
2528 15 Aug 06 martin 241       message = (numRemoved == 0 ? "No" : "Only "+numRemoved+" of "+numTotal) + " items could be restored, because you have no WRITE permission";
702 01 Jun 05 nicklas 242     }
6334 16 Oct 13 olle 243     redirect = listPage+(message != null ? "&popmessage="+HTML.urlEncode(message) : "");
1777 17 Jan 06 nicklas 244   }
1777 17 Jan 06 nicklas 245   else if ("ShareItem".equals(cmd))
1777 17 Jan 06 nicklas 246   {
1777 17 Jan 06 nicklas 247     // Display a popup window for sharing a single item
7954 12 May 21 nicklas 248     dc = sc.newDbControl(":Share "+itemType);
1777 17 Jan 06 nicklas 249     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 250     MultiPermissions permissions = ShareableUtil.getMultiPermissions(dc, itemType, Collections.singleton(cc.getId()));
1777 17 Jan 06 nicklas 251     dc.close();
1777 17 Jan 06 nicklas 252     cc.setObject("MultiPermissions", permissions);
1777 17 Jan 06 nicklas 253     redirect = "../../common/share/share.jsp?ID="+ID+"&item_type="+itemType.name();
1777 17 Jan 06 nicklas 254   }
1777 17 Jan 06 nicklas 255   else if ("ShareItems".equals(cmd))
1777 17 Jan 06 nicklas 256   {
1777 17 Jan 06 nicklas 257     // Display a popup window for sharing all selected items on the list page
7954 12 May 21 nicklas 258     dc = sc.newDbControl(":Share "+itemType);
1777 17 Jan 06 nicklas 259     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 260     MultiPermissions permissions = ShareableUtil.getMultiPermissions(dc, itemType, cc.getSelected());
1777 17 Jan 06 nicklas 261     dc.close();
1777 17 Jan 06 nicklas 262     cc.setObject("MultiPermissions", permissions);
1777 17 Jan 06 nicklas 263     redirect = "../../common/share/share.jsp?ID="+ID+"&item_type="+itemType.name();
1777 17 Jan 06 nicklas 264   }
4578 13 Oct 08 martin 265   else if ("SetOwnerOfItem".equals(cmd))
2921 15 Nov 06 nicklas 266   {
4578 13 Oct 08 martin 267     // Change owner of items selected on a list page
7954 12 May 21 nicklas 268     dc = sc.newDbControl(":Set owner of "+itemType);
2921 15 Nov 06 nicklas 269     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
4587 15 Oct 08 martin 270     OwnedItem item = (OwnedItem)itemType.getById(dc, cc.getId());
4587 15 Oct 08 martin 271     cc.setObject("OwnedItems", Collections.singleton(item));
4578 13 Oct 08 martin 272     redirect = "../../common/ownership/ownership.jsp?ID="+ID+"&item_type="+itemType.name();
2921 15 Nov 06 nicklas 273   }
4578 13 Oct 08 martin 274   else if ("SetOwnerOfItems".equals(cmd))
2921 15 Nov 06 nicklas 275   {
4578 13 Oct 08 martin 276     // Change owner of items selected on a list page
7954 12 May 21 nicklas 277     dc = sc.newDbControl(":Set owner of "+itemType);
2921 15 Nov 06 nicklas 278     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
4587 15 Oct 08 martin 279     Set<OwnedItem> items = new HashSet<OwnedItem>();
4587 15 Oct 08 martin 280     for (Integer id : cc.getSelected())
4587 15 Oct 08 martin 281     {
4587 15 Oct 08 martin 282       if (id != null) items.add((OwnedItem)itemType.getById(dc, id));
4587 15 Oct 08 martin 283     }
4587 15 Oct 08 martin 284     dc.close();
4587 15 Oct 08 martin 285     cc.setObject("OwnedItems", items);
4578 13 Oct 08 martin 286     redirect = "../../common/ownership/ownership.jsp?ID="+ID+"&item_type="+itemType.name();
2921 15 Nov 06 nicklas 287   }
1777 17 Jan 06 nicklas 288   else if ("ExportItems".equals(cmd))
1777 17 Jan 06 nicklas 289   {
1777 17 Jan 06 nicklas 290     // Run an export plugin in a list context
1777 17 Jan 06 nicklas 291     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 292     final ItemQuery<Software> query = Software.getQuery();
7954 12 May 21 nicklas 293     dc = sc.newDbControl(":Export "+itemType);
7914 23 Feb 21 nicklas 294     JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.list(itemType), null);
7914 23 Feb 21 nicklas 295     cc.configureQuery(dc, query, jspContext, true);
6030 28 Mar 12 nicklas 296     cc.setQuery(query);
7604 25 Feb 19 nicklas 297     ExtensionsInvoker<ListColumnAction<Software,?>> listInvoker = ListColumnUtil.useExtensions(jspContext);
7604 25 Feb 19 nicklas 298     listInvoker.render(new ListColumnExportRenderer<Software>(cc));
5590 16 Mar 11 nicklas 299     dc.close();
7200 17 Oct 16 nicklas 300     redirect = "../../common/export/index.jsp?ID="+ID+"&cmd=SelectPlugin&item_type="+itemType.name()+"&context_type=LIST&title=Export+software";
1777 17 Jan 06 nicklas 301   }
1777 17 Jan 06 nicklas 302   else if ("ExportItem".equals(cmd))
1777 17 Jan 06 nicklas 303   {
1777 17 Jan 06 nicklas 304     // Run an export plugin in single-item context
1777 17 Jan 06 nicklas 305     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
7200 17 Oct 16 nicklas 306     redirect = "../../common/export/index.jsp?ID="+ID+"&cmd=SelectPlugin&item_type="+itemType.name()+"&context_type=ITEM&title=Export+software";
1777 17 Jan 06 nicklas 307   }
1777 17 Jan 06 nicklas 308   else if ("ImportItems".equals(cmd))
1777 17 Jan 06 nicklas 309   {
1777 17 Jan 06 nicklas 310     // Run an import plugin in a list context
1777 17 Jan 06 nicklas 311     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 312     final ItemQuery<Software> query = Software.getQuery();
7954 12 May 21 nicklas 313     dc = sc.newDbControl(":Import "+itemType);
7914 23 Feb 21 nicklas 314     JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.list(itemType), null);
7914 23 Feb 21 nicklas 315     cc.configureQuery(dc, query, jspContext, true);
5590 16 Mar 11 nicklas 316     dc.close();
1777 17 Jan 06 nicklas 317     cc.setQuery(query);
7200 17 Oct 16 nicklas 318     redirect = "../../common/import/index.jsp?ID="+ID+"&cmd=SelectPlugin&item_type="+itemType.name()+"&context_type=LIST&title=Import+software";
1777 17 Jan 06 nicklas 319   }
1777 17 Jan 06 nicklas 320   else if ("ImportItem".equals(cmd))
1777 17 Jan 06 nicklas 321   {
1777 17 Jan 06 nicklas 322     // Run an import plugin in single-item context
1777 17 Jan 06 nicklas 323     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
7200 17 Oct 16 nicklas 324     redirect = "../../common/import/index.jsp?ID="+ID+"&cmd=SelectPlugin&item_type="+itemType.name()+"&context_type=ITEM&title=Import+software";
1777 17 Jan 06 nicklas 325   }
1777 17 Jan 06 nicklas 326   else if ("RunListPlugin".equals(cmd))
1777 17 Jan 06 nicklas 327   {
1777 17 Jan 06 nicklas 328     // Run another plugin in a list context
1777 17 Jan 06 nicklas 329     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1777 17 Jan 06 nicklas 330     final ItemQuery<Software> query = Software.getQuery();
7954 12 May 21 nicklas 331     dc = sc.newDbControl(":Run plugin "+itemType);
7914 23 Feb 21 nicklas 332     JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.list(itemType), null);
7914 23 Feb 21 nicklas 333     cc.configureQuery(dc, query, jspContext, true);
5590 16 Mar 11 nicklas 334     dc.close();
1777 17 Jan 06 nicklas 335     cc.setQuery(query);
1789 18 Jan 06 nicklas 336     redirect = "../../common/plugin/index.jsp?ID="+ID+"&cmd=SelectPlugin&item_type="+itemType.name()+"&context_type=LIST&main_type=OTHER&title=Run+plugin";
1777 17 Jan 06 nicklas 337   }
1777 17 Jan 06 nicklas 338   else if ("RunPlugin".equals(cmd))
1777 17 Jan 06 nicklas 339   {
1777 17 Jan 06 nicklas 340     // Run another plugin in single-item context
1777 17 Jan 06 nicklas 341     ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, pageContext, defaultContext);
1789 18 Jan 06 nicklas 342     redirect = "../../common/plugin/index.jsp?ID="+ID+"&cmd=SelectPlugin&item_type="+itemType.name()+"&context_type=ITEM&main_type=OTHER&title=Run+plugin";
1777 17 Jan 06 nicklas 343   }
1777 17 Jan 06 nicklas 344   else
1777 17 Jan 06 nicklas 345   {
1777 17 Jan 06 nicklas 346     throw new WebException("popup", "Invalid command", "The command {1} is not recognised as a valid command.", cmd);
1777 17 Jan 06 nicklas 347   }
702 01 Jun 05 nicklas 348 }
702 01 Jun 05 nicklas 349 finally
702 01 Jun 05 nicklas 350 {
702 01 Jun 05 nicklas 351   if (dc != null) dc.close();
702 01 Jun 05 nicklas 352 }
1777 17 Jan 06 nicklas 353
1777 17 Jan 06 nicklas 354 if (forward != null)
1777 17 Jan 06 nicklas 355 {
6192 31 Oct 12 nicklas 356   sc.setSessionSetting("alert-message", message);
1777 17 Jan 06 nicklas 357   pageContext.forward(forward);
1777 17 Jan 06 nicklas 358 }
1777 17 Jan 06 nicklas 359 else if (redirect != null)
1777 17 Jan 06 nicklas 360 {
6192 31 Oct 12 nicklas 361   sc.setSessionSetting("alert-message", message);
1777 17 Jan 06 nicklas 362   response.sendRedirect(redirect);
1777 17 Jan 06 nicklas 363 }
1777 17 Jan 06 nicklas 364 else if (message == null)
1777 17 Jan 06 nicklas 365 {
1777 17 Jan 06 nicklas 366   response.sendRedirect(root + "common/close_popup.jsp?refresh_opener=1&wait=0");
1777 17 Jan 06 nicklas 367 }
1777 17 Jan 06 nicklas 368 else
1777 17 Jan 06 nicklas 369 {
1777 17 Jan 06 nicklas 370   response.sendRedirect(root + "common/close_popup.jsp?refresh_opener=1&message="+HTML.urlEncode(message));
1777 17 Jan 06 nicklas 371 }
1777 17 Jan 06 nicklas 372 %>
1777 17 Jan 06 nicklas 373