1[%# This Source Code Form is subject to the terms of the Mozilla Public 2 # License, v. 2.0. If a copy of the MPL was not distributed with this 3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. 4 # 5 # This Source Code Form is "Incompatible With Secondary Licenses", as 6 # defined by the Mozilla Public License, v. 2.0. 7 #%] 8 9[% filtered_desc = blocked_tree.$bugid.short_desc FILTER html %] 10[% PROCESS global/header.html.tmpl 11 title = "$terms.Bug $bugid の依存ツリー" 12 header = "<a href=\"show_bug.cgi?id=$bugid\">$terms.Bug $bugid</a> の依存ツリー" 13 javascript_urls = ["js/expanding-tree.js"] 14 style_urls = ['skins/standard/bug.css'] 15 subheader = filtered_desc 16 doc_section = "using/understanding.html" 17%] 18 19[% PROCESS depthControlToolbar %] 20 21[% INCLUDE tree_section ids=dependson_ids type=1 %] 22 23[% INCLUDE tree_section ids=blocked_ids type=2 %] 24 25[% PROCESS depthControlToolbar %] 26 27[% PROCESS global/footer.html.tmpl %] 28 29[%###########################################################################%] 30[%# Tree-drawing blocks #%] 31[%###########################################################################%] 32 33[% BLOCK tree_section %] 34 [%# INTERFACE 35 # - ids: a list of bug IDs to be displayed as children 36 # - type: the type of tree. 1 = depends on, 2 = blockeds 37 # GLOBALS 38 # - seen: Maintains a global hash of bugs that have been displayed 39 #%] 40 [% global.seen = {} %] 41 [%# Display the tree of bugs that this bug depends on. %] 42 <h3> 43 <a href="show_bug.cgi?id=[% bugid %]">[% terms.Bug %] [%+ bugid %]</a> 44 [% IF type == 1 %] 45 [% tree_name = "dependson_tree" %] 46 [% IF ids.size %] 47 の依存先は 48 [% ELSE %] 49 はどの [% '活動中の' IF hide_resolved %][% terms.bugs %] にも依存しません。 50 [% END %] 51 [% ELSIF type == 2 %] 52 [% tree_name = "blocked_tree" %] 53 [% IF ids.size %] 54 の妨害先は 55 [% ELSE %] 56 はどの [% '活動中の' IF hide_resolved %][% terms.bugs %] も妨害しません。 57 [% END %] 58 [% END %] 59 [% IF ids.size %] 60 [%+ IF hide_resolved %]閉じられていない[% END %] 61 [%+ (ids.size == 1) ? "1" : ids.size %] 62 [%+ (ids.size == 1) ? terms.bug : terms.bugs %]: 63 [% END %] 64 </h3> 65 [% IF ids.size %] 66 [%# 27 chars is the length of buglist.cgi?tweak=&bug_id=" %] 67 [% use_post = (ids.join(",").length > constants.CGI_URI_LIMIT - 27 ) ? 1 : 0 %] 68 [% IF use_post %] 69 <form action="buglist.cgi" method="post"> 70 <input type="hidden" name="bug_id" value="[% ids.join(",") %]"> 71 [% END %] 72 73 [% IF maxdepth -%]最大 [% maxdepth %] 階層 | [% END -%] 74 [% IF use_post %] 75 <button>[% terms.bug %] リストとしてみる</button> 76 [% IF user.in_group('editbugs') && ids.size > 1 %] 77 | <button type="submit" name="tweak" value="1">一度に変更する</button> 78 [% END %] 79 </form> 80 [% ELSE %] 81 <a href="buglist.cgi?bug_id=[% ids.join(",") %]">[% terms.bug %] リストとしてみる</a> 82 [% IF user.in_group('editbugs') && ids.size > 1 %] 83 | <a href="buglist.cgi?bug_id=[% ids.join(",") %]&tweak=1">一度に変更する</a> 84 [% END %] 85 [% END %] 86 87 <ul class="tree"> 88 [% INCLUDE display_tree tree=$tree_name %] 89 </ul> 90 [% END %] 91[% END %] 92 93 94[% BLOCK display_tree %] 95 [%# INTERFACE 96 # - bugid: the ID of the bug being displayed 97 # - tree: a hash of bug objects and of bug dependencies 98 #%] 99 [% bug = tree.$bugid %] 100 <li> 101 [%- INCLUDE bullet bugid=bugid tree=tree -%] 102 <span class="summ[% "_deep" IF tree.dependencies.$bugid.size %]" 103 id="[% bugid FILTER html %]" 104 [% IF global.seen.$bugid %] 105 onMouseover="duplicatedover('[% bugid FILTER html %]')" 106 onMouseout="duplicatedout('[% bugid FILTER html %]')" 107 [% END %]> 108 [%- INCLUDE buglink bug=bug bugid=bugid %] 109 </span> 110 [% IF global.seen.$bugid %] 111 <b><a title="すでに上に表示されています; クリックで飛びます" 112 onclick="duplicated('[% bugid FILTER html %]')" 113 href="#b[% bugid %]">(*)</a></b> 114 [% ELSIF tree.dependencies.$bugid.size %] 115 <ul> 116 [% FOREACH depid = tree.dependencies.$bugid %] 117 [% INCLUDE display_tree bugid=depid %] 118 [% END %] 119 </ul> 120 [% END %] 121 </li> 122 [% global.seen.$bugid = 1 %] 123[% END %] 124 125[% BLOCK bullet %] 126 [% IF tree.dependencies.$bugid.size && ! global.seen.$bugid %] 127 [% extra_class = " b_open" %] 128 [% extra_args = 'onclick="return doToggle(this, event)"' %] 129 [% END %] 130 <a id="b[% bugid %]" 131 class="b [%+ extra_class FILTER none %]" 132 title="ツリーのこの部分をクリックすると閉じたり開いたりします。クリックする時に Ctrl キーを同時に押すと全てのサブツリーを同時に開いたり閉じたりします。" 133 [% extra_args FILTER none %]> </a> 134[% END %] 135 136[% BLOCK buglink %] 137 [% isclosed = !bug.isopened %] 138 [% FILTER closed(isclosed) -%] 139 <a title="[% INCLUDE buginfo bug=bug %]" 140 href="show_bug.cgi?id=[% bugid %]"> 141 <b>[%- bugid %]:</b> 142 <span class="summ_text">[%+ bug.short_desc FILTER html %]</span> 143 <span class="summ_info">[[% INCLUDE buginfo %]]</span> 144 </a> 145 <a href="showdependencytree.cgi?id=[% bugid FILTER uri %]" 146 class="tree_link"> 147 <img src="skins/standard/dependency-tree/tree.png" 148 title="[% terms.bug %] [%+ bugid FILTER html %] の依存ツリーを見る"> 149 </a> 150 [% END %] 151[% END %] 152 153[% BLOCK buginfo %] 154 [% display_value("bug_status", bug.bug_status) FILTER html -%] 155 [%- IF bug.resolution %] [%+ display_value("resolution", bug.resolution) FILTER html %][% END %]; 156 [%-%] 担当者 [% bug.assigned_to.login FILTER email FILTER html %] 157 [% IF Param("usetargetmilestone") AND bug.target_milestone %] 158 [%-%]; ターゲット: [% bug.target_milestone FILTER html %] 159 [% END %] 160[% END %] 161 162[%###########################################################################%] 163[%# Block for depth control toolbar #%] 164[%###########################################################################%] 165 166[% BLOCK depthControlToolbar %] 167 <table class="dependency_tree_controls"> 168 <tr> 169 [%# Hide/show resolved button 170 Swaps text depending on the state of hide_resolved %] 171 <td> 172 <form method="get" action="showdependencytree.cgi"> 173 <input name="id" type="hidden" value="[% bugid %]"> 174 [% IF maxdepth %] 175 <input name="maxdepth" type="hidden" value="[% maxdepth %]"> 176 [% END %] 177 <input type="hidden" name="hide_resolved" value="[% hide_resolved ? 0 : 1 %]"> 178 <input type="submit" id="toggle_visibility" 179 value="解決済みを[% IF hide_resolved %]表示[% ELSE %]非表示[% END %]"> 180 </form> 181 </td> 182 183 <td> 184 最大階層: 185 </td> 186 187 <td> 188 189 </td> 190 191 <td> 192 <form method="get" action="showdependencytree.cgi"> 193 [%# set to one form %] 194 <input type="submit" id="change_maxdepth" value="1" 195 [% "disabled" IF realdepth < 2 || maxdepth == 1 %]> 196 <input name="id" type="hidden" value="[% bugid %]"> 197 <input name="maxdepth" type="hidden" value="1"> 198 <input name="hide_resolved" type="hidden" value="[% hide_resolved %]"> 199 </form> 200 </td> 201 202 <td> 203 <form method="get" action="showdependencytree.cgi"> 204 [%# Minus one form 205 Allow subtracting only when realdepth and maxdepth > 1 %] 206 <input name="id" type="hidden" value="[% bugid %]"> 207 <input name="maxdepth" type="hidden" value="[% 208 maxdepth == 1 ? 1 209 : ( maxdepth ? maxdepth - 1 : realdepth - 1 ) 210 %]"> 211 <input name="hide_resolved" type="hidden" value="[% hide_resolved %]"> 212 <input type="submit" id="decrease_depth" value="<" 213 [% "disabled" IF realdepth < 2 || ( maxdepth && maxdepth < 2 ) %]> 214 </form> 215 </td> 216 217 <td> 218 <form method="get" action="showdependencytree.cgi"> 219 [%# Limit entry form: the button can not do anything when total depth 220 is less than two, so disable it %] 221 <input name="maxdepth" size="4" maxlength="4" value="[% 222 maxdepth > 0 && maxdepth <= realdepth ? maxdepth : "" 223 %]"> 224 <input name="id" type="hidden" value="[% bugid %]"> 225 <input name="hide_resolved" type="hidden" value="[% hide_resolved %]"> 226 <noscript> 227 <input type="submit" id="change_depth" value="変更" 228 [% "disabled" IF realdepth < 2 %]> 229 </noscript> 230 </form> 231 </td> 232 233 <td> 234 <form method="get" action="showdependencytree.cgi"> 235 [%# plus one form 236 Disable button if total depth < 2, or if depth set to unlimited %] 237 <input name="id" type="hidden" value="[% bugid %]"> 238 [% IF maxdepth %] 239 <input name="maxdepth" type="hidden" value="[% maxdepth + 1 %]"> 240 [% END %] 241 <input name="hide_resolved" type="hidden" value="[% hide_resolved %]"> 242 <input type="submit" id="increase_depth" value=">" 243 [% "disabled" IF realdepth < 2 || !maxdepth || maxdepth >= realdepth %]> 244 </form> 245 </td> 246 247 <td> 248 <form method="get" action="showdependencytree.cgi"> 249 [%# Unlimited button %] 250 <input name="id" type="hidden" value="[% bugid %]"> 251 <input name="hide_resolved" type="hidden" value="[% hide_resolved %]"> 252 <input type="submit" id="remove_limit" 253 value="無制限" 254 [% "disabled" IF maxdepth == 0 || maxdepth == realdepth %]> 255 </form> 256 </td> 257 </tr> 258</table> 259 260[% END %] 261