dependency-tree.html.tmpl 8.47 KB
Newer Older
1
[%# 1.0@bugzilla.org %]
2 3 4 5
[%# 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/
6
  #
7 8 9 10 11 12 13 14 15 16 17 18 19
  # 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>
20
  #                 Ville Skyttä <ville.skytta@iki.fi>
21 22 23
  #                 Myk Melez <myk@mozilla.org>
  #%]

24
[% PROCESS global/variables.none.tmpl %]
25

26
[% filtered_desc = blocked_tree.$bugid.summary FILTER html %]
27 28 29
[% PROCESS global/header.html.tmpl
   title = "Dependency tree for $terms.Bug $bugid"
   h1    = "Dependency tree for <a href=\"show_bug.cgi?id=$bugid\">$terms.Bug $bugid</a>"
30
   h2    = filtered_desc
31 32 33 34 35
%]

[% PROCESS depthControlToolbar %]

[%# Display the tree of bugs that this bug depends on. %]
36 37 38 39 40 41
<h3>
  [% IF hide_resolved %]
    Open [% terms.bugs %]
  [% ELSE %]
    [% terms.Bugs %]
  [% END %] 
42
  that <a href="show_bug.cgi?id=[% bugid %]">[% terms.bug %] [%+ bugid %]</a> 
43
  depends on</h3>
44
[% IF dependson_ids.size > 0 %]
45 46
  (
  [% IF maxdepth -%]Up to [% maxdepth %] level[% "s" IF maxdepth > 1 %] deep | [% END %]
47
  <a href="buglist.cgi?bug_id=[% dependson_ids.join(",") %]">view as [% terms.bug %] list</a>
48 49 50 51 52 53 54 55 56 57
  [% IF canedit && dependson_ids.size > 1 %]
    | <a href="buglist.cgi?bug_id=[% dependson_ids.join(",") %]&amp;tweak=1">change several</a>
  [% END %])
  [% INCLUDE display_tree tree=dependson_tree bug_id=bugid %]
[% ELSE %]
  </h3>
  <p>None</p>
[% END %]

[%# Display the tree of bugs that this bug blocks. %]
58 59 60 61 62 63
<h3>
  [% IF hide_resolved %]
    Open [% terms.bugs %]
  [% ELSE %]
    [% terms.Bugs %]
  [% END %] 
64
  that <a href="show_bug.cgi?id=[% bugid %]">[% terms.bug %] [%+ bugid %]</a> 
65
  blocks</h3>
66
[% IF blocked_ids.size > 0 %]
67 68
  (
  [% IF maxdepth -%]Up to [% maxdepth %] level[% "s" IF maxdepth > 1 %] deep | [% END %]
69
  <a href="buglist.cgi?bug_id=[% blocked_ids.join(",") %]">view as [% terms.bug %] list</a>
70
  [% IF canedit && blocked_ids.size > 1 %]
71
    | <a href="buglist.cgi?bug_id=[% blocked_ids.join(",") %]&amp;tweak=1">change several</a>
72 73 74 75 76 77 78 79 80 81 82 83 84 85
  [% END %])
  [% INCLUDE display_tree tree=blocked_tree bug_id=bugid %]
[% ELSE %]
  </h3>
  <p>None</p>
[% END %]

[% PROCESS depthControlToolbar %]

[%###########################################################################%]
[%# Block to display a tree                                                 #%]
[%###########################################################################%]

[% BLOCK display_tree %]
86
[% tree.$bug_id.seen = 1 %]
87 88 89 90
<ul>
  [% FOREACH dep_id = tree.$bug_id.dependencies %]
    [% dep = tree.$dep_id %]
    <li>
91 92
      [% "<script>document.write('<a href=\"#\" class=\"toggle\" onclick=\"listToggle(event); return false\">[-]</a>')</script>"
         IF dep.dependencies.size > 0 && !dep.seen %]
93 94
      [% isclosed = !dep.open %]
      [% FILTER closed(isclosed) %]
95
      <a href="show_bug.cgi?id=[% dep_id %]">[% dep_id %]
96
        [[% IF dep.milestone %][% dep.milestone FILTER html %], [% END %]
97
        [% dep.assignee_email FILTER html %]] -
98
        [% IF dep.seen %]
99
          <i>This [% terms.bug %] appears elsewhere in this tree.</i></a>
100
        [% ELSE %]
101
          [%+ dep.summary FILTER html %].</a>
102
        [% END %]
103
      [% END %]
104
      [% INCLUDE display_tree bug_id=dep_id
105 106 107 108 109 110
           IF dep.dependencies.size > 0 && !dep.seen %]
    </li>
  [% END %]
</ul>
[% END %]

111
<script type="text/javascript">
112 113 114 115 116
if (typeof Node == 'undefined') {
    /* MSIE doesn't define Node, so provide a compatibility object */
    window.Node = {
        TEXT_NODE: 3
    };
117 118 119 120 121 122 123
}

function toggleDisplay(node)
{
    var display = node.style.display;
    if (display == "none") {
        node.style.display =
124
            ("oldDisplay" in node) ? node.oldDisplay : "block";
125 126 127 128 129 130 131 132 133 134 135
        return true;
    }

    node.oldDisplay = display;
    node.style.display = "none";
    return false;
}

function listToggle(event)
{
    var node = event.target;
136
    if (!node)
137
       node = event.srcElement;
138 139 140 141
    if (node.nodeType == Node.TEXT_NODE)
        node = node.parentNode;
    var toggle = node.nextSibling;
    while (toggle && toggle.tagName != "UL")
142
        toggle = toggle.nextSibling;
143
    if (toggle) {
144
        node.firstChild.data = toggleDisplay(toggle) ? "[-]" : "[+]";
145 146 147
    }
}

148
</script>
149 150 151 152 153 154 155

[% PROCESS global/footer.html.tmpl %]

[%###########################################################################%]
[%# Block for depth control toolbar                                         #%]
[%###########################################################################%]

156 157 158 159 160 161
[% BLOCK depthControlToolbar %]
 <table cellpadding="3" border="0" cellspacing="0" bgcolor="#d0d0d0">
 <tr>
   [%# Hide/show resolved button
       Swaps text depending on the state of hide_resolved %]
   <td align="center">
162
   <form method="get" action="showdependencytree.cgi"
163 164 165
           style="display: inline; margin: 0px;">
     <input name="id" type="hidden" value="[% bugid %]">
     [% IF maxdepth %]
166
       <input name="maxdepth" type="hidden" value="[% maxdepth %]">
167 168
     [% END %]
     <input type="hidden" name="hide_resolved" value="[% hide_resolved ? 0 : 1 %]">
169 170
     <input type="submit" 
            value="[% IF hide_resolved %]Show[% ELSE %]Hide[% END %] Resolved">
171 172 173 174 175 176 177 178 179 180 181 182 183 184 185
   </form>
   </td>

   <td>
     Max Depth:
   </td>

   <td>
     &nbsp;
   </td>

   <td>
   <form method="get" action="showdependencytree.cgi"
         style="display: inline; margin: 0px;">
     [%# set to one form %]
186 187
     <input type="submit" value="&nbsp;1&nbsp;" 
       [% "disabled" IF realdepth < 2 || maxdepth == 1 %]>
188 189 190 191 192 193 194
     <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>
195
   <form method="get" action="showdependencytree.cgi"
196
         style="display: inline; margin: 0px;">
197
     [%# Minus one form
198 199
         Allow subtracting only when realdepth and maxdepth > 1 %]
     <input name="id" type="hidden" value="[% bugid %]">
200 201
     <input name="maxdepth" type="hidden" value="[%
         maxdepth == 1 ? 1
202 203 204
                       : ( maxdepth ? maxdepth - 1 : realdepth - 1 )
     %]">
     <input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
205 206
     <input type="submit" value="&nbsp;&lt;&nbsp;" 
       [% "disabled" IF realdepth < 2 || ( maxdepth && maxdepth < 2 ) %]>
207 208 209 210
   </form>
   </td>

   <td>
211
   <form method="get" action="showdependencytree.cgi"
212 213 214
         style="display: inline; margin: 0px;">
     [%# Limit entry form: the button can not do anything when total depth
         is less than two, so disable it %]
215
     <input name="maxdepth" size="4" maxlength="4" value="[%
216
         maxdepth > 0 && maxdepth <= realdepth ? maxdepth : ""
217 218 219 220
     %]">
     <input name="id" type="hidden" value="[% bugid %]">
     <input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
     <noscript>
221
       <input type="submit" value="Change" [% "disabled" IF realdepth < 2 %]>
222 223 224 225 226
     </noscript>
   </form>
   </td>

   <td>
227
   <form method="get" action="showdependencytree.cgi"
228
         style="display: inline; margin: 0px;">
229
     [%# plus one form
230 231 232 233 234 235
         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 %]">
236 237 238
     <input type="submit" value="&nbsp;&gt;&nbsp;" 
        [% "disabled" IF realdepth < 2 || !maxdepth || maxdepth >= realdepth %]
    %]>
239 240 241 242
   </form>
   </td>

   <td>
243
   <form method="get" action="showdependencytree.cgi"
244 245 246 247
         style="display: inline; margin: 0px;">
     [%# Unlimited button %]
     <input name="id" type="hidden" value="[% bugid %]">
     <input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
248
     <input type="submit" value="&nbsp;Unlimited&nbsp;"
249
       [% "disabled" IF maxdepth == 0 || maxdepth == realdepth %]>
250 251 252 253
   </form>
   </td>
 </tr>
</table>
254

255
[% END %]