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

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

Fixes #1689: The list with parent and child items on the single-item pages for biomaterial should include the subtype

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