www/admin/roles/index.jsp

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