259 lines
9.4 KiB
Cheetah
259 lines
9.4 KiB
Cheetah
[%# The contents of this file are subject to the Mozilla Public
|
|
# License Version 1.1 (the "License"); you may not use this file
|
|
# except in compliance with the License. You may obtain a copy of
|
|
# the License at http://www.mozilla.org/MPL/
|
|
#
|
|
# Software distributed under the License is distributed on an "AS
|
|
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
# implied. See the License for the specific language governing
|
|
# rights and limitations under the License.
|
|
#
|
|
# The Original Code is the Bugzilla Bug Tracking System.
|
|
#
|
|
# The Initial Developer of the Original Code is Netscape Communications
|
|
# Corporation. Portions created by Netscape are
|
|
# Copyright (C) 1998 Netscape Communications Corporation. All
|
|
# Rights Reserved.
|
|
#
|
|
# Contributor(s): Tobias Burnus <burnus@net-b.de>
|
|
# Ville Skyttä <ville.skytta@iki.fi>
|
|
# Myk Melez <myk@mozilla.org>
|
|
# André Batosti <batosti@async.com.br>
|
|
#%]
|
|
|
|
[% filtered_desc = blocked_tree.$bugid.short_desc FILTER html %]
|
|
[% PROCESS global/header.html.tmpl
|
|
title = "Dependency tree for $terms.Bug " _ bugid
|
|
header = "Dependency tree for $terms.Bug " _ "<a href=\"show_bug.cgi?id=$bugid\">$bugid</a>"
|
|
javascript_urls = ["js/expanding-tree.js"]
|
|
style_urls = ["skins/standard/dependency-tree.css"]
|
|
subheader = filtered_desc
|
|
doc_section = "hintsandtips.html#dependencytree"
|
|
%]
|
|
|
|
[% PROCESS depthControlToolbar %]
|
|
|
|
[% INCLUDE tree_section ids=dependson_ids type=1 %]
|
|
|
|
[% INCLUDE tree_section ids=blocked_ids type=2 %]
|
|
|
|
[% PROCESS depthControlToolbar %]
|
|
|
|
[% PROCESS global/footer.html.tmpl %]
|
|
|
|
[%###########################################################################%]
|
|
[%# Tree-drawing blocks #%]
|
|
[%###########################################################################%]
|
|
|
|
[% BLOCK tree_section %]
|
|
[%# INTERFACE
|
|
# - ids: a list of bug IDs to be displayed as children
|
|
# - type: the type of tree. 1 = depends on, 2 = blockeds
|
|
# GLOBALS
|
|
# - seen: Maintains a global hash of bugs that have been displayed
|
|
#%]
|
|
[% global.seen = {} %]
|
|
[%# Display the tree of bugs that this bug depends on. %]
|
|
<h3>
|
|
<a href="show_bug.cgi?id=[% bugid %]">[% terms.Bug %] [%+ bugid %]</a>
|
|
[% IF type == 1 %]
|
|
[% tree_name = "dependson_tree" %]
|
|
[% IF ids.size %]
|
|
depends on
|
|
[% ELSE %]
|
|
does not depend on any [% terms.bugs %].
|
|
[% END %]
|
|
[% ELSIF type == 2 %]
|
|
[% tree_name = "blocked_tree" %]
|
|
[% IF ids.size %]
|
|
blocks
|
|
[% ELSE %]
|
|
does not block any [% terms.bugs %].
|
|
[% END %]
|
|
[% END %]
|
|
[% IF ids.size %]
|
|
[%+ (ids.size == 1) ? "one" : ids.size %]
|
|
[%+ IF hide_resolved %]open[% END %]
|
|
[%+ (ids.size == 1) ? terms.bug : terms.bugs %]:
|
|
[% END %]
|
|
</h3>
|
|
[% IF ids.size %]
|
|
([% IF maxdepth -%]Up to [% maxdepth %] level[% "s" IF maxdepth > 1 %] deep | [% END -%]
|
|
<a href="buglist.cgi?bug_id=[% ids.join(",") %]&bug_id_type=anyexact">view as [% terms.bug %] list</a>
|
|
[% IF user.in_group('editbugs') && ids.size > 1 %]
|
|
| <a href="buglist.cgi?bug_id=[% ids.join(",") %]&tweak=1">change several</a>
|
|
[% END %])
|
|
<ul class="tree">
|
|
[% INCLUDE display_tree tree=$tree_name %]
|
|
</ul>
|
|
[% END %]
|
|
[% END %]
|
|
|
|
|
|
[% BLOCK display_tree %]
|
|
[%# INTERFACE
|
|
# - bugid: the ID of the bug being displayed
|
|
# - tree: a hash of bug objects and of bug dependencies
|
|
#%]
|
|
[% bug = tree.$bugid %]
|
|
<li>
|
|
[%- INCLUDE bullet bugid=bugid tree=tree -%]
|
|
<span class="summ[% "_deep" IF tree.dependencies.$bugid.size %]"
|
|
id="[% bugid FILTER html %]"
|
|
[% IF global.seen.$bugid %]
|
|
onMouseover="duplicatedover('[% bugid FILTER html %]')"
|
|
onMouseout="duplicatedout('[% bugid FILTER html %]')"
|
|
[% END %]>
|
|
[%- INCLUDE buglink bug=bug bugid=bugid %]
|
|
</span>
|
|
[% IF global.seen.$bugid %]
|
|
<b><a title="Already displayed above; click to locate"
|
|
onclick="duplicated('[% bugid FILTER html %]')"
|
|
href="#b[% bugid %]">(*)</a></b>
|
|
[% ELSIF tree.dependencies.$bugid.size %]
|
|
<ul>
|
|
[% FOREACH depid = tree.dependencies.$bugid %]
|
|
[% INCLUDE display_tree bugid=depid %]
|
|
[% END %]
|
|
</ul>
|
|
[% END %]
|
|
</li>
|
|
[% global.seen.$bugid = 1 %]
|
|
[% END %]
|
|
|
|
[% BLOCK bullet %]
|
|
[% IF tree.dependencies.$bugid.size && ! global.seen.$bugid %]
|
|
[% extra_class = " b_open" %]
|
|
[% extra_args = 'onclick="return doToggle(this, event)"' %]
|
|
[% END %]
|
|
<a name="b[% bugid %]"
|
|
class="b [%+ extra_class FILTER none %]"
|
|
title="Click to expand or contract this portion of the tree. Hold down the Ctrl key while clicking to expand or contract all subtrees."
|
|
[% extra_args FILTER none %]> </a>
|
|
[% END %]
|
|
|
|
[% BLOCK buglink %]
|
|
[% FILTER bug_link(bugid) %]
|
|
<b>[%- bugid %]:</b>
|
|
[%+ bug.short_desc FILTER html %]
|
|
[% END %]
|
|
<a href="showdependencytree.cgi?id=[% bugid FILTER url_quote %]"
|
|
class="tree_link">
|
|
<img src="skins/standard/dependency-tree/tree.png"
|
|
title="See dependency tree for [% terms.bug %] [%+ bugid FILTER html %]">
|
|
</a>
|
|
[% END %]
|
|
|
|
[% BLOCK buginfo %]
|
|
[% bug.bug_status_obj.name FILTER html -%] [%+ bug.resolution_obj.name FILTER html IF bug.resolution %];
|
|
[%-%] assigned to [% bug.assigned_to.login FILTER email FILTER html %]
|
|
[%-%][% "; Target: " _ bug.target_milestone_obj.name FILTER html IF bug.target_milestone %]
|
|
[% END %]
|
|
|
|
[%###########################################################################%]
|
|
[%# Block for depth control toolbar #%]
|
|
[%###########################################################################%]
|
|
|
|
[% BLOCK depthControlToolbar %]
|
|
<table cellpadding="3" border="0" cellspacing="0" bgcolor="#e0e0e0">
|
|
<tr>
|
|
[%# Hide/show resolved button
|
|
Swaps text depending on the state of hide_resolved %]
|
|
<td align="center">
|
|
<form method="get" action="showdependencytree.cgi"
|
|
style="display: inline; margin: 0px;">
|
|
<input name="id" type="hidden" value="[% bugid %]" />
|
|
[% IF maxdepth %]
|
|
<input name="maxdepth" type="hidden" value="[% maxdepth %]" />
|
|
[% END %]
|
|
<input type="hidden" name="hide_resolved" value="[% hide_resolved ? 0 : 1 %]" />
|
|
<input type="submit" id="toggle_visibility"
|
|
value="[% IF hide_resolved %]Show[% ELSE %]Hide[% END %] Resolved" />
|
|
</form>
|
|
</td>
|
|
|
|
<td>
|
|
Max Depth:
|
|
</td>
|
|
|
|
<td>
|
|
|
|
</td>
|
|
|
|
<td>
|
|
<form method="get" action="showdependencytree.cgi"
|
|
style="display: inline; margin: 0px;">
|
|
[%# set to one form %]
|
|
<input type="submit" id="change_maxdepth"
|
|
value=" 1 "
|
|
[% "disabled" IF realdepth < 2 || maxdepth == 1 %] />
|
|
<input name="id" type="hidden" value="[% bugid %]" />
|
|
<input name="maxdepth" type="hidden" value="1" />
|
|
<input name="hide_resolved" type="hidden" value="[% hide_resolved %]" />
|
|
</form>
|
|
</td>
|
|
|
|
<td>
|
|
<form method="get" action="showdependencytree.cgi"
|
|
style="display: inline; margin: 0px;">
|
|
[%# Minus one form
|
|
Allow subtracting only when realdepth and maxdepth > 1 %]
|
|
<input name="id" type="hidden" value="[% bugid %]" />
|
|
<input name="maxdepth" type="hidden" value="[%
|
|
maxdepth == 1 ? 1
|
|
: ( maxdepth ? maxdepth - 1 : realdepth - 1 )
|
|
%]" />
|
|
<input name="hide_resolved" type="hidden" value="[% hide_resolved %]" />
|
|
<input type="submit" id="decrease_depth" value=" < "
|
|
[% "disabled" IF realdepth < 2 || ( maxdepth && maxdepth < 2 ) %] />
|
|
</form>
|
|
</td>
|
|
|
|
<td>
|
|
<form method="get" action="showdependencytree.cgi"
|
|
style="display: inline; margin: 0px;">
|
|
[%# Limit entry form: the button can not do anything when total depth
|
|
is less than two, so disable it %]
|
|
<input name="maxdepth" size="4" maxlength="4" value="[%
|
|
maxdepth > 0 && maxdepth <= realdepth ? maxdepth : ""
|
|
%]" />
|
|
<input name="id" type="hidden" value="[% bugid %]" />
|
|
<input name="hide_resolved" type="hidden" value="[% hide_resolved %]" />
|
|
<noscript>
|
|
<input type="submit" id="change_depth" value="Change"
|
|
[% "disabled" IF realdepth < 2 %] />
|
|
</noscript>
|
|
</form>
|
|
</td>
|
|
|
|
<td>
|
|
<form method="get" action="showdependencytree.cgi"
|
|
style="display: inline; margin: 0px;">
|
|
[%# plus one form
|
|
Disable button if total depth < 2, or if depth set to unlimited %]
|
|
<input name="id" type="hidden" value="[% bugid %]" />
|
|
[% IF maxdepth %]
|
|
<input name="maxdepth" type="hidden" value="[% maxdepth + 1 %]" />
|
|
[% END %]
|
|
<input name="hide_resolved" type="hidden" value="[% hide_resolved %]" />
|
|
<input type="submit" id="increase_depth" value=" > "
|
|
[% "disabled" IF realdepth < 2 || !maxdepth || maxdepth >= realdepth %] />
|
|
</form>
|
|
</td>
|
|
|
|
<td>
|
|
<form method="get" action="showdependencytree.cgi"
|
|
style="display: inline; margin: 0px;">
|
|
[%# Unlimited button %]
|
|
<input name="id" type="hidden" value="[% bugid %]" />
|
|
<input name="hide_resolved" type="hidden" value="[% hide_resolved %]" />
|
|
<input type="submit" id="remove_limit"
|
|
value=" Unlimited "
|
|
[% "disabled" IF maxdepth == 0 || maxdepth == realdepth %] />
|
|
</form>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
[% END %]
|