source: trunk/www/views/derivedbioassaysets/view_bioassayset.jsp @ 5657

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

References #1153: Handling short read transcript sequence data

Added web pages for editing and viewing derived bioassay sets. They'll probably need to be polished up a bit.

The final link to raw bioassay is still not possible. I think we have to re-design the link somewhat. In BASE 2 we used the array index to link back to the correct (labeled) extracts. We can't use that in BASE 3 since for sequencing experiments there doesn't have to be any relation between extracts in the same lane of the flow cell. The idea was to provide a direct link to the extract, but then we loose one of the parents in 2-channel microarray experiments...

  • Property svn:eol-style set to native
  • Property svn:keywords set to Date Id
File size: 20.5 KB
Line 
1<%-- $Id $
2  ------------------------------------------------------------------
3  Copyright (C) 2011 Nicklas Nordborg
4
5  This file is part of BASE - BioArray Software Environment.
6  Available at http://base.thep.lu.se/
7
8  BASE is free software; you can redistribute it and/or
9  modify it under the terms of the GNU General Public License
10  as published by the Free Software Foundation; either version 3
11  of the License, or (at your option) any later version.
12
13  BASE is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  GNU General Public License for more details.
17
18  You should have received a copy of the GNU General Public License
19  along with BASE. If not, see <http://www.gnu.org/licenses/>.
20  ------------------------------------------------------------------
21
22--%>
23<%@ page pageEncoding="UTF-8" session="false"
24  import="net.sf.basedb.core.SessionControl"
25  import="net.sf.basedb.core.DbControl"
26  import="net.sf.basedb.core.DerivedBioAssaySet"
27  import="net.sf.basedb.core.DerivedBioAssay"
28  import="net.sf.basedb.core.PhysicalBioAssay"
29  import="net.sf.basedb.core.Item"
30  import="net.sf.basedb.core.ItemContext"
31  import="net.sf.basedb.core.Permission"
32  import="net.sf.basedb.core.Job"
33  import="net.sf.basedb.core.PluginDefinition"
34  import="net.sf.basedb.core.PluginConfiguration"
35  import="net.sf.basedb.core.User"
36  import="net.sf.basedb.core.ItemQuery"
37  import="net.sf.basedb.core.ItemResultList"
38  import="net.sf.basedb.core.Include"
39  import="net.sf.basedb.core.PermissionDeniedException"
40  import="net.sf.basedb.core.PluginDefinition"
41  import="net.sf.basedb.core.ParameterInfo"
42  import="net.sf.basedb.core.RawDataType"
43  import="net.sf.basedb.core.BasicItem"
44  import="net.sf.basedb.core.Nameable"
45  import="net.sf.basedb.core.File"
46  import="net.sf.basedb.core.plugin.GuiContext"
47  import="net.sf.basedb.core.plugin.Plugin"
48  import="net.sf.basedb.core.query.Orders"
49  import="net.sf.basedb.core.query.Hql"
50  import="net.sf.basedb.clients.web.ChangeHistoryUtil"
51  import="net.sf.basedb.clients.web.Base"
52  import="net.sf.basedb.clients.web.PermissionUtil"
53  import="net.sf.basedb.clients.web.util.HTML"
54  import="net.sf.basedb.util.Values"
55  import="net.sf.basedb.util.formatter.Formatter"
56  import="net.sf.basedb.clients.web.formatter.FormatterFactory"
57  import="net.sf.basedb.clients.web.extensions.ExtensionsControl"
58  import="net.sf.basedb.clients.web.extensions.JspContext"
59  import="net.sf.basedb.clients.web.extensions.renderer.PrefixSuffixRenderer"
60  import="net.sf.basedb.clients.web.extensions.toolbar.ToolbarUtil"
61  import="net.sf.basedb.clients.web.extensions.plot.OverviewPlotAction"
62  import="net.sf.basedb.clients.web.extensions.plot.PlotGenerator"
63  import="net.sf.basedb.util.extensions.ExtensionsInvoker"
64  import="net.sf.basedb.util.extensions.ActionIterator"
65  import="java.util.Date"
66  import="java.util.Map"
67  import="java.util.Set"
68  import="java.util.List"
69  import="java.util.Iterator"
70%>
71<%@ taglib prefix="base" uri="/WEB-INF/base.tld" %>
72<%@ taglib prefix="tbl" uri="/WEB-INF/table.tld" %>
73<%@ taglib prefix="t" uri="/WEB-INF/tab.tld" %>
74<%@ taglib prefix="p" uri="/WEB-INF/path.tld" %>
75<%@ taglib prefix="ext" uri="/WEB-INF/extensions.tld" %>
76<%!
77  private static final Item itemType = Item.DERIVEDBIOASSAYSET;
78  private static final GuiContext guiContext = new GuiContext(itemType, GuiContext.Type.ITEM);
79%>
80<%
81final SessionControl sc = Base.getExistingSessionControl(pageContext, true);
82final String ID = sc.getId();
83final ItemContext cc = Base.getAndSetCurrentContext(sc, itemType, null, null);
84final int itemId = cc.getId();
85final String tab = Values.getString(request.getParameter("tab"), "properties");
86
87final float scale = Base.getScale(sc);
88final String root = request.getContextPath();
89final DbControl dc = sc.newDbControl();
90try
91{
92  Map<Plugin.MainType, Integer> pluginCount = PluginDefinition.countPlugins(dc, guiContext);
93
94  String title = null;
95  final DerivedBioAssaySet bioAssaySet = DerivedBioAssaySet.getById(dc, itemId);
96 
97  Job job = null;
98  boolean readJob = true;
99  PluginDefinition plugin = null;
100  boolean readPlugin = true;
101  PluginConfiguration configuration = null;
102  boolean readConfiguration = true;
103
104  try
105  {
106    job = bioAssaySet.getJob();
107  }
108  catch (PermissionDeniedException ex)
109  {
110    readJob = false;
111    readPlugin = false;
112    readConfiguration = false;
113  }
114  if (job != null)
115  {
116    try
117    {
118      plugin = job.getPluginDefinition();
119    }
120    catch (PermissionDeniedException ex)
121    {
122      readPlugin = false;
123    }
124    try
125    {
126      configuration = job.getPluginConfiguration();
127    }
128    catch (PermissionDeniedException ex)
129    {
130      readConfiguration = false;
131    }
132  }
133 
134  final boolean usePermission = bioAssaySet.hasPermission(Permission.USE);
135  final boolean writePermission = bioAssaySet.hasPermission(Permission.WRITE);
136  final boolean deletePermission = bioAssaySet.hasPermission(Permission.DELETE);
137  final boolean sharePermission = bioAssaySet.hasPermission(Permission.SET_PERMISSION);
138  final boolean setOwnerPermission = bioAssaySet.hasPermission(Permission.SET_OWNER);
139  final boolean isRemoved = bioAssaySet.isRemoved();
140  final boolean isUsed = isRemoved && bioAssaySet.isUsed();
141  final boolean deletePermanentlyPermission = deletePermission && !isUsed;
142  final boolean isOwner = bioAssaySet.isOwner();
143  Formatter<Date> dateFormatter = FormatterFactory.getDateFormatter(sc);
144  Formatter<Date> dateTimeFormatter = FormatterFactory.getDateTimeFormatter(sc);
145  JspContext jspContext = ExtensionsControl.createContext(dc, pageContext, guiContext, bioAssaySet);
146  ExtensionsInvoker toolbarInvoker = ToolbarUtil.useExtensions(jspContext);
147  %>
148  <base:page title="<%=title%>">
149  <base:head scripts="table.js,tabcontrol.js" styles="table.css,toolbar.css,headertabcontrol.css,path.css">
150    <ext:scripts context="<%=jspContext%>" />
151    <ext:stylesheets context="<%=jspContext%>" />
152    <script language="JavaScript">
153    function editItem()
154    {
155      Main.viewOrEditItem('<%=ID%>', '<%=itemType.name()%>', <%=itemId%>, true);
156    }
157    function deleteItem()
158    {
159      location.replace('index.jsp?ID=<%=ID%>&cmd=DeleteItem&item_id=<%=itemId%>');
160    }
161    function restoreItem()
162    {
163      location.replace('index.jsp?ID=<%=ID%>&cmd=RestoreItem&item_id=<%=itemId%>');
164    }
165    function shareItem()
166    {
167      Main.openPopup('index.jsp?ID=<%=ID%>&cmd=ShareItem&item_id=<%=itemId%>', 'ShareBioAssaySet', 600, 400);
168    }
169    function setOwner()
170    {
171      Main.openPopup('index.jsp?ID=<%=ID%>&cmd=SetOwnerOfItem&item_id=<%=itemId%>', 'SetOwnerOfItem', 450, 150);
172    }
173    function switchTab(tabControlId, tabId)
174    {
175      if (TabControl.isActive(tabControlId, tabId)) return;
176      if ((tabId == 'overview' || tabId == 'history') && tabId != '<%=tab%>')
177      {
178        location.href = 'index.jsp?ID=<%=ID%>&cmd=ViewItem&item_id=<%=itemId%>&tab='+tabId;
179      }
180      else
181      {
182        TabControl.setActiveTab(tabControlId, tabId);
183      }
184    }
185    function runItemPlugin(cmd)
186    {
187      Main.openPopup('index.jsp?ID=<%=ID%>&cmd='+cmd+'&item_id=<%=itemId%>', 'RunPlugin'+cmd, 740, 540);
188    }
189    function newChildBioAssaySet()
190    {
191      Main.viewOrEditItem('<%=ID%>', 'DERIVEDBIOASSAYSET', 0, true, '&parent_id=<%=itemId%>');
192    }
193    </script>
194  </base:head>
195  <base:body>
196    <p>
197    <p:path>
198      <p:pathelement title="Derived bioassay sets" href="<%="index.jsp?ID="+ID%>" />
199      <p:pathelement title="<%=HTML.encodeTags(bioAssaySet.getName())%>" />
200    </p:path>
201   
202    <t:tabcontrol id="main" active="<%=tab%>" switch="switchTab" remember="false">
203      <t:tab id="properties" title="Properties">
204    <tbl:toolbar
205      >
206      <tbl:button 
207        disabled="<%=writePermission ? false : true%>" 
208        image="<%=writePermission ? "edit.gif" : "edit_disabled.gif"%>" 
209        onclick="editItem()" 
210        title="Edit&hellip;" 
211        tooltip="<%=writePermission ? "Edit this bioassay set" : "You do not have permission to edit this bioassay set"%>" 
212      />
213      <tbl:button 
214        disabled="<%=deletePermission ? false : true%>" 
215        image="<%=deletePermission ? "delete.gif" : "delete_disabled.gif"%>" 
216        onclick="deleteItem()" 
217        title="Delete"
218        visible="<%=!bioAssaySet.isRemoved()%>"
219        tooltip="<%=deletePermission ? "Delete this bioassay set" : "You do not have permission to delete this bioassay set"%>" 
220      />
221      <tbl:button 
222        disabled="<%=writePermission ? false : true%>" 
223        image="<%=writePermission ? "restore.gif" : "restore_disabled.gif"%>" 
224        onclick="restoreItem()" 
225        title="Restore"
226        visible="<%=bioAssaySet.isRemoved()%>"
227        tooltip="<%=writePermission ? "Restore this bioassay set" : "You do not have permission to restore this bioassay set"%>" 
228      />
229      <tbl:button 
230        disabled="<%=sharePermission ? false : true%>"
231        image="<%=sharePermission ? "share.gif" : "share_disabled.gif"%>"
232        onclick="shareItem()" 
233        title="Share&hellip;" 
234        tooltip="<%=sharePermission ? "Share this bioassay set to other user, groups and projects" : "You do not have permission to share this bioassay set"%>"
235      />
236      <tbl:button 
237        disabled="<%=setOwnerPermission ? false : true%>"
238        image="<%=setOwnerPermission ? "take_ownership.png" : "take_ownership_disabled.png"%>"
239        onclick="setOwner()" 
240        title="Set owner&hellip;"
241        tooltip="<%=setOwnerPermission ? "Change owner of this item" : "You do not have permission to change ownership of this item"%>"
242      />
243      <tbl:button
244        image="add.png"
245        onclick="newChildBioAssaySet()"
246        title="New child bioassay set&hellip;"
247        tooltip="Create a child bioassay set from this bioassay set"
248        visible="<%=sc.hasPermission(Permission.CREATE, Item.DERIVEDBIOASSAYSET) && usePermission%>"
249      />
250      <tbl:button 
251        image="import.gif" 
252        onclick="runItemPlugin('ImportItem')" 
253        title="Import&hellip;" 
254        tooltip="Import data" 
255        visible="<%=pluginCount.containsKey(Plugin.MainType.IMPORT)%>"
256      />
257      <tbl:button 
258        image="export.gif" 
259        onclick="runItemPlugin('ExportItem')" 
260        title="Export&hellip;" 
261        tooltip="Export data" 
262        visible="<%=pluginCount.containsKey(Plugin.MainType.EXPORT)%>"
263      />
264      <tbl:button 
265        image="runplugin.gif" 
266        onclick="runItemPlugin('RunPlugin')"
267        title="Run plugin&hellip;" 
268        tooltip="Run a plugin" 
269        visible="<%=pluginCount.containsKey(Plugin.MainType.OTHER)%>"
270      />
271      <ext:render extensions="<%=toolbarInvoker%>" context="<%=jspContext%>" 
272        wrapper="<%=new PrefixSuffixRenderer(jspContext, "<td>", "</td>") %>"/>
273      <tbl:button
274        image="help.gif"
275        onclick="<%="Main.openHelp('" + ID +"', 'derivedbioassayset.view.properties')"%>"
276        title="Help&hellip;"
277        tooltip="Get help about this page"
278      />
279      </tbl:toolbar>
280    <div class="boxedbottom">
281      <div class="itemstatus">Permissions on this item: <i><%=PermissionUtil.getFullPermissionNames(bioAssaySet)%></i></div>
282      <%
283      if (isRemoved || bioAssaySet.isShared())
284      {
285        %>
286        <div class="itemstatus">
287          <base:icon 
288            image="<%=deletePermanentlyPermission ? "deleted.gif" : "deleted_disabled.gif"%>"
289            onclick="<%=deletePermanentlyPermission ? "deleteItemPermanently()" : null%>"
290            tooltip="<%=deletePermanentlyPermission ? "Permanently delete this item" : null%>"
291            visible="<%=isRemoved%>"> This item has been flagged for deletion<br></base:icon>
292          <base:icon image="used.gif" 
293            onclick="showUsingItems()"
294            tooltip="Show the items that are using this one"
295            visible="<%=isUsed%>"> This item is used by other items and can't be permanently deleted<br></base:icon>
296          <base:icon image="shared.gif" 
297            visible="<%=bioAssaySet.isShared()%>"> This item is shared to other users, groups and/or projects</base:icon>
298        </div>
299        <%
300      }
301      %>
302     
303      <table width="100%">
304      <tr valign="top">
305      <td width="50%">
306        <h4>Bioassay set</h4>
307        <table class="form" cellspacing=0>
308        <tr>
309          <td class="prompt">Name</td>
310          <td><%=HTML.encodeTags(bioAssaySet.getName())%></td>
311        </tr>
312        <tr>
313          <td class="prompt">Type</td>
314          <td><base:propertyvalue item="<%=bioAssaySet%>" property="itemSubtype" /></td>
315        </tr>
316        <tr>
317          <td class="prompt">Physical bioassay</td>
318          <td><base:propertyvalue item="<%=bioAssaySet%>" property="physicalBioAssay" /></td>
319        </tr>
320        <tr>
321          <td class="prompt">Parent bioassay set</td>
322          <td><base:propertyvalue item="<%=bioAssaySet%>" property="parent" /></td>
323        </tr>
324        <tr>
325          <td class="prompt">Protocol</td>
326          <td><base:propertyvalue item="<%=bioAssaySet%>" property="protocol" /></td>
327        </tr>
328        <tr>
329          <td class="prompt">Hardware</td>
330          <td><base:propertyvalue item="<%=bioAssaySet%>" property="hardware" /></td>
331        </tr>
332        <tr>
333          <td class="prompt">Software</td>
334          <td><base:propertyvalue item="<%=bioAssaySet%>" property="software" /></td>
335        </tr>
336        <tr>
337          <td class="prompt">Owner</td>
338          <td><base:propertyvalue item="<%=bioAssaySet%>" property="owner" /></td>
339        </tr>
340        <tr>
341          <td class="prompt">Description</td>
342          <td><%=HTML.niceFormat(bioAssaySet.getDescription())%></td>
343        </tr>
344        </table>
345       
346        <%
347        if (job != null)
348        {
349          %>
350          <h4>Job</h4>
351          <table class="form" cellspacing=0>
352 
353          <tr>
354            <td class="prompt">Job</td>
355            <td><%=Base.getLinkedName(ID, job, !readJob, false)%></td>
356          </tr>
357          <tr valign=top>
358            <td class="prompt">Started</td>
359            <td>
360              <%=dateTimeFormatter.format(job.getStarted())%>
361            </td>
362          </tr>
363          <tr valign=top>
364            <td class="prompt">Ended</td>
365            <td>
366              <%=dateTimeFormatter.format(job.getEnded())%>
367            </td>
368          </tr>
369          <tr valign=top>
370            <td class="prompt">Server</td>
371            <td>
372              <%=HTML.encodeTags(job.getServer())%>
373            </td>
374          </tr>
375          <tr>
376            <td class="prompt">Description</td>
377            <td><%=HTML.niceFormat(job.getDescription())%></td>
378          </tr>
379          </table>
380          <%
381        }
382        %>
383      </td>
384      <td width="50%">
385        <h4>Plugin &amp; parameters</h4>
386        <table class="form" cellspacing=0>
387        <tr>
388          <td class="prompt">Plugin</td>
389          <td><%=Base.getLinkedName(ID, plugin, 
390              !readPlugin, plugin != null && plugin.hasPermission(Permission.WRITE))%></td>
391        </tr>
392        <tr>
393          <td class="prompt">Plugin configuration</td>
394          <td><%=Base.getLinkedName(ID, configuration, !readConfiguration, 
395            configuration != null && configuration.hasPermission(Permission.WRITE))%></td>
396        </tr>
397        <%
398        if (job != null)
399        {
400          for (String name : job.getParameterNames())
401          {
402            StringBuilder sb = new StringBuilder();
403            String displayValue = "";
404            String description = "";
405            try
406            {
407              ParameterInfo pi = job.getParameterInfo(name);
408              if (pi.getLabel() != null) name = HTML.encodeTags(pi.getLabel());
409              description = HTML.encodeTags(pi.getDescription());
410              List<?> values = pi.getValues();
411              int i = 0;
412              for (Object value : values)
413              {
414                if (value != null)
415                {
416                  if (i > 0) sb.append(", ");
417                  i++;
418                  if (value instanceof BasicItem)
419                  {
420                    BasicItem item = (BasicItem)value;
421                    String itemName = "";
422                    if (item instanceof File)
423                    {
424                      itemName = ((File)item).getPath().toString();
425                    }
426                    else if (item instanceof Nameable)
427                    {
428                      itemName = ((Nameable)item).getName();
429                    }
430                    else
431                    {
432                      itemName = item.toString();
433                    }
434                    sb.append(Base.getLink(ID, HTML.encodeTags(itemName), 
435                      item.getType(), item.getId(), item.hasPermission(Permission.WRITE)));
436                  }
437                  else if (value instanceof Date)
438                  {
439                    sb.append(dateFormatter.format((Date)value));
440                  }
441                  else
442                  {
443                    sb.append(HTML.encodeTags(value.toString()));
444                  }
445                }
446              }
447              displayValue = sb.toString();
448            }
449            catch (Throwable ex)
450            {
451              displayValue = "<i>ERROR: "+ex.getMessage()+"</i>";
452            }
453            %>
454            <tr>
455            <td class="prompt"><span title="<%=description%>"><%=name%></span></td>
456              <td>
457                <%=displayValue%>
458              </td>
459            </tr>
460            <%
461          }
462        }
463        %>
464        </table>
465
466      </td>
467      </tr>
468      </table>
469     
470      <%
471      ItemQuery<DerivedBioAssay> bioAssayQuery = bioAssaySet.getBioAssays();
472      bioAssayQuery.include(Include.ALL);
473      bioAssayQuery.order(Orders.asc(Hql.property("name")));
474      ItemResultList<DerivedBioAssay> bioAssays = bioAssayQuery.list(dc);
475      if (bioAssays.size() == 0)
476      {
477        %>
478        <h4>Bioassays</h4>
479        This bioassay set doesn't have any bioassays.
480        <%
481      }
482      else
483      {
484        %>
485        <base:section 
486          id="bioAssays"
487          title="<%="Bioassays (" + bioAssays.size() + ")"%>"
488          context="<%=cc%>"
489          >
490          <tbl:table
491            id="bioAssays"
492            clazz="itemlist"
493            columns="all"
494            >
495          <tbl:columndef 
496            id="name"
497            title="Name"
498          />
499          <tbl:columndef 
500            id="extract"
501            title="Extract"
502          />
503          <tbl:columndef 
504            id="description"
505            title="Description"
506          />
507          <tbl:data>
508            <tbl:columns>
509            </tbl:columns>
510            <tbl:rows>
511            <%
512            for (DerivedBioAssay item : bioAssays)
513            {
514              %>
515              <tbl:row>
516                <tbl:cell column="name"><%=Base.getLinkedName(ID, item, false, true)%></tbl:cell>
517                <tbl:cell column="extract"><base:propertyvalue item="<%=item%>" property="extract" /></tbl:cell>
518                <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
519              </tbl:row>
520              <%
521            }
522            %>
523            </tbl:rows>
524          </tbl:data>
525          </tbl:table>
526        </base:section>
527        <%
528      }
529      %>
530 
531      <%
532      ItemQuery<DerivedBioAssaySet> childQuery = bioAssaySet.getChildren();
533      childQuery.include(Include.ALL);
534      childQuery.order(Orders.asc(Hql.property("name")));
535      ItemResultList<DerivedBioAssaySet> children = childQuery.list(dc);
536      if (children.size() == 0)
537      {
538        %>
539        <h4>Child bioassay sets</h4>
540        This bioassay set doesn't have any child bioassay set.
541        <%
542      }
543      else
544      {
545        %>
546        <base:section 
547          id="children"
548          title="<%="Child bioassay sets (" + children.size() + ")"%>"
549          context="<%=cc%>"
550          >
551          <tbl:table
552            id="children"
553            clazz="itemlist"
554            columns="all"
555            >
556          <tbl:columndef 
557            id="name"
558            title="Name"
559          />
560          <tbl:columndef 
561            id="itemSubtype"
562            title="Type"
563          />
564          <tbl:columndef 
565            id="description"
566            title="Description"
567          />
568          <tbl:data>
569            <tbl:columns>
570            </tbl:columns>
571            <tbl:rows>
572            <%
573            for (DerivedBioAssaySet item : children)
574            {
575              %>
576              <tbl:row>
577                <tbl:cell column="name"><%=Base.getLinkedName(ID, item, false, true)%></tbl:cell>
578                <tbl:cell column="itemSubtype"><base:propertyvalue item="<%=item%>" property="itemSubtype" /></tbl:cell>
579                <tbl:cell column="description"><%=HTML.encodeTags(item.getDescription())%></tbl:cell>
580              </tbl:row>
581              <%
582            }
583            %>
584            </tbl:rows>
585          </tbl:data>
586          </tbl:table>
587        </base:section>
588        <%
589      }
590      %>
591 
592     
593      <jsp:include page="../../common/datafiles/list_files.jsp">
594        <jsp:param name="item_type" value="<%=itemType.name()%>" />
595        <jsp:param name="item_id" value="<%=itemId%>" />
596        <jsp:param name="ID" value="<%=ID%>" />
597      </jsp:include>
598     
599      <jsp:include page="../../common/anytoany/list_anytoany.jsp">
600        <jsp:param name="ID" value="<%=ID%>" />
601        <jsp:param name="item_type" value="<%=itemType.name()%>" />
602        <jsp:param name="item_id" value="<%=itemId%>" />
603        <jsp:param name="title" value="Other items related to this bioassay set" />
604      </jsp:include>
605      </div>
606      </t:tab>
607     
608      <t:tab id="annotations" title="Annotations &amp; parameters" 
609        tooltip="View annotation values and protocol parameters">
610        <div class="boxed">
611        <jsp:include page="../../common/annotations/list_annotations.jsp">
612          <jsp:param name="item_type" value="<%=itemType.name()%>" />
613          <jsp:param name="item_id" value="<%=itemId%>" />
614          <jsp:param name="ID" value="<%=ID%>" />
615        </jsp:include>
616        </div>
617       
618      </t:tab>
619     
620      <t:tab id="overview" title="Overview" 
621        tooltip="Display a tree overview of related items">
622        <%
623        if ("overview".equals(tab))
624        {
625          %>
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          <%
632        }
633        %>
634      </t:tab>
635      <t:tab id="history" title="Change history" 
636        tooltip="Displays a log of all modifications made to this item"
637        visible="<%=ChangeHistoryUtil.showChangeHistoryTab(sc)%>">
638        <%
639        if ("history".equals(tab))
640        {
641          %>
642          <jsp:include page="../../common/history/frameset.jsp">
643            <jsp:param name="source_type" value="<%=itemType.name()%>" />
644            <jsp:param name="source_id" value="<%=itemId%>" />
645            <jsp:param name="ID" value="<%=ID%>" />
646          </jsp:include>
647          <%
648        }
649        %>
650      </t:tab>
651      </t:tabcontrol>
652
653  </base:body>
654  </base:page>
655  <%
656}
657finally
658{
659  if (dc != null) dc.close();
660}
661
662%>
Note: See TracBrowser for help on using the repository browser.