source: trunk/www/biomaterials/extracts/view_extract.jsp @ 5667

Last change on this file since 5667 was 5667, checked in by Nicklas Nordborg, 11 years ago

References #1153: Handling short read transcript sequence data

Fixes the sample and extract batch importers so that they can import both types of parent items.

Display the 'tag' for an extract in listings and on the view page.

Added 'none' option to parent type filter.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 23.0 KB
Line 
1<%-- $Id: view_extract.jsp 5667 2011-06-23 12:06:39Z nicklas $
2  ------------------------------------------------------------------
3  Copyright (C) 2006 Johan Enell, Jari Häkkinen, Nicklas Nordborg, Martin Svensson
4  Copyright (C) 2007 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  @author Nicklas
24  @version 2.0
25--%>
26<%@ page pageEncoding="UTF-8" session="false"
27  import="net.sf.basedb.core.SessionControl"
28  import="net.sf.basedb.core.DbControl"
29  import="net.sf.basedb.core.SystemItems"
30  import="net.sf.basedb.core.Group"
31  import="net.sf.basedb.core.Item"
32  import="net.sf.basedb.core.CommonItem"
33  import="net.sf.basedb.core.ItemContext"
34  import="net.sf.basedb.core.ItemProxy"
35  import="net.sf.basedb.core.Permission"
36  import="net.sf.basedb.core.Extract"
37  import="net.sf.basedb.core.PhysicalBioAssay"
38  import="net.sf.basedb.core.Sample"
39  import="net.sf.basedb.core.BioMaterial"
40  import="net.sf.basedb.core.BioMaterialEvent"
41  import="net.sf.basedb.core.BioMaterialEventSource"
42  import="net.sf.basedb.core.BioWell"
43  import="net.sf.basedb.core.MultiPermissions"
44  import="net.sf.basedb.core.Protocol"
45  import="net.sf.basedb.core.Project"
46  import="net.sf.basedb.core.User"
47  import="net.sf.basedb.core.ItemQuery"
48  import="net.sf.basedb.core.ItemResultList"
49  import="net.sf.basedb.core.SpecialQuery"
50  import="net.sf.basedb.core.Include"
51  import="net.sf.basedb.core.query.ResultList"
52  import="net.sf.basedb.core.query.Orders"
53  import="net.sf.basedb.core.query.Hql"
54  import="net.sf.basedb.core.query.Restrictions"
55  import="net.sf.basedb.core.query.Expressions"
56  import="net.sf.basedb.core.PermissionDeniedException"
57  import="net.sf.basedb.core.PluginDefinition"
58  import="net.sf.basedb.core.plugin.GuiContext"
59  import="net.sf.basedb.core.plugin.Plugin"
60  import="net.sf.basedb.core.Type"
61  import="net.sf.basedb.clients.web.Base"
62  import="net.sf.basedb.clients.web.ChangeHistoryUtil"
63  import="net.sf.basedb.clients.web.PermissionUtil"
64  import="net.sf.basedb.clients.web.util.HTML"
65  import="net.sf.basedb.util.Values"
66  import="net.sf.basedb.util.formatter.Formatter"
67  import="net.sf.basedb.util.formatter.WellCoordinateFormatter"
68  import="net.sf.basedb.clients.web.formatter.FormatterFactory"
69  import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
70  import="net.sf.basedb.clients.web.extensions.JspContext"
71  import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
72  import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
73  import="net.sf.basedb.util.extensions.ExtensionsInvoker"
74  import="java.util.ArrayList"
75  import="java.util.Collections"
76  import="java.util.Date"
77  import="java.util.Map"
78  import="java.util.Set"
79  import="java.util.List"
80%>
81<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
82<%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
83<%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
84<%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
85<%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
86<%!
87  private static final Item itemType = Item.EXTRACT;
88  private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.ITEM);
89%>
90<%
91final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
92final String ID = sc.getId();
93final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
94final int itemId = cc.getId();
95final String tab = Values.getString(request.getParameter("tab"), "properties");
96final float scale = Base.getScale(sc);
97final DbControl dc = sc.newDbControl();
98try
99{
100  Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
101  Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
102 
103  WellCoordinateFormatter rowFormatter = new WellCoordinateFormatter(true);
104  WellCoordinateFormatter columnFormatter = new WellCoordinateFormatter(false);
105
106  String title = null;
107  Extract extract = Extract.getById(dc, itemId);
108  BioMaterialEvent creationEvent = extract.getCreationEvent();
109 
110  final boolean writePermission = extract.hasPermission(Permission.WRITE);
111  final boolean deletePermission = extract.hasPermission(Permission.DELETE);
112  final boolean sharePermission = extract.hasPermission(Permission.SET_PERMISSION);
113  final boolean usePermission = extract.hasPermission(Permission.USE);
114  final boolean setOwnerPermission = extract.hasPermission(Permission.SET_OWNER);
115  final boolean isRemoved = extract.isRemoved();
116  final boolean isUsed = isRemoved && extract.isUsed();
117  final boolean deletePermanentlyPermission = deletePermission && !isUsed;
118  final boolean isOwner = extract.isOwner(); 
119  JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, extract);
120  ExtensionsInvoker invoker = ToolbarUtil.useExtensions(jspContext);
121  %>
122  <base:page title="<%=title%>">
123  <base:head scripts="table.js,tabcontrol.js" styles="table.css,toolbar.css,headertabcontrol.css,path.css">
124    <ext:scripts context="<%=jspContext%>" />
125    <ext:stylesheets context="<%=jspContext%>" />
126    <script language="JavaScript">
127    function editItem()
128    {
129      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', <%=itemId%>, true);
130    }
131    function newExtract()
132    {
133      Main.viewOrEditItem('<%=ID%>', 'EXTRACT', 0, true, '&extract_id=<%=itemId%>');
134    }
135    function shareItem()
136    {
137      Main.openPopup('index.jsp?ID=<%=ID%>&cmd=ShareItem&item_id=<%=itemId%>', 'ShareExtract', 600, 400);
138    }
139    function deleteItem()
140    {
141      location.replace('index.jsp?ID=<%=ID%>&cmd=DeleteItem&item_id=<%=itemId%>');
142    }
143    function restoreItem()
144    {
145      location.replace('index.jsp?ID=<%=ID%>&cmd=RestoreItem&item_id=<%=itemId%>');
146    }
147    function deleteItemPermanently()
148    {
149      Main.deleteItemPermanently('<%=ID%>', true, '<%=itemType.name()%>', <%=itemId%>, '&callback=itemDeleted');
150    }
151    function itemDeleted()
152    {
153      Main.listItems('<%=ID%>', '<%=itemType.name()%>');
154    }
155    function showUsingItems()
156    {
157      Main.showUsingItems('<%=ID%>', '<%=itemType.name()%>', <%=itemId%>);
158    }
159    function setOwner()
160    {
161      Main.openPopup('index.jsp?ID=<%=ID%>&cmd=SetOwnerOfItem&item_id=<%=itemId%>', 'SetOwnerOfItem', 450, 150);
162    }
163    function runPlugin(cmd)
164    {
165      Main.openPopup('index.jsp?ID=<%=ID%>&cmd='+cmd+'&item_id=<%=itemId%>', 'RunPlugin'+cmd, 740, 540);
166    }
167    function viewEvents()
168    {
169      location.href = '../events/index.jsp?ID=<%=ID%>&cmd=List&biomaterial_id=<%=itemId%>&biomaterial_type=<%=itemType.name()%>';
170    }
171    function switchTab(tabControlId, tabId)
172    {
173      if (TabControl.isActive(tabControlId, tabId)) return;
174      if ((tabId == 'overview' || tabId == 'history') && tabId != '<%=tab%>')
175      {
176        location.href = 'index.jsp?ID=<%=ID%>&cmd=ViewItem&item_id=<%=itemId%>&tab='+tabId;
177      }
178      else if (tabId == 'events')
179      {
180        viewEvents();
181      }
182      else
183      {
184        TabControl.setActiveTab(tabControlId, tabId);
185      }
186    }
187    function newPhysicalBioAssay()
188    {
189      Main.viewOrEditItem('<%=ID%>', 'PHYSICALBIOASSAY', 0, true, '&extract_id='+<%=itemId%>);
190    }
191    </script>
192  </base:head>
193  <base:body>
194    <p>
195    <p:path>
196      <p:pathelement title="Extracts" href="<%="index.jsp?ID="+ID%>" />
197      <p:pathelement title="<%=HTML.encodeTags(extract.getName())%>" />
198    </p:path>
199   
200    <t:tabcontrol id="main" active="<%=tab%>" switch="switchTab" remember="false">
201    <t:tab id="properties" title="Properties">
202
203    <tbl:toolbar
204      >
205      <tbl:button 
206        disabled="<%=writePermission ? false : true%>" 
207        image="<%=writePermission ? "edit.gif" : "edit_disabled.gif"%>" 
208        onclick="editItem()" 
209        title="Edit&hellip;" 
210        tooltip="<%=writePermission ? "Edit this extract" : "You do not have permission to edit this extract"%>" 
211      />
212      <tbl:button 
213        disabled="<%=deletePermission ? false : true%>" 
214        image="<%=deletePermission ? "delete.gif" : "delete_disabled.gif"%>" 
215        onclick="deleteItem()" 
216        title="Delete"
217        visible="<%=!extract.isRemoved()%>"
218        tooltip="<%=deletePermission ? "Delete this extract" : "You do not have permission to delete this extract"%>" 
219      />
220      <tbl:button 
221        disabled="<%=writePermission ? false : true%>" 
222        image="<%=writePermission ? "restore.gif" : "restore_disabled.gif"%>" 
223        onclick="restoreItem()" 
224        title="Restore"
225        visible="<%=extract.isRemoved()%>"
226        tooltip="<%=writePermission ? "Restore this extract" : "You do not have permission to restore this extract"%>" 
227      />
228      <tbl:button 
229        disabled="<%=sharePermission ? false : true%>"
230        image="<%=sharePermission ? "share.gif" : "share_disabled.gif"%>"
231        onclick="shareItem()" 
232        title="Share&hellip;" 
233        tooltip="<%=sharePermission ? "Share this extract to other user, groups and projects" : "You do not have permission to share this extract"%>"
234      />
235      <tbl:button 
236        disabled="<%=setOwnerPermission ? false : true%>"
237        image="<%=setOwnerPermission ? "take_ownership.png" : "take_ownership_disabled.png"%>"
238        onclick="setOwner()" 
239        title="Set owner&hellip;"
240        tooltip="<%=setOwnerPermission ? "Change owner of this item" : "You do not have permission to change ownership of this item"%>"
241      />
242      <tbl:button
243        image="add.png"
244        onclick="newExtract()"
245        title="New child extract&hellip;"
246        tooltip="Create a new child extract from this extract"
247        visible="<%=sc.hasPermission(Permission.CREATE, Item.EXTRACT) && usePermission%>"
248      />
249      <tbl:button
250        image="add.png"
251        onclick="newPhysicalBioAssay()"
252        title="New physical bioassay&hellip;"
253        tooltip="Create a new physical bioassay from this extract"
254        visible="<%=sc.hasPermission(Permission.CREATE, Item.PHYSICALBIOASSAY) && usePermission%>"
255      />
256      <tbl:button 
257        image="import.gif" 
258        onclick="runPlugin('ImportItem')" 
259        title="Import&hellip;" 
260        tooltip="Import data" 
261        visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
262      />
263      <tbl:button 
264        image="export.gif" 
265        onclick="runPlugin('ExportItem')" 
266        title="Export&hellip;" 
267        tooltip="Export data" 
268        visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
269      />
270      <tbl:button 
271        image="runplugin.gif" 
272        onclick="runPlugin('RunPlugin')" 
273        title="Run plugin&hellip;" 
274        tooltip="Run a plugin" 
275        visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
276      />
277      <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
278        wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>
279      <tbl:button
280        image="help.gif"
281        onclick="<%="Main.openHelp('" + ID +"', 'extract.view.properties')"%>"
282        title="Help&hellip;"
283        tooltip="Get help about this page"
284      />
285      </tbl:toolbar>
286    <div class="boxedbottom">
287      <div class="itemstatus">Permissions on this item: <i><%=PermissionUtil.getFullPermissionNames(extract)%></i></div>
288      <%
289      if (extract.isRemoved() || extract.isShared())
290      {
291        %>
292        <div class="itemstatus">
293          <base:icon 
294            image="<%=deletePermanentlyPermission ? "deleted.gif" : "deleted_disabled.gif"%>"
295            onclick="<%=deletePermanentlyPermission ? "deleteItemPermanently()" : null%>"
296            tooltip="<%=deletePermanentlyPermission ? "Permanently delete this item" : null%>"
297            visible="<%=isRemoved%>"> This item has been flagged for deletion<br></base:icon>
298          <base:icon image="used.gif" 
299            onclick="showUsingItems()"
300            tooltip="Show the items that are using this one"
301            visible="<%=isUsed%>"> This item is used by other items and can't be permanently deleted<br></base:icon>
302          <base:icon image="shared.gif" 
303            visible="<%=extract.isShared()%>"> This item is shared to other users, groups and/or projects</base:icon>
304        </div>
305        <%
306      }
307      %>
308      <table class="form" cellspacing="0">
309      <tr>
310        <td class="prompt">Name</td>
311        <td><%=HTML.encodeTags(extract.getName())%></td>
312      </tr>
313      <tr>
314        <td class="prompt">Type</td>
315        <td><base:propertyvalue item="<%=extract%>" property="itemSubtype" /></td>
316      </tr>
317      <tr>
318        <td class="prompt">External ID</td>
319        <td><%=HTML.encodeTags(extract.getExternalId())%></td>
320      </tr>
321      <tr>
322        <td class="prompt">Created</td>
323        <td><%=dateFormatter.format(creationEvent.getEventDate())%></td>
324      </tr>
325      <tr>
326        <td class="prompt">Registered</td>
327        <td><%=dateFormatter.format(creationEvent.getEntryDate())%></td>
328      </tr>
329      <tr>
330        <td class="prompt">Tag</td>
331        <td><base:propertyvalue item="<%=extract%>" property="tag"/></td>
332      </tr>
333      <tr>
334        <td class="prompt">Protocol</td>
335        <td><base:propertyvalue item="<%=creationEvent%>" property="protocol"/></td>
336      </tr>
337      <tr>
338        <td class="prompt">Original quantity</td>
339        <td><%=Values.formatNumber(extract.getOriginalQuantity(), 2, " µg")%></td>
340      </tr>
341      <tr>
342        <td class="prompt">Remaining quantity</td>
343        <td><%=Values.formatNumber(extract.getRemainingQuantity(), 2, " µg")%></td>
344      </tr>
345      <tr>
346        <td class="prompt">Bioplate</td>
347        <td>
348          <base:propertyvalue item="<%=extract%>" property="bioWell.bioPlate" />
349          <%
350          try
351          {
352            BioWell well = extract.getBioWell();
353            if (well != null)
354            {
355              %>
356              [<%=rowFormatter.format(well.getRow())%>,<%=columnFormatter.format(well.getColumn())%>]
357              <base:icon image="locked.gif"  visible="<%=extract.isLockedInWell()%>"/>
358            <%
359            }
360          }
361          catch (PermissionDeniedException ex)
362          {}
363          %>
364        </td>
365      </tr>
366      <tr>
367        <td class="prompt">Owner</td>
368        <td><base:propertyvalue item="<%=extract%>" property="owner"/></td>
369      </tr>
370      <tr valign="baseline">
371        <td class="prompt">Description</td>
372        <td><%=HTML.niceFormat(extract.getDescription())%></td>
373      </tr>
374      </table>
375 
376      <%
377      SpecialQuery<BioMaterialEventSource> sourceQuery = creationEvent.getEventSources();
378      sourceQuery.order(Orders.asc(Hql.property("bioMaterial.name")));
379      ResultList<BioMaterialEventSource> sources = sourceQuery.list(dc);
380      if (sources.size() == 0)
381      {
382        %>
383        <h4>Parent items</h4>
384        This extract doesn't have any parent items
385        (or, you don't have permission to view them).
386        <%
387      }
388      else
389      {
390        %>
391        <base:section 
392          id="parentsSection" 
393          title="<%="Parent items (" + sources.size() + ")"%>"
394          context="<%=cc%>"
395          >
396          <tbl:table
397            id="parents"
398            clazz="itemlist"
399            columns="all"
400            >
401          <tbl:columndef 
402            id="name"
403            title="Name"
404          />
405          <tbl:columndef 
406            id="type"
407            title="Type"
408          />
409          <tbl:columndef 
410            id="quantity"
411            title="Used quantity (µg)"
412          />
413          <tbl:columndef 
414            id="description"
415            title="Description"
416          />
417          <tbl:data>
418            <tbl:columns>
419            </tbl:columns>
420            <tbl:rows>
421            <%
422            for (BioMaterialEventSource item : sources)
423            {
424              BioMaterial bm = null;
425              try
426              {
427                bm = item.getBioMaterial();
428              }
429              catch (PermissionDeniedException ex)
430              {}
431              %>
432              <tbl:row>
433                <tbl:cell column="name"><base:icon 
434                  image="deleted.gif" 
435                  tooltip="This item has been scheduled for deletion" 
436                  visible="<%=bm != null && bm.isRemoved()%>"
437                  /><%=Base.getLinkedName(ID, bm, bm == null, true)%></tbl:cell>
438                <tbl:cell column="type"><%=bm != null ? bm.getType() : "" %></tbl:cell>
439                <tbl:cell column="quantity"><%=Values.formatNumber(item.getUsedQuantity(), 2)%></tbl:cell>
440                <tbl:cell column="description"><%=HTML.encodeTags(bm == null ? "" : bm.getDescription())%></tbl:cell>
441              </tbl:row>
442              <%
443            }
444            %>
445          </tbl:rows>
446          </tbl:data>
447          </tbl:table>
448        </base:section>
449        <%
450      }
451     
452      SpecialQuery<BioMaterialEventSource> childQuery = extract.getChildCreationEvents();
453      childQuery.join(Hql.innerJoin("es", "event", "evt", true));
454      childQuery.join(Hql.leftJoin("evt", "bioMaterial", "bm", null, true));
455      childQuery.join(Hql.leftJoin("evt", "physicalBioAssay", "pba", null, true));
456      childQuery.order(Orders.asc(Hql.property("pba", "name")));
457      childQuery.order(Orders.asc(Hql.property("bm", "name")));
458      ResultList<BioMaterialEventSource> children = childQuery.list(dc);
459      if (children.size() == 0)
460      {
461        %>
462        <h4>Child items</h4>
463        No child items have been created from this extract
464        (or, you don't have permission to view them).
465        <%
466      }
467      else
468      {
469        %>
470        <base:section 
471          id="childSection" 
472          title="<%="Child items (" + children.size() + ")"%>"
473          context="<%=cc%>"
474          >
475          <tbl:table 
476            id="children"
477            clazz="itemlist"
478            columns="all"
479            >
480            <tbl:columndef 
481              id="name"
482              title="Name"
483            />
484            <tbl:columndef 
485              id="type"
486              title="Type"
487            />
488            <tbl:columndef 
489              id="quantity"
490              title="Used quantity (µg)"
491            />
492            <tbl:columndef 
493              id="description"
494              title="Description"
495            />
496            <tbl:data>
497              <tbl:columns></tbl:columns>
498              <tbl:rows>
499              <%
500              for (BioMaterialEventSource item : children)
501              {
502                CommonItem child = null;
503                try
504                {
505                  BioMaterialEvent evt = item.getEvent();
506                  if (evt.getEventType() == BioMaterialEvent.Type.BIOASSAY)
507                  {
508                    child = evt.getPhysicalBioAssay();
509                  }
510                  else
511                  {
512                    child = evt.getBioMaterial();
513                  }
514                }
515                catch (PermissionDeniedException ex)
516                {}
517                %>
518                <tbl:row>
519                  <tbl:cell column="name"><base:icon 
520                      image="deleted.gif" 
521                      tooltip="This item has been scheduled for deletion" 
522                      visible="<%=child != null && child.isRemoved()%>"
523                    /><%=Base.getLinkedName(ID, child, child == null, true)%></tbl:cell>
524                  <tbl:cell column="type"><%=child != null ? child.getType() : "" %></tbl:cell>
525                  <tbl:cell column="quantity"><%=Values.formatNumber(item.getUsedQuantity(), 2)%></tbl:cell>
526                  <tbl:cell column="description"><%=HTML.encodeTags(child == null ? "" : child.getDescription())%></tbl:cell>
527                </tbl:row>
528                <%
529              }
530              %>           
531              </tbl:rows>
532            </tbl:data>
533          </tbl:table>
534        </base:section>
535        <%
536      }
537      %>
538      <jsp:include page="../../common/anytoany/list_anytoany.jsp">
539        <jsp:param name="ID" value="<%=ID%>" />
540        <jsp:param name="item_type" value="<%=itemType.name()%>" />
541        <jsp:param name="item_id" value="<%=itemId%>" />
542        <jsp:param name="title" value="Other items related to this extract" />
543      </jsp:include>
544      <%
545      MultiPermissions mp = new MultiPermissions(Collections.singleton(extract));
546      ItemResultList<User> users = mp.getUsers().list(dc);
547      ItemResultList<Group> groups = mp.getGroups().list(dc);
548      ItemResultList<Project> projects = mp.getProjects().list(dc);
549      int totalShare = users.size() + groups.size() + projects.size();
550     
551      if (totalShare > 0)
552      {
553        %>
554        <base:section 
555          id="sharedTo" 
556          title="<%="Shared to (" + totalShare + ")"%>"
557          context="<%=cc%>"
558          >
559          <tbl:table 
560            id="itemsSharedTo"
561            clazz="itemlist"
562            columns="all"
563          >
564            <tbl:columndef 
565              id="itemType"
566              title="Item type"
567            />
568            <tbl:columndef 
569              id="name"
570              title="Name"
571            />
572            <tbl:columndef 
573              id="permissions"
574              title="Permissions"
575            />
576            <tbl:data>
577              <tbl:columns>
578              </tbl:columns>
579              <tbl:rows>
580              <%
581              for (Project project : projects)
582              {
583                Set<Permission> permissions = mp.getPermissions(project).values().iterator().next();
584                %>     
585                <tbl:row>
586                  <tbl:cell column="itemType"><%=project.getType()%></tbl:cell>
587                  <tbl:cell column="name"><base:icon 
588                    image="deleted.gif" 
589                    tooltip="This item has been scheduled for deletion" 
590                    visible="<%=project.isRemoved()%>"
591                  /><%=Base.getLinkedName(ID, project, false, true)%></tbl:cell>
592                  <tbl:cell column="permissions">
593                    <%=PermissionUtil.translatePermissionsToString(permissions)%>
594                  </tbl:cell>
595                </tbl:row>
596                <%
597              }
598              for (Group group : groups)
599              {
600                Set<Permission> permissions = mp.getPermissions(group).values().iterator().next();
601                %>
602                <tbl:row>             
603                  <tbl:cell column="itemType"><%=group.getType()%></tbl:cell>
604                  <tbl:cell column="name"><base:icon 
605                    image="deleted.gif" 
606                    tooltip="This item has been scheduled for deletion" 
607                    visible="<%=group.isRemoved()%>"
608                  /><%=Base.getLinkedName(ID, group, false, true)%></tbl:cell>
609                  <tbl:cell column="permissions">
610                    <%=PermissionUtil.translatePermissionsToString(permissions)%>
611                  </tbl:cell>
612                </tbl:row>
613                <% 
614              }
615              for (User user : users)
616              {
617                Set<Permission> permissions = mp.getPermissions(user).values().iterator().next();
618                %>
619                <tbl:row>             
620                  <tbl:cell column="itemType"><%=user.getType()%></tbl:cell>
621                  <tbl:cell column="name"><base:icon 
622                    image="deleted.gif" 
623                    tooltip="This item has been scheduled for deletion" 
624                    visible="<%=user.isRemoved()%>"
625                  /><%=Base.getLinkedName(ID, user, false, true)%></tbl:cell>
626                  <tbl:cell column="permissions">
627                    <%=PermissionUtil.translatePermissionsToString(permissions)%>
628                  </tbl:cell>
629                </tbl:row>
630                <%
631              }
632              %>
633              </tbl:rows>
634            </tbl:data>
635          </tbl:table>
636        </base:section>
637        <%
638      }
639      else
640      {
641        %>
642        <h4>Shared to</h4>
643        This extract is not shared
644        (or, you don't have permission to view the ones it is shared to).       
645        <%
646      }     
647      %>
648     
649    </div>
650      </t:tab>
651     
652      <t:tab id="annotations" title="Annotations &amp; parameters" 
653        tooltip="View annotation values and protocol parameters">
654        <div class="boxed">
655        <jsp:include page="../../common/annotations/list_annotations.jsp">
656          <jsp:param name="item_type" value="<%=itemType.name()%>" />
657          <jsp:param name="item_id" value="<%=itemId%>" />
658          <jsp:param name="ID" value="<%=ID%>" />
659        </jsp:include>
660        </div>
661      </t:tab>
662     
663      <t:tab id="events" title="Events" />
664
665      <t:tab id="overview" title="Overview" 
666        tooltip="Display a tree overview of related items">
667        <%
668        if ("overview".equals(tab))
669        {
670          %>
671          <jsp:include page="../../common/overview/overview.jsp">
672            <jsp:param name="item_type" value="<%=itemType.name()%>" />
673            <jsp:param name="item_id" value="<%=itemId%>" />
674            <jsp:param name="ID" value="<%=ID%>" />
675          </jsp:include>
676          <%
677        }
678        %>
679      </t:tab>
680      <t:tab id="history" title="Change history" 
681        tooltip="Displays a log of all modifications made to this item"
682        visible="<%=ChangeHistoryUtil.showChangeHistoryTab(sc)%>">
683        <%
684        if ("history".equals(tab))
685        {
686          %>
687          <jsp:include page="../../common/history/frameset.jsp">
688            <jsp:param name="source_type" value="<%=itemType.name()%>" />
689            <jsp:param name="source_id" value="<%=itemId%>" />
690            <jsp:param name="ID" value="<%=ID%>" />
691          </jsp:include>
692          <%
693        }
694        %>
695      </t:tab>     
696      </t:tabcontrol>
697
698
699  </base:body>
700  </base:page>
701  <%
702}
703finally
704{
705  if (dc != null) dc.close();
706}
707
708%>
Note: See TracBrowser for help on using the repository browser.