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

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

References #1729 and #1730. Use lazy loading for the 'Annotations' frame on the view page as well. Started to work on the 'Inherit annotations' dialog, but the Joust tree can't be done at the moment so there is still some work to do.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 21.1 KB
Line 
1<%-- $Id: view_extract.jsp 6255 2013-03-22 09:50:51Z 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>
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 == 'events')
176      {
177        viewEvents();
178      }
179      else
180      {
181        TabControl.setActiveTab(tabControlId, tabId);
182      }
183    }
184    function newPhysicalBioAssay()
185    {
186      Main.viewOrEditItem('<%=ID%>', 'PHYSICALBIOASSAY', 0, true, '&extract_id='+<%=itemId%>);
187    }
188    function newRawBioAssay()
189    {
190      Main.viewOrEditItem('<%=ID%>', 'RAWBIOASSAY', 0, true, '&extract_id='+<%=itemId%>);
191    }
192    </script>
193  </base:head>
194  <base:body>
195    <p:path><p:pathelement 
196      title="Extracts" href="<%="index.jsp?ID="+ID%>" /><p:pathelement
197      title="<%=HTML.encodeTags(extract.getName())%>" /></p:path>
198   
199    <t:tabcontrol id="main" subclass="content mastertabcontrol" active="<%=tab%>" switch="switchTab" remember="false">
200    <t:tab id="properties" title="Properties">
201      <div>
202      <table class="fullform bottomborder">
203      <tr>
204        <th class="itemstatus">
205          <base:icon 
206            image="shared.png" 
207            visible="<%=extract.isShared()%>"
208            tooltip="This item is shared to other users, groups and/or projects"
209          />
210          <base:icon 
211            image="deleted.png"
212            onclick="deleteItemPermanently()"
213            tooltip="This item has been flagged for deletion. Click to delete it now."
214            enabled="<%=deletePermanentlyPermission %>"
215            visible="<%=isRemoved%>" 
216          />
217          <base:icon image="used.png" 
218            onclick="showUsingItems()"
219            tooltip="This item is used by other items and can't be permanently deleted. Show the items that are using this one"
220            visible="<%=isRemoved && isUsed%>" />
221        </th>
222        <td style="padding: 0px;">
223          <tbl:toolbar subclass="bottomborder">
224            <tbl:button 
225              disabled="<%=!writePermission%>" 
226              image="edit.png" 
227              onclick="editItem()" 
228              title="Edit&hellip;" 
229              tooltip="<%=writePermission ? "Edit this extract" : "You do not have permission to edit this extract"%>" 
230            />
231            <tbl:button 
232              disabled="<%=!deletePermission%>" 
233              image="delete.png" 
234              onclick="deleteItem()" 
235              title="Delete"
236              visible="<%=!extract.isRemoved()%>"
237              tooltip="<%=deletePermission ? "Delete this extract" : "You do not have permission to delete this extract"%>" 
238            />
239            <tbl:button 
240              disabled="<%=!writePermission%>" 
241              image="restore.png" 
242              onclick="restoreItem()" 
243              title="Restore"
244              visible="<%=extract.isRemoved()%>"
245              tooltip="<%=writePermission ? "Restore this extract" : "You do not have permission to restore this extract"%>" 
246            />
247            <tbl:button 
248              disabled="<%=!sharePermission%>"
249              image="share.png"
250              onclick="shareItem()" 
251              title="Share&hellip;" 
252              tooltip="<%=sharePermission ? "Share this extract to other user, groups and projects" : "You do not have permission to share this extract"%>"
253            />
254            <tbl:button 
255              disabled="<%=!setOwnerPermission%>"
256              image="take_ownership.png"
257              onclick="setOwner()" 
258              title="Set owner&hellip;"
259              tooltip="<%=setOwnerPermission ? "Change owner of this item" : "You do not have permission to change ownership of this item"%>"
260            />
261            <tbl:button
262              image="add.png"
263              onclick="newExtract()"
264              title="New child extract&hellip;"
265              tooltip="Create a new child extract from this extract"
266              visible="<%=sc.hasPermission(Permission.CREATE, Item.EXTRACT) && usePermission%>"
267            />
268            <tbl:button
269              image="add.png"
270              onclick="newPhysicalBioAssay()"
271              title="New physical bioassay&hellip;"
272              tooltip="Create a new physical bioassay from this extract"
273              visible="<%=sc.hasPermission(Permission.CREATE, Item.PHYSICALBIOASSAY) && usePermission%>"
274            />
275            <tbl:button
276              image="add.png"
277              onclick="newRawBioAssay()"
278              title="New raw bioassay&hellip;"
279              tooltip="Create a new raw bioassay from this extract"
280              visible="<%=sc.hasPermission(Permission.CREATE, Item.RAWBIOASSAY) && usePermission%>"
281            />
282            <tbl:button 
283              image="import.png" 
284              onclick="runPlugin('ImportItem')" 
285              title="Import&hellip;" 
286              tooltip="Import data" 
287              visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
288            />
289            <tbl:button 
290              image="export.png" 
291              onclick="runPlugin('ExportItem')" 
292              title="Export&hellip;" 
293              tooltip="Export data" 
294              visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
295            />
296            <tbl:button 
297              image="runplugin.png" 
298              onclick="runPlugin('RunPlugin')" 
299              title="Run plugin&hellip;" 
300              tooltip="Run a plugin" 
301              visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
302            />
303            <ext:render extensions="<%=invoker%>" context="<%=jspContext%>" 
304              wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>
305            <tbl:button
306              image="help.png"
307              onclick="<%="Main.openHelp('" + ID +"', 'extract.view.properties')"%>"
308              title="Help&hellip;"
309              tooltip="Get help about this page"
310            />
311            </tbl:toolbar>
312          </td>
313        </tr>
314        <tr>
315          <th>Name</th>
316          <td><%=HTML.encodeTags(extract.getName())%></td>
317        </tr>
318        <tr>
319          <th>Type</th>
320          <td><base:propertyvalue item="<%=extract%>" property="itemSubtype" /></td>
321        </tr>
322        <tr>
323          <th>External ID</th>
324          <td><%=HTML.encodeTags(extract.getExternalId())%></td>
325        </tr>
326        <tr>
327          <th>Created</th>
328          <td><%=dateFormatter.format(creationEvent.getEventDate())%></td>
329        </tr>
330        <tr>
331          <th>Registered</th>
332          <td><%=dateFormatter.format(creationEvent.getEntryDate())%></td>
333        </tr>
334        <tr>
335          <th>Tag</th>
336          <td><base:propertyvalue item="<%=extract%>" property="tag"/></td>
337        </tr>
338        <tr>
339          <th>Protocol</th>
340          <td><base:propertyvalue item="<%=creationEvent%>" property="protocol"/></td>
341        </tr>
342        <tr>
343          <th>Original quantity</th>
344          <td><%=Values.formatNumber(extract.getOriginalQuantity(), 2, " µg")%></td>
345        </tr>
346        <tr>
347          <th class="subprompt">- remaining</th>
348          <td><%=Values.formatNumber(extract.getRemainingQuantity(), 2, " µg")%></td>
349        </tr>
350        <tr>
351          <th>Bioplate</th>
352          <td>
353            <base:propertyvalue item="<%=extract%>" property="bioWell.bioPlate" />
354            <%
355            try
356            {
357              BioWell well = extract.getBioWell();
358              if (well != null)
359              {
360                %>
361                [<%=rowFormatter.format(well.getRow())%><%=columnFormatter.format(well.getColumn())%>]
362                <base:icon image="locked.png"  visible="<%=extract.isLockedInWell()%>"/>
363              <%
364              }
365            }
366            catch (PermissionDeniedException ex)
367            {}
368            %>
369          </td>
370        </tr>
371        <tr>
372          <th>Owner</th>
373          <td><base:propertyvalue item="<%=extract%>" property="owner"/></td>
374        </tr>
375        <tr>
376          <th>Permissions</th>
377          <td><%=PermissionUtil.getFullPermissionNames(extract)%></td>
378        </tr>
379        <tr>
380          <th>Description</th>
381          <td><%=HTML.niceFormat(extract.getDescription())%></td>
382        </tr>
383      </table>
384      </div>
385 
386      <%
387      SpecialQuery<BioMaterialEventSource> sourceQuery = creationEvent.getEventSources();
388      sourceQuery.order(Orders.asc(Hql.property("bioMaterial.name")));
389      ResultList<BioMaterialEventSource> sources = sourceQuery.list(dc);
390      %>
391      <base:section 
392        id="parentsSection" 
393        title="<%="Parent items (" + sources.size() + ")"%>"
394        context="<%=cc%>"
395        >
396        <%
397        if (sources.size() == 0)
398        {
399          %>
400          <div class="messagecontainer note">
401          This extract doesn't have any parent items
402          (or, you don't have permission to view them).
403          </div>
404          <%
405        }
406        else
407        {
408          %>
409          <tbl:table
410            id="parents"
411            columns="all"
412            >
413          <tbl:columndef 
414            id="name"
415            title="Name"
416          />
417          <tbl:columndef 
418            id="type"
419            title="Type"
420          />
421          <tbl:columndef 
422            id="quantity"
423            title="Used quantity (µg)"
424          />
425          <tbl:columndef 
426            id="description"
427            title="Description"
428          />
429          <tbl:data>
430            <tbl:headers>
431              <tbl:headerrow>
432                <tbl:columnheaders />
433              </tbl:headerrow>
434            </tbl:headers>
435            <tbl:rows>
436            <%
437            for (BioMaterialEventSource item : sources)
438            {
439              BioMaterial bm = null;
440              ItemSubtype subtype = null;
441              try
442              {
443                bm = item.getBioMaterial();
444                subtype = bm.getItemSubtype();
445              }
446              catch (PermissionDeniedException ex)
447              {}
448              %>
449              <tbl:row>
450                <tbl:cell column="name"><base:icon 
451                  image="deleted.png" 
452                  tooltip="This item has been scheduled for deletion" 
453                  visible="<%=bm != null && bm.isRemoved()%>"
454                  /><%=Base.getLinkedName(ID, bm, bm == null, true)%></tbl:cell>
455                <tbl:cell column="type">
456                  <%
457                  if (subtype != null)
458                  {
459                    %>
460                    <%=Base.getLinkedName(ID, subtype, false, true)%> <span class="itemsubtype">(<%=bm.getType() %>)</span>
461                    <%
462                  }
463                  else
464                  {
465                    %>
466                    <%=bm != null ? bm.getType() : "" %>
467                    <%
468                  }
469                  %>
470                </tbl:cell>
471                <tbl:cell column="quantity"><%=Values.formatNumber(item.getUsedQuantity(), 2)%></tbl:cell>
472                <tbl:cell column="description"><%=HTML.encodeTags(bm == null ? "" : bm.getDescription())%></tbl:cell>
473              </tbl:row>
474              <%
475            }
476            %>
477          </tbl:rows>
478          </tbl:data>
479          </tbl:table>
480          <%
481        }
482      %>
483      </base:section>
484      <%
485      SpecialQuery<BioMaterialEventSource> childQuery = extract.getChildCreationEvents();
486      childQuery.join(Hql.innerJoin("es", "event", "evt", true));
487      childQuery.join(Hql.leftJoin("evt", "bioMaterial", "bm", null, true));
488      childQuery.join(Hql.leftJoin("evt", "physicalBioAssay", "pba", null, true));
489      childQuery.order(Orders.asc(Hql.property("pba", "name")));
490      childQuery.order(Orders.asc(Hql.property("bm", "name")));
491      ResultList<BioMaterialEventSource> children = childQuery.list(dc);
492      %>
493      <base:section 
494        id="childSection" 
495        title="<%="Child items (" + children.size() + ")"%>"
496        context="<%=cc%>"
497        >
498        <%
499        if (children.size() == 0)
500        {
501          %>
502          <div class="messagecontainer note">
503          No child items have been created from this extract
504          (or, you don't have permission to view them).
505          </div>
506          <%
507        }
508        else
509        {
510          %>
511          <tbl:table 
512            id="children"
513            columns="all"
514            >
515            <tbl:columndef 
516              id="name"
517              title="Name"
518            />
519            <tbl:columndef 
520              id="type"
521              title="Type"
522            />
523            <tbl:columndef 
524              id="quantity"
525              title="Used quantity (µg)"
526            />
527            <tbl:columndef 
528              id="description"
529              title="Description"
530            />
531            <tbl:data>
532            <tbl:headers>
533              <tbl:headerrow>
534                <tbl:columnheaders />
535              </tbl:headerrow>
536              </tbl:headers>
537              <tbl:rows>
538              <%
539              for (BioMaterialEventSource item : children)
540              {
541                CommonItem child = null;
542                ItemSubtype subtype = null;
543                try
544                {
545                  BioMaterialEvent evt = item.getEvent();
546                  if (evt.getEventType() == BioMaterialEvent.Type.BIOASSAY)
547                  {
548                    PhysicalBioAssay bioAssay = evt.getPhysicalBioAssay();
549                    subtype = bioAssay.getItemSubtype();
550                    child = bioAssay;
551                  }
552                  else
553                  {
554                    BioMaterial bm = evt.getBioMaterial();
555                    subtype = bm.getItemSubtype();
556                    child = bm;
557                  }
558                }
559                catch (PermissionDeniedException ex)
560                {}
561                %>
562                <tbl:row>
563                  <tbl:cell column="name"><base:icon 
564                      image="deleted.png" 
565                      tooltip="This item has been scheduled for deletion" 
566                      visible="<%=child != null && child.isRemoved()%>"
567                    /><%=Base.getLinkedName(ID, child, child == null, true)%></tbl:cell>
568                  <tbl:cell column="type">
569                    <%
570                    if (subtype != null)
571                    {
572                      %>
573                      <%=Base.getLinkedName(ID, subtype, false, true)%> <span class="itemsubtype">(<%=child.getType() %>)</span>
574                      <%
575                    }
576                    else
577                    {
578                      %>
579                      <%=child != null ? child.getType() : "" %>
580                      <%
581                    }
582                    %>
583                  </tbl:cell>
584                  <tbl:cell column="quantity"><%=Values.formatNumber(item.getUsedQuantity(), 2)%></tbl:cell>
585                  <tbl:cell column="description"><%=HTML.encodeTags(child == null ? "" : child.getDescription())%></tbl:cell>
586                </tbl:row>
587                <%
588              }
589              %>           
590              </tbl:rows>
591            </tbl:data>
592          </tbl:table>
593          <%
594        }
595        %>
596      </base:section>
597      <jsp:include page="../../common/anytoany/list_anytoany.jsp">
598        <jsp:param name="ID" value="<%=ID%>" />
599        <jsp:param name="item_type" value="<%=itemType.name()%>" />
600        <jsp:param name="item_id" value="<%=itemId%>" />
601        <jsp:param name="title" value="Other items related to this extract" />
602      </jsp:include>
603      <jsp:include page="../../common/share/list_share.jsp">
604        <jsp:param name="ID" value="<%=ID%>" />
605        <jsp:param name="item_type" value="<%=itemType.name()%>" />
606        <jsp:param name="item_id" value="<%=itemId%>" />
607        <jsp:param name="title" value="Shared to" />
608      </jsp:include>
609      </t:tab>
610     
611      <t:tab id="annotations" title="Annotations &amp; parameters" 
612        tooltip="View annotation values and protocol parameters" clazz="white"
613        activate="AnnotationsList.loadOnce()">
614        <jsp:include page="../../common/annotations/list_frameset.jsp">
615          <jsp:param name="item_type" value="<%=itemType.name()%>" />
616          <jsp:param name="item_id" value="<%=itemId%>" />
617          <jsp:param name="ID" value="<%=ID%>" />
618        </jsp:include>
619      </t:tab>
620     
621      <t:tab id="events" title="Events" />
622
623      <t:tab id="overview" title="Overview" 
624        tooltip="Display a tree overview of related items"
625        activate="Overview.loadOnce()">
626        <jsp:include page="../../common/overview/overview.jsp">
627          <jsp:param name="item_type" value="<%=itemType.name()%>" />
628          <jsp:param name="item_id" value="<%=itemId%>" />
629          <jsp:param name="ID" value="<%=ID%>" />
630        </jsp:include>
631      </t:tab>
632      <t:tab id="history" title="Change history" 
633        tooltip="Displays a log of all modifications made to this item"
634        visible="<%=ChangeHistoryUtil.showChangeHistoryTab(sc)%>"
635        activate="History.loadOnce()">
636        <jsp:include page="../../common/history/frameset.jsp">
637          <jsp:param name="item_type" value="<%=itemType.name()%>" />
638          <jsp:param name="item_id" value="<%=itemId%>" />
639          <jsp:param name="ID" value="<%=ID%>" />
640        </jsp:include>
641      </t:tab>     
642      </t:tabcontrol>
643
644
645  </base:body>
646  </base:page>
647  <%
648}
649finally
650{
651  if (dc != null) dc.close();
652}
653
654%>
Note: See TracBrowser for help on using the repository browser.