source: trunk/www/admin/datafiletypes/edit_filetype.jsp @ 5908

Last change on this file since 5908 was 5908, checked in by Nicklas Nordborg, 10 years ago

References #1655: GUI improvements

  • File manager dialogs
  • File server edit dialog
  • Changed zoom.gif to png
  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 8.6 KB
Line 
1<%-- $Id:edit_filetype.jsp 3820 2007-10-12 10:03:18Z nicklas $
2  ------------------------------------------------------------------
3  Copyright (C) 2005 Nicklas Nordborg
4  Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg, Martin Svensson
5
6  This file is part of BASE - BioArray Software Environment.
7  Available at http://base.thep.lu.se/
8
9  BASE is free software; you can redistribute it and/or
10  modify it under the terms of the GNU General Public License
11  as published by the Free Software Foundation; either version 3
12  of the License, or (at your option) any later version.
13
14  BASE is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  GNU General Public License for more details.
18
19  You should have received a copy of the GNU General Public License
20  along with BASE. If not, see <http://www.gnu.org/licenses/>.
21  ------------------------------------------------------------------
22
23
24  @author Nicklas
25  @version 2.0
26--%>
27<%@ page pageEncoding="UTF-8" session="false"
28  import="net.sf.basedb.core.SessionControl"
29  import="net.sf.basedb.core.DbControl"
30  import="net.sf.basedb.core.Item"
31  import="net.sf.basedb.core.ItemContext"
32  import="net.sf.basedb.core.Permission"
33  import="net.sf.basedb.core.DataFileType"
34  import="net.sf.basedb.core.ItemSubtype"
35  import="net.sf.basedb.core.ItemResultList"
36  import="net.sf.basedb.core.ItemQuery"
37  import="net.sf.basedb.core.Metadata"
38  import="net.sf.basedb.core.PermissionDeniedException"
39  import="net.sf.basedb.core.query.Orders"
40  import="net.sf.basedb.core.query.Hql"
41  import="net.sf.basedb.clients.web.Base"
42  import="net.sf.basedb.clients.web.util.HTML"
43  import="net.sf.basedb.util.Values"
44  import="net.sf.basedb.core.plugin.GuiContext"
45  import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
46  import="net.sf.basedb.clients.web.extensions.JspContext"
47  import="net.sf.basedb.clients.web.extensions.edit.EditUtil"
48  import="net.sf.basedb.util.extensions.ExtensionsInvoker"
49  import="java.util.Set"
50%>
51<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
52<%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
53<%
54final Item itemType = Item.DATAFILETYPE;
55final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
56final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
57final int itemId = cc.getId();
58final String ID = sc.getId();
59final float scale = Base.getScale(sc);
60final DbControl dc = sc.newDbControl();
61try
62{
63  String title = null;
64  DataFileType fileType = null;
65  boolean readCurrentFileType = true;
66  int currentFileTypeId = 0;
67
68  if (itemId == 0)
69  {
70    title = "Create data file type";
71    cc.removeObject("item");
72    currentFileTypeId = Values.getInt(cc.getPropertyValue("genericType"), 0);
73    if (currentFileTypeId == 0)
74    {
75      currentFileTypeId = Values.getInt(cc.getRecent(Item.ITEMSUBTYPE.name(), 0), 0);
76    }
77  }
78  else
79  {
80    fileType = DataFileType.getById(dc, itemId);
81    fileType.checkPermission(Permission.WRITE);
82    cc.setObject("item", fileType);
83    title = "Edit data file type -- " + HTML.encodeTags(fileType.getName());
84    try
85    {
86      ItemSubtype ft = fileType.getGenericType();
87      if (ft != null) currentFileTypeId = ft.getId();
88    }
89    catch (PermissionDeniedException ex)
90    {
91      readCurrentFileType = false;
92    }
93  }
94  // Query to retrieve file types
95  final ItemQuery<ItemSubtype> fileTypeQuery = ItemSubtype.getQuery(Item.FILE);
96  fileTypeQuery.order(Orders.asc(Hql.property("name")));
97  fileTypeQuery.setCacheResult(true);
98
99  final String clazz = "class=\"text\"";
100  final String requiredClazz = "class=\"text required\"";
101  final String unchangeableClazz = "class=\"text required unchangeable\"";
102  JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, GuiContext.item(itemType), fileType);
103  ExtensionsInvoker invoker = EditUtil.useEditExtensions(jspContext);
104  %>
105  <base:page type="popup" title="<%=title%>">
106  <base:head scripts="tabcontrol.js" styles="tabcontrol.css">
107    <ext:scripts context="<%=jspContext%>" />
108    <ext:stylesheets context="<%=jspContext%>" />
109    <script language="JavaScript">
110    // Validate the "Data file type" tab
111    function validateDataFileType()
112    {
113      var frm = document.forms['fileType'];
114      if (Main.trimString(frm.name.value) == '')
115      {
116        alert("You must enter a name");
117        frm.name.focus();
118        return false;
119      }
120      else if (frm.externalId && Main.trimString(frm.externalId.value) == '')
121      {
122        alert("You must enter an external ID");
123        frm.externalId.focus();
124        return false;
125      }
126      return true;
127    }
128
129    // Submit the form
130    function saveSettings()
131    {
132      var frm = document.forms['fileType'];
133      if (TabControl.validateActiveTab('settings'))
134      {
135        frm.submit();
136      }
137    }
138   
139    function init()
140    {
141      <%
142      if (fileType == null)
143      {
144        %>
145        var frm = document.forms['fileType'];
146        frm.name.focus();
147        frm.name.select();
148        <%
149      }
150      %>
151    }
152    </script>
153  </base:head>
154  <base:body onload="init()">
155    <p>
156    <form action="index.jsp?ID=<%=ID%>" method="post" name="fileType" onsubmit="return false;">
157    <input type="hidden" name="cmd" value="UpdateItem">
158
159    <h3 class="docked"><%=title%> <base:help tabcontrol="settings" /></h3>
160    <t:tabcontrol id="settings" contentstyle="<%="height: "+(int)(scale*340)+"px;"%>" 
161      position="bottom"  remember="<%=fileType != null%>"
162      extensions="<%=invoker%>">
163    <t:tab id="info" title="Data file type" validate="validateDataFileType()" helpid="datafiletype.edit">
164      <table class="form" cellspacing=0>
165      <tr>
166        <td class="prompt">Name</td>
167        <td><input <%=requiredClazz%> type="text" name="name" 
168          value="<%=HTML.encodeTags(fileType == null ? Values.getString(cc.getPropertyValue("name"), "New data file type") : fileType.getName())%>" 
169          size="40" maxlength="<%=DataFileType.MAX_NAME_LENGTH%>"></td>
170      </tr>
171      <%
172      if (fileType == null)
173      {
174        // For new file types only
175        Set<Item> items = Metadata.getFileStoreEnabledItems();
176        int itemCode = Values.getInt(cc.getPropertyValue("itemType"), -1);
177        %>
178        <tr>
179          <td class="prompt">External ID</td>
180          <td><input <%=unchangeableClazz%> type="text" name="externalId" 
181            value="<%=HTML.encodeTags(cc.getPropertyValue("externalId"))%>" 
182            size="40" maxlength="<%=DataFileType.MAX_EXTERNAL_ID_LENGTH%>"></td>
183        </tr>
184        <tr>
185          <td class="prompt">Item type</td>
186          <td>
187            <select name="itemType" class="required unchangeable">
188            <%
189            for (Item item : items)
190            {
191              String selected = itemCode == item.getValue() ? "selected" : "";
192              %>
193              <option value="<%=item.name()%>" <%=selected%>><%=item.toString() %>
194              <%
195            }
196            %>
197            </select>
198          </td>
199        </tr>
200        <%
201      }
202      %>
203      <tr>
204        <td class="prompt">File extension</td>
205        <td><input <%=clazz%> type="text" name="extension" 
206          value="<%=HTML.encodeTags(fileType == null ? Values.getString(cc.getPropertyValue("extension")) : fileType.getExtension())%>" 
207          size="40" maxlength="<%=DataFileType.MAX_EXTENSION_LENGTH%>"></td>
208      </tr>
209      <tr >
210        <td class="prompt">Generic file type</td>
211        <td colspan="2">
212          <select name="generictype_id" <%=!readCurrentFileType ? "disabled readonly class=\"disabled\"" : ""%>>
213          <%
214          if (!readCurrentFileType)
215          {
216            %>
217            <option value="-1">- denied -
218            <%
219          }
220          else
221          {
222            %>
223            <option value="0">- none -
224            <%
225            ItemResultList<ItemSubtype> fileTypes = fileTypeQuery.list(dc);
226            for (ItemSubtype ft : fileTypes)
227            {
228              int id = ft.getId();
229              %>
230              <option 
231                value="<%=fileType != null && id == currentFileTypeId ? -id : id%>" 
232                <%=id == currentFileTypeId ? "selected" : ""%>
233                ><%=HTML.encodeTags(ft.getName())%>
234              <%
235            }
236          }
237          %>
238          </select>
239        </td>
240      </tr>
241      <tr >
242        <td class="prompt">Description</td>
243        <td nowrap>
244          <textarea <%=clazz%> rows="4" cols="40" name="description" 
245            ><%=HTML.encodeTags(fileType == null ? cc.getPropertyValue("description") : fileType.getDescription())%></textarea>
246          <a href="javascript:Main.zoom('Description', 'fileType', 'description')"
247            title="Edit in larger window"><base:icon image="zoom.png" /></a>
248        </td>
249      </tr>
250      </table>
251      <div align=right>
252        &nbsp;<i><base:icon image="required.gif" /> = required information</i>
253        <%if (fileType == null) {%><br>
254        <i><base:icon image="unchangeable.gif" /> = can't be changed later</i>
255        <%}%>
256      </div>
257    </t:tab>
258    </t:tabcontrol>
259
260    <table align="center">
261    <tr>
262      <td width="50%"><base:button onclick="saveSettings()" title="Save" /></td>
263      <td width="50%"><base:button onclick="window.close()" title="Cancel" /></td>
264    </tr>
265    </table>
266    </form>
267  </base:body>
268  </base:page>
269  <%
270}
271finally
272{
273  if (dc != null) dc.close();
274}
275%>
Note: See TracBrowser for help on using the repository browser.