www/common/anytoany/edit_anytoany.jsp

Code
Comments
Other
Rev Date Author Line
2396 19 Jun 06 nicklas 1 <%-- $Id$
2396 19 Jun 06 nicklas 2   ------------------------------------------------------------------
3675 16 Aug 07 jari 3   Copyright (C) 2006 Nicklas Nordborg, Martin Svensson
2396 19 Jun 06 nicklas 4
2396 19 Jun 06 nicklas 5   This file is part of BASE - BioArray Software Environment.
2396 19 Jun 06 nicklas 6   Available at http://base.thep.lu.se/
2396 19 Jun 06 nicklas 7
2396 19 Jun 06 nicklas 8   BASE is free software; you can redistribute it and/or
2396 19 Jun 06 nicklas 9   modify it under the terms of the GNU General Public License
4476 05 Sep 08 jari 10   as published by the Free Software Foundation; either version 3
2396 19 Jun 06 nicklas 11   of the License, or (at your option) any later version.
2396 19 Jun 06 nicklas 12
2396 19 Jun 06 nicklas 13   BASE is distributed in the hope that it will be useful,
2396 19 Jun 06 nicklas 14   but WITHOUT ANY WARRANTY; without even the implied warranty of
2396 19 Jun 06 nicklas 15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2396 19 Jun 06 nicklas 16   GNU General Public License for more details.
2396 19 Jun 06 nicklas 17
2396 19 Jun 06 nicklas 18   You should have received a copy of the GNU General Public License
4510 11 Sep 08 jari 19   along with BASE. If not, see <http://www.gnu.org/licenses/>.
2396 19 Jun 06 nicklas 20   ------------------------------------------------------------------
2396 19 Jun 06 nicklas 21
2396 19 Jun 06 nicklas 22
2396 19 Jun 06 nicklas 23   @author Nicklas
2396 19 Jun 06 nicklas 24   @version 2.0
2396 19 Jun 06 nicklas 25 --%>
5426 24 Sep 10 nicklas 26 <%@ page pageEncoding="UTF-8" session="false"
2396 19 Jun 06 nicklas 27   import="net.sf.basedb.core.SessionControl"
2396 19 Jun 06 nicklas 28   import="net.sf.basedb.core.DbControl"
2396 19 Jun 06 nicklas 29   import="net.sf.basedb.core.Item"
2396 19 Jun 06 nicklas 30   import="net.sf.basedb.core.ItemContext"
2396 19 Jun 06 nicklas 31   import="net.sf.basedb.core.Permission"
2396 19 Jun 06 nicklas 32   import="net.sf.basedb.core.AnyToAny"
2396 19 Jun 06 nicklas 33   import="net.sf.basedb.core.BasicItem"
2396 19 Jun 06 nicklas 34   import="net.sf.basedb.core.File"
2396 19 Jun 06 nicklas 35   import="net.sf.basedb.core.Nameable"
6282 27 May 13 nicklas 36   import="net.sf.basedb.core.ItemSubtype"
6282 27 May 13 nicklas 37   import="net.sf.basedb.core.Subtypable"
2396 19 Jun 06 nicklas 38   import="net.sf.basedb.core.PermissionDeniedException"
3725 12 Sep 07 jari 39   import="net.sf.basedb.core.ItemNotFoundException"
2396 19 Jun 06 nicklas 40   import="net.sf.basedb.clients.web.Base"
2396 19 Jun 06 nicklas 41   import="net.sf.basedb.clients.web.util.HTML"
2753 20 Oct 06 nicklas 42   import="net.sf.basedb.util.Values"
6285 30 May 13 nicklas 43   import="java.util.List"
6285 30 May 13 nicklas 44   import="java.util.Arrays"
2396 19 Jun 06 nicklas 45 %>
2396 19 Jun 06 nicklas 46 <%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
2396 19 Jun 06 nicklas 47 <%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
2396 19 Jun 06 nicklas 48 <%!
3725 12 Sep 07 jari 49 private String getName(BasicItem item, boolean readItem, boolean missingItem, Item itemType, int id)
2396 19 Jun 06 nicklas 50 {
2396 19 Jun 06 nicklas 51   String name = "";
2396 19 Jun 06 nicklas 52   if (item instanceof File)
2396 19 Jun 06 nicklas 53   {
2396 19 Jun 06 nicklas 54     File toFile = (File)item;
2396 19 Jun 06 nicklas 55     name = HTML.encodeTags(toFile.getPath().toString());
2396 19 Jun 06 nicklas 56   }
2396 19 Jun 06 nicklas 57   else if (item instanceof Nameable)
2396 19 Jun 06 nicklas 58   {
2396 19 Jun 06 nicklas 59     Nameable nameable = (Nameable)item;
2396 19 Jun 06 nicklas 60     name = HTML.encodeTags(nameable.getName());
2396 19 Jun 06 nicklas 61   }
2396 19 Jun 06 nicklas 62   else if (!readItem)
2396 19 Jun 06 nicklas 63   {
2396 19 Jun 06 nicklas 64     name = "<i>- denied -</i>";
2396 19 Jun 06 nicklas 65   }
3725 12 Sep 07 jari 66   else if (missingItem)
3725 12 Sep 07 jari 67   {
3725 12 Sep 07 jari 68     name = "<i>- missing -</i> (" + itemType.toString() + "; id=" + id + ")";
3725 12 Sep 07 jari 69   }
2396 19 Jun 06 nicklas 70   else if (item == null)
2396 19 Jun 06 nicklas 71   {
2396 19 Jun 06 nicklas 72     name = "<i>- none -</i>";
2396 19 Jun 06 nicklas 73   }
2396 19 Jun 06 nicklas 74   else
2396 19 Jun 06 nicklas 75   {
2396 19 Jun 06 nicklas 76     name = HTML.encodeTags(item.toString());
2396 19 Jun 06 nicklas 77   }
2396 19 Jun 06 nicklas 78   if (item != null)
2396 19 Jun 06 nicklas 79   {
6282 27 May 13 nicklas 80     String subtype = item.getType().toString();
6282 27 May 13 nicklas 81     if (item instanceof Subtypable)
6282 27 May 13 nicklas 82     {
6282 27 May 13 nicklas 83       try
6282 27 May 13 nicklas 84       {
6282 27 May 13 nicklas 85         ItemSubtype st = ((ItemSubtype)item).getItemSubtype();
6282 27 May 13 nicklas 86         if (st != null) subtype = st.getName();
6282 27 May 13 nicklas 87       }
6282 27 May 13 nicklas 88       catch (RuntimeException ex)
6282 27 May 13 nicklas 89       {}
6282 27 May 13 nicklas 90     }
6282 27 May 13 nicklas 91     name += " <span class=\"itemsubtype\">(" + item.getType() + ")</span>";
2396 19 Jun 06 nicklas 92   }
2396 19 Jun 06 nicklas 93   return name;
2396 19 Jun 06 nicklas 94 }
2396 19 Jun 06 nicklas 95
2396 19 Jun 06 nicklas 96 %>
2396 19 Jun 06 nicklas 97 <%
2396 19 Jun 06 nicklas 98 final Item itemType = Item.ANYTOANY;
2396 19 Jun 06 nicklas 99 final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
2396 19 Jun 06 nicklas 100 final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
2396 19 Jun 06 nicklas 101 final int itemId = cc.getId();
2396 19 Jun 06 nicklas 102 final String ID = sc.getId();
2396 19 Jun 06 nicklas 103 final float scale = Base.getScale(sc);
7954 12 May 21 nicklas 104 final DbControl dc = sc.newDbControl(":Edit "+itemType);
2396 19 Jun 06 nicklas 105 try
2396 19 Jun 06 nicklas 106 {
2396 19 Jun 06 nicklas 107   String title = null;
2396 19 Jun 06 nicklas 108   AnyToAny anyToAny = null;
2396 19 Jun 06 nicklas 109
6285 30 May 13 nicklas 110   Item fromType = null;
6285 30 May 13 nicklas 111   int fromId = 0;
2396 19 Jun 06 nicklas 112   String fromName = "";
2396 19 Jun 06 nicklas 113   String toName = "";
2396 19 Jun 06 nicklas 114   
2396 19 Jun 06 nicklas 115   if (itemId == 0)
2396 19 Jun 06 nicklas 116   {
6285 30 May 13 nicklas 117     cc.removeObject("item");
6285 30 May 13 nicklas 118     fromType = Item.valueOf(request.getParameter("from_type"));
6285 30 May 13 nicklas 119     fromId = Values.getInt(request.getParameter("from_id"));
6285 30 May 13 nicklas 120     BasicItem from = fromType.getById(dc, fromId);
6414 05 Feb 14 nicklas 121     from.checkPermission(Permission.WRITE);
6285 30 May 13 nicklas 122     fromName = getName(from, true, false, fromType, fromId);
6285 30 May 13 nicklas 123     toName = "<i>- none -</i>";
6285 30 May 13 nicklas 124     title = "New link";
2396 19 Jun 06 nicklas 125   }
2396 19 Jun 06 nicklas 126   else
2396 19 Jun 06 nicklas 127   {
2396 19 Jun 06 nicklas 128     anyToAny = AnyToAny.getById(dc, itemId);
2396 19 Jun 06 nicklas 129     cc.setObject("item", anyToAny);
2396 19 Jun 06 nicklas 130     title = "Edit any-to-any link -- " + HTML.encodeTags(anyToAny.getName());
6285 30 May 13 nicklas 131     fromType = anyToAny.getFromType();
6285 30 May 13 nicklas 132     fromId = anyToAny.getFromId();
2396 19 Jun 06 nicklas 133     
2396 19 Jun 06 nicklas 134     BasicItem to = null;
2396 19 Jun 06 nicklas 135     boolean readTo = true;
3725 12 Sep 07 jari 136     boolean missingTo = false;
2396 19 Jun 06 nicklas 137     
2396 19 Jun 06 nicklas 138     BasicItem from = null;
2396 19 Jun 06 nicklas 139     boolean readFrom = true;
3725 12 Sep 07 jari 140     boolean missingFrom = false;
2396 19 Jun 06 nicklas 141     
2396 19 Jun 06 nicklas 142     try
2396 19 Jun 06 nicklas 143     {
2396 19 Jun 06 nicklas 144       to = anyToAny.getTo();
2396 19 Jun 06 nicklas 145     }
2396 19 Jun 06 nicklas 146     catch (PermissionDeniedException ex)
2396 19 Jun 06 nicklas 147     {
2396 19 Jun 06 nicklas 148       readTo = false;
2396 19 Jun 06 nicklas 149     }
3725 12 Sep 07 jari 150     catch (ItemNotFoundException ex)
3725 12 Sep 07 jari 151     {
3725 12 Sep 07 jari 152       missingTo = true;
3725 12 Sep 07 jari 153     }
2396 19 Jun 06 nicklas 154     
2396 19 Jun 06 nicklas 155     try
2396 19 Jun 06 nicklas 156     {
2396 19 Jun 06 nicklas 157       from = anyToAny.getFrom();
2396 19 Jun 06 nicklas 158     }
2396 19 Jun 06 nicklas 159     catch (PermissionDeniedException ex)
2396 19 Jun 06 nicklas 160     {
2396 19 Jun 06 nicklas 161       readFrom = false;
2396 19 Jun 06 nicklas 162     }
3725 12 Sep 07 jari 163     catch (ItemNotFoundException ex)
3725 12 Sep 07 jari 164     {
3725 12 Sep 07 jari 165       missingFrom = true;
3725 12 Sep 07 jari 166     }
3725 12 Sep 07 jari 167   
3725 12 Sep 07 jari 168     toName = getName(to, readTo, missingTo, anyToAny.getToType(), anyToAny.getToId());
6285 30 May 13 nicklas 169     fromName = getName(from, readFrom, missingFrom, fromType, fromId);
2396 19 Jun 06 nicklas 170   }
2396 19 Jun 06 nicklas 171   %>
2396 19 Jun 06 nicklas 172   <base:page type="popup" title="<%=title%>">
6282 27 May 13 nicklas 173   <base:head scripts="tabcontrol-2.js,~edit.js" styles="tabcontrol.css" />
2396 19 Jun 06 nicklas 174   <base:body>
6282 27 May 13 nicklas 175     <h1><%=title%> <base:help tabcontrol="settings" /></h1>
6162 10 Oct 12 nicklas 176     <form action="index.jsp?ID=<%=ID%>" method="post" name="anytoany">
2396 19 Jun 06 nicklas 177     <input type="hidden" name="cmd" value="UpdateItem">
6285 30 May 13 nicklas 178     <input type="hidden" name="from_type" value="<%=fromType.name() %>">
6285 30 May 13 nicklas 179     <input type="hidden" name="from_id" value="<%=fromId %>">
6285 30 May 13 nicklas 180     <%
6285 30 May 13 nicklas 181     if (anyToAny != null)
6285 30 May 13 nicklas 182     {
6285 30 May 13 nicklas 183       %>
6285 30 May 13 nicklas 184       <input type="hidden" name="to_type" value="<%=anyToAny.getToType().name()%>">
6285 30 May 13 nicklas 185       <%
6285 30 May 13 nicklas 186     }
6285 30 May 13 nicklas 187     %>
6285 30 May 13 nicklas 188     <input type="hidden" id="to_id" name="to_id" value="<%=anyToAny == null ? 0 : -anyToAny.getToId()%>">
2396 19 Jun 06 nicklas 189
5923 11 Jan 12 nicklas 190     <t:tabcontrol id="settings"
5923 11 Jan 12 nicklas 191       subclass="content dialogtabcontrol"
2456 30 Jun 06 nicklas 192       position="bottom" remember="<%=anyToAny != null%>">
6282 27 May 13 nicklas 193     <t:tab id="info" title="Any-to-any link" helpid="anytoany.edit">
5923 11 Jan 12 nicklas 194       <table class="fullform input100 smaller">
2396 19 Jun 06 nicklas 195       <tr>
5923 11 Jan 12 nicklas 196         <th>From</th>
2396 19 Jun 06 nicklas 197         <td><%=fromName%></td>
5923 11 Jan 12 nicklas 198         <td></td>
2396 19 Jun 06 nicklas 199       </tr>
2396 19 Jun 06 nicklas 200       <tr>
5923 11 Jan 12 nicklas 201         <th>Name</th>
6285 30 May 13 nicklas 202         <td><input class="text required auto-init" type="text" name="name" data-auto-init="<%=anyToAny == null ? "focus-select" : "focus" %>"
6285 30 May 13 nicklas 203           value="<%=HTML.encodeTags(anyToAny == null ? Values.getString(cc.getPropertyValue("name"), "New link") : anyToAny.getName())%>" 
5923 11 Jan 12 nicklas 204           maxlength="<%=AnyToAny.MAX_NAME_LENGTH%>"></td>
5923 11 Jan 12 nicklas 205         <td></td>
2396 19 Jun 06 nicklas 206       </tr>
6285 30 May 13 nicklas 207       <%
6285 30 May 13 nicklas 208       if (anyToAny == null)
6285 30 May 13 nicklas 209       {
6285 30 May 13 nicklas 210         %>
6285 30 May 13 nicklas 211         <tr>
6285 30 May 13 nicklas 212           <th>Target type</th>
6285 30 May 13 nicklas 213           <td>
6285 30 May 13 nicklas 214             <select name="to_type" style="width: 20em;" class="required unchangeable">
6285 30 May 13 nicklas 215             <%
6285 30 May 13 nicklas 216             List<String> recentTypes = cc.getRecent("toTypes");
6285 30 May 13 nicklas 217             if (recentTypes.size() == 0)
6285 30 May 13 nicklas 218             {
6285 30 May 13 nicklas 219               recentTypes = Arrays.asList("FILE");
6285 30 May 13 nicklas 220             }
6285 30 May 13 nicklas 221             %>
6285 30 May 13 nicklas 222             <option value="0" disabled class="recentheader">- recently used -
6285 30 May 13 nicklas 223             <%
6285 30 May 13 nicklas 224             for (String r : recentTypes)
6285 30 May 13 nicklas 225             {
6285 30 May 13 nicklas 226               %>
6285 30 May 13 nicklas 227               <option value="<%=r%>"><%=r%>
6285 30 May 13 nicklas 228               <%
6285 30 May 13 nicklas 229             }
6285 30 May 13 nicklas 230             %>
6285 30 May 13 nicklas 231             <option value="0" disabled class="recentheader">- all -
6285 30 May 13 nicklas 232             </select>
6285 30 May 13 nicklas 233           </td>
6285 30 May 13 nicklas 234           <td></td>
6285 30 May 13 nicklas 235         </tr>
6285 30 May 13 nicklas 236         <%
6285 30 May 13 nicklas 237       }
6285 30 May 13 nicklas 238       %>
6282 27 May 13 nicklas 239       <tr>
6285 30 May 13 nicklas 240         <th>Target item</th>
6282 27 May 13 nicklas 241         <td >
6282 27 May 13 nicklas 242           <table style="width: 100%;">
6282 27 May 13 nicklas 243           <tr>
6282 27 May 13 nicklas 244           <td id="toName"><%=toName%></td>
6285 30 May 13 nicklas 245           <td style="width: 8em;"><base:button title="Select" id="btnSelect" /></td>
6282 27 May 13 nicklas 246           </tr>
6282 27 May 13 nicklas 247           </table>
6282 27 May 13 nicklas 248         </td>
6282 27 May 13 nicklas 249         <td></td>
6282 27 May 13 nicklas 250       </tr>
6282 27 May 13 nicklas 251       <tr>
6282 27 May 13 nicklas 252         <th><label for="blockRemoval">Block removal</label></th>
6285 30 May 13 nicklas 253         <td><input type="checkbox" id="blockRemoval" name="block_removal" value="1" <%=anyToAny != null && anyToAny.isUsingTo() ? "checked" : "" %>>
6282 27 May 13 nicklas 254           <i>(if checked, the selected item is blocked for deletion)</i>
6282 27 May 13 nicklas 255         </td>
6282 27 May 13 nicklas 256         <td></td>
6282 27 May 13 nicklas 257       </tr>
5923 11 Jan 12 nicklas 258       <tr class="dynamic">
5923 11 Jan 12 nicklas 259         <th>Description</th>
5923 11 Jan 12 nicklas 260         <td>
6217 14 Dec 12 nicklas 261           <textarea class="text" rows="6" name="description" id="description"
2396 19 Jun 06 nicklas 262             ><%=HTML.encodeTags(anyToAny == null ? cc.getPropertyValue("description") : anyToAny.getDescription())%></textarea>
2396 19 Jun 06 nicklas 263         </td>
5923 11 Jan 12 nicklas 264         <td style="width: 20px;">
6215 13 Dec 12 nicklas 265           <base:zoom textarea="description" title="Description" />
5923 11 Jan 12 nicklas 266         </td>
2396 19 Jun 06 nicklas 267       </tr>
2396 19 Jun 06 nicklas 268       </table>
2396 19 Jun 06 nicklas 269     </t:tab>
2396 19 Jun 06 nicklas 270     </t:tabcontrol>
5923 11 Jan 12 nicklas 271     </form>
5923 11 Jan 12 nicklas 272     
5923 11 Jan 12 nicklas 273     <div class="legend">
5946 03 Feb 12 nicklas 274       <base:icon image="required.png" />= required information
6285 30 May 13 nicklas 275       <%if (anyToAny == null) {%><br>
6285 30 May 13 nicklas 276         <base:icon image="unchangeable.png" />= can't be changed later
6285 30 May 13 nicklas 277       <%}%>
5923 11 Jan 12 nicklas 278     </div>
2396 19 Jun 06 nicklas 279
5923 11 Jan 12 nicklas 280     <base:buttongroup subclass="dialogbuttons">
6284 30 May 13 nicklas 281       <base:button id="btnSave" title="Save" disabled="<%=anyToAny != null && !anyToAny.hasPermission(Permission.WRITE) %>"/>
6282 27 May 13 nicklas 282       <base:button id="close" title="Cancel" />
5923 11 Jan 12 nicklas 283     </base:buttongroup>
2396 19 Jun 06 nicklas 284   </base:body>
2396 19 Jun 06 nicklas 285   </base:page>
2396 19 Jun 06 nicklas 286   <%
2396 19 Jun 06 nicklas 287 }
2396 19 Jun 06 nicklas 288 finally
2396 19 Jun 06 nicklas 289 {
2396 19 Jun 06 nicklas 290   if (dc != null) dc.close();
2396 19 Jun 06 nicklas 291 }
2396 19 Jun 06 nicklas 292 %>