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[% PROCESS bug/time.html.tmpl %] 10 11<script type="text/javascript"> 12<!-- 13[% IF user.is_timetracker %] 14 var fRemainingTime = [% bug.remaining_time %]; // holds the original value 15 function adjustRemainingTime() { 16 // subtracts time spent from remaining time 17 var new_time; 18 19 // prevent negative values if work_time > fRemainingTime 20 new_time = 21 Math.max(fRemainingTime - document.changeform.work_time.value, 0.0); 22 // get upto 2 decimal places 23 document.changeform.remaining_time.value = 24 Math.round(new_time * 100)/100; 25 } 26 27 function updateRemainingTime() { 28 // if the remaining time is changed manually, update fRemainingTime 29 fRemainingTime = document.changeform.remaining_time.value; 30 } 31[% END %] 32 33[% IF user.id %] 34 /* Index all classifications so we can keep track of the classification 35 * for the selected product, which could control field visibility. 36 */ 37 var all_classifications = new Array([% bug.choices.product.size %]); 38 [%- FOREACH product = bug.choices.product %] 39 all_classifications['[% product.name FILTER js %]'] = ' 40 [%- product.classification.name FILTER js %]'; 41 [%- END %] 42[% END %] 43//--> 44</script> 45 46<form name="changeform" id="changeform" method="post" action="process_bug.cgi"> 47 48 <input type="hidden" name="delta_ts" value="[% bug.delta_ts %]"> 49 <input type="hidden" name="longdesclength" value="[% bug.comments.size %]"> 50 <input type="hidden" name="id" value="[% bug.bug_id %]"> 51 <input type="hidden" name="token" value="[% issue_hash_token([bug.id, bug.delta_ts]) FILTER html %]"> 52 53 [% PROCESS section_title %] 54 <table class="edit_form"> 55 <tr> 56 [%# 1st Column %] 57 <td id="bz_show_bug_column_1" class="bz_show_bug_column"> 58 <table> 59 [%# *** ID, product, component, status, resolution, Hardware, and OS *** %] 60 [% PROCESS section_status %] 61 62 [% PROCESS section_spacer %] 63 64 [% PROCESS section_details1 %] 65 66 [% PROCESS section_spacer %] 67 68 [%# *** severity, priority, version and milestone *** %] 69 [% PROCESS section_details2 %] 70 71 [%# *** assigned to and qa contact *** %] 72 [% PROCESS section_people %] 73 74 [% PROCESS section_spacer %] 75 76 [% PROCESS section_url_keyword_whiteboard %] 77 78 [% PROCESS section_spacer %] 79 80 [%# *** Dependencies and duplicates *** %] 81 [% PROCESS section_duplicates %] 82 83 [% PROCESS section_dependson_blocks %] 84 85 </table> 86 </td> 87 <td> 88 <div class="bz_column_spacer"> </div> 89 </td> 90 [%# 2nd Column %] 91 <td id="bz_show_bug_column_2" class="bz_show_bug_column"> 92 <table cellpadding="3" cellspacing="1"> 93 [%# *** Reported and modified dates *** %] 94 [% PROCESS section_dates %] 95 96 [% PROCESS section_cclist %] 97 98 [% PROCESS section_spacer %] 99 100 [% PROCESS section_see_also %] 101 102 [% PROCESS section_customfields %] 103 104 [% PROCESS section_spacer %] 105 106 [% Hook.process("after_custom_fields") %] 107 108 [% PROCESS section_flags %] 109 110 </table> 111 </td> 112 </tr> 113 <tr> 114 <td colspan="3"> 115 <hr id="bz_top_half_spacer"> 116 </td> 117 </tr> 118 </table> 119 120 <table id="bz_big_form_parts" cellspacing="0" cellpadding="0"><tr> 121 <td> 122 [% IF user.is_timetracker %] 123 [% PROCESS section_timetracking %] 124 [% END %] 125 126 [%# *** Attachments *** %] 127 128 [% PROCESS attachment/list.html.tmpl 129 attachments = bug.attachments 130 bugid = bug.bug_id 131 num_attachment_flag_types = bug.num_attachment_flag_types 132 show_attachment_flags = bug.show_attachment_flags 133 %] 134 135 [% IF user.settings.comment_box_position.value == 'before_comments' %] 136 [% PROCESS comment_box %] 137 [% END %] 138 </td> 139 <td> 140 [% PROCESS section_restrict_visibility %] 141 </td> 142 </tr></table> 143 144 [%# *** Additional Comments *** %] 145 <div id="comments"> 146 [% PROCESS bug/comments.html.tmpl 147 comments = bug.comments 148 mode = user.id ? "edit" : "show" 149 %] 150 </div> 151 152 [% IF user.settings.comment_box_position.value == 'after_comments' %] 153 <hr> 154 [% PROCESS comment_box %] 155 [% END %] 156 157</form> 158 159[%############################################################################%] 160[%# Block for the Title (alias and short desc) #%] 161[%############################################################################%] 162 163[% BLOCK section_title %] 164 [%# That's the main table, which contains all editable fields. %] 165 <div class="bz_alias_short_desc_container edit_form"> 166 [% PROCESS commit_button id="_top"%] 167 <a href="show_bug.cgi?id=[% bug.bug_id %]"> 168 [%-# %]<b>[% terms.Bug %] [% bug.bug_id FILTER html %]</b> 169 [%-# %]</a> –<span id="summary_alias_container" class="bz_default_hidden"> 170 [% IF bug.alias != "" %] 171 (<span id="alias_nonedit_display">[% bug.alias FILTER html %]</span>) 172 [% END %] 173 <span id="short_desc_nonedit_display">[% bug.short_desc FILTER quoteUrls(bug) %]</span> 174 [% IF bug.check_can_change_field('short_desc', 0, 1) || 175 bug.check_can_change_field('alias', 0, 1) %] 176 <small class="editme">(<a href="#" id="editme_action">bearbeiten</a>)</small> 177 [% END %] 178 </span> 179 180 181 <div id="summary_alias_input"> 182 <table id="summary"> 183 <tr> 184 [% IF bug.check_can_change_field('alias', 0, 1) %] 185 [% INCLUDE "bug/field-label.html.tmpl" 186 field = bug_fields.alias 187 editable = 1 188 %] 189 <td> 190 [% ELSIF bug.alias %] 191 <td colspan="2">( 192 [% ELSE %] 193 <td colspan="2"> 194 [% END %] 195 [% PROCESS input inputname => "alias" 196 size => "20" 197 maxlength => "20" 198 no_td => 1 199 %][% ")" IF NOT bug.check_can_change_field('alias', 0, 1) 200 && bug.alias %] 201 </td> 202 </tr> 203 [%# *** Summary *** %] 204 <tr> 205 [% INCLUDE "bug/field-label.html.tmpl" 206 field = bug_fields.short_desc 207 editable = 1 208 accesskey = "s" 209 %] 210 <td> 211 [% PROCESS input inputname => "short_desc" size => "80" colspan => 2 212 maxlength => 255 spellcheck => "true" no_td => 1 %] 213 </td> 214 </tr> 215 </table> 216 </div> 217 </div> 218 <script type="text/javascript"> 219 hideAliasAndSummary('[% bug.short_desc FILTER js %]', '[% bug.alias FILTER js %]'); 220 </script> 221[% END %] 222 223[%############################################################################%] 224[%# Block for the first table in the "Details" section #%] 225[%############################################################################%] 226 227[% BLOCK section_details1 %] 228 229 [%#############%] 230 [%# PRODUCT #%] 231 [%#############%] 232 <tr> 233 [% INCLUDE bug/field.html.tmpl 234 bug = bug, field = bug_fields.product, 235 override_legal_values = bug.choices.product 236 desc_url = 'describecomponents.cgi', value = bug.product 237 editable = bug.check_can_change_field('product', 0, 1) %] 238 </tr> 239 240 [%# Classification is here so that it can be used in value controllers 241 # and visibility controllers. It comes after product because 242 # it uses some javascript that depends on the existence of the 243 # product field. 244 #%] 245 <tr class="bz_default_hidden"> 246 [% INCLUDE bug/field.html.tmpl 247 bug = bug field = bug_fields.classification 248 override_legal_values = bug.choices.classification 249 value = bug.classification 250 editable = bug.check_can_change_field('product', 0, 1) %] 251 </tr> 252 [%###############%] 253 [%# Component #%] 254 [%###############%] 255 <tr> 256 [% INCLUDE bug/field.html.tmpl 257 bug = bug, field = bug_fields.component, value = bug.component 258 override_legal_values = bug.choices.component 259 desc_url = "describecomponents.cgi?product=$bug.product" 260 editable = bug.check_can_change_field('component', 0, 1) 261 %] 262 </tr> 263 <tr> 264 [% INCLUDE "bug/field-label.html.tmpl" 265 field = bug_fields.version editable = 1 %] 266 267 [% PROCESS select selname => "version" %] 268 </tr> 269 [%############%] 270 [%# PLATFORM #%] 271 [%############%] 272 <tr> 273 [% INCLUDE "bug/field-label.html.tmpl" 274 field = bug_fields.rep_platform, editable = 1, accesskey = "h" %] 275 <td class="field_value"> 276 [% INCLUDE bug/field.html.tmpl 277 bug = bug, field = bug_fields.rep_platform, 278 no_tds = 1, value = bug.rep_platform 279 editable = bug.check_can_change_field('rep_platform', 0, 1) %] 280 [%+ INCLUDE bug/field.html.tmpl 281 bug = bug, field = bug_fields.op_sys, 282 no_tds = 1, value = bug.op_sys 283 editable = bug.check_can_change_field('op_sys', 0, 1) %] 284 </td> 285 </tr> 286 287 288 289[% END %] 290 291[%############################################################################%] 292[%# Block for the status section #%] 293[%############################################################################%] 294 295[% BLOCK section_status %] 296 <tr> 297 <th class="field_label"> 298 <a href="page.cgi?id=fields.html#bug_status">Status</a>: 299 </th> 300 <td id="bz_field_status"> 301 <span id="static_bug_status"> 302 [% display_value("bug_status", bug.bug_status) FILTER html %] 303 [% IF bug.resolution %] 304 [%+ display_value("resolution", bug.resolution) FILTER html %] 305 [% IF bug.dup_id %] 306 von [% "${terms.bug} ${bug.dup_id}" FILTER bug_link(bug.dup_id) FILTER none %] 307 [% END %] 308 [% END %] 309 [% IF bug.user.canedit || bug.user.isreporter %] 310 (<a href="#add_comment" 311 onclick="window.setTimeout(function() { document.getElementById('bug_status').focus(); }, 10)">bearbeiten</a>) 312 [% END %] 313 </span> 314 </td> 315 </tr> 316[% END %] 317 318[%############################################################################%] 319[%# Block for the second table in the "Details" section #%] 320[%############################################################################%] 321 322[% BLOCK section_details2 %] 323 324 [%###############################################################%] 325 [%# Importance (priority and severity) #%] 326 [%###############################################################%] 327 <tr> 328 <th class="field_label"> 329 <label for="priority" accesskey="i"> 330 <a href="page.cgi?id=fields.html#importance">W<u>i</u>chtigkeit</a></label>: 331 </th> 332 <td> 333 [% INCLUDE bug/field.html.tmpl 334 bug = bug, field = bug_fields.priority, 335 no_tds = 1, value = bug.priority 336 editable = bug.check_can_change_field('priority', 0, 1) %] 337 [%+ INCLUDE bug/field.html.tmpl 338 bug = bug, field = bug_fields.bug_severity, 339 no_tds = 1, value = bug.bug_severity 340 editable = bug.check_can_change_field('bug_severity', 0, 1) %] 341 [% Hook.process('after_importance', 'bug/edit.html.tmpl') %] 342 </td> 343 </tr> 344 345 [% IF Param("usetargetmilestone") && bug.target_milestone %] 346 <tr> 347 <th class="field_label"> 348 <label for="target_milestone"> 349 <a href="page.cgi?id=fields.html#target_milestone"> 350 Ziel-Meilenstein</a></label>: 351 </th> 352 [% PROCESS select selname = "target_milestone" %] 353 </tr> 354 [% END %] 355 356[% END %] 357 358[%############################################################################%] 359[%# Block for the table in the "People" section #%] 360[%############################################################################%] 361 362[% BLOCK section_people %] 363 364 <tr> 365 <th class="field_label"> 366 <a href="page.cgi?id=fields.html#assigned_to">Zuständiger</a>: 367 </th> 368 <td> 369 [% IF bug.check_can_change_field("assigned_to", 0, 1) %] 370 <div id="bz_assignee_edit_container" class="bz_default_hidden"> 371 <span> 372 [% INCLUDE global/user.html.tmpl who = bug.assigned_to %] 373 (<a href="#" id="bz_assignee_edit_action">bearbeiten</a>) 374 [% IF bug.assigned_to.id != user.id %] 375 (<a title="Bearbeitungsverantwortung übernehmen" 376 href="#" id="bz_assignee_take_action">übernehmen</a>) 377 [% END %] 378 </span> 379 </div> 380 <div id="bz_assignee_input"> 381 [% INCLUDE global/userselect.html.tmpl 382 id => "assigned_to" 383 name => "assigned_to" 384 value => bug.assigned_to.login 385 classes => ["bz_userfield"] 386 size => 30 387 %] 388 <br> 389 <input type="checkbox" id="set_default_assignee" name="set_default_assignee" value="1"> 390 <label id="set_default_assignee_label" for="set_default_assignee">Dem 391 Standardzuständigen zuweisen</label> 392 </div> 393 <script type="text/javascript"> 394 hideEditableField('bz_assignee_edit_container', 395 'bz_assignee_input', 396 'bz_assignee_edit_action', 397 'assigned_to', 398 '[% bug.assigned_to.login FILTER js %]' ); 399 hideEditableField('bz_assignee_edit_container', 400 'bz_assignee_input', 401 'bz_assignee_take_action', 402 'assigned_to', 403 '[% bug.assigned_to.login FILTER js %]', 404 '[% user.login FILTER js %]' ); 405 initDefaultCheckbox('assignee'); 406 </script> 407 [% ELSE %] 408 [% INCLUDE global/user.html.tmpl who = bug.assigned_to %] 409 [% END %] 410 </td> 411 </tr> 412 413 [% IF Param('useqacontact') %] 414 <tr> 415 [% INCLUDE "bug/field-label.html.tmpl" 416 field = bug_fields.qa_contact 417 editable = 1 418 accesskey = "q" 419 %] 420 <td> 421 [% IF bug.check_can_change_field("qa_contact", 0, 1) %] 422 <div id="bz_qa_contact_edit_container" class="bz_default_hidden"> 423 <span> 424 [% INCLUDE global/user.html.tmpl who = bug.qa_contact %] 425 (<a href="#" id="bz_qa_contact_edit_action">bearbeiten</a>) 426 [% IF bug.qa_contact.id != user.id %] 427 (<a title="QS-Kontakt-Verantwortung übernehmen" 428 href="#" id="bz_qa_contact_take_action">übernehmen</a>) 429 [% END %] 430 </span> 431 </div> 432 <div id="bz_qa_contact_input"> 433 [% INCLUDE global/userselect.html.tmpl 434 id => "qa_contact" 435 name => "qa_contact" 436 value => bug.qa_contact.login 437 size => 30 438 classes => ["bz_userfield"] 439 emptyok => 1 440 %] 441 <br> 442 <input type="checkbox" id="set_default_qa_contact" name="set_default_qa_contact" value="1"> 443 <label for="set_default_qa_contact" id="set_default_qa_contact_label">Dem 444 Standard-QS-Kontakt zuweisen</label> 445 </div> 446 <script type="text/javascript"> 447 hideEditableField('bz_qa_contact_edit_container', 448 'bz_qa_contact_input', 449 'bz_qa_contact_edit_action', 450 'qa_contact', 451 '[% bug.qa_contact.login FILTER js %]'); 452 hideEditableField('bz_qa_contact_edit_container', 453 'bz_qa_contact_input', 454 'bz_qa_contact_take_action', 455 'qa_contact', 456 '[% bug.qa_contact.login FILTER js %]', 457 '[% user.login FILTER js %]'); 458 initDefaultCheckbox('qa_contact'); 459 </script> 460 [% ELSE %] 461 [% INCLUDE global/user.html.tmpl who = bug.qa_contact %] 462 [% END %] 463 </td> 464 </tr> 465 [% END %] 466 <script type="text/javascript"> 467 assignToDefaultOnChange(['product', 'component'], 468 '[% bug.component_obj.default_assignee.login FILTER js %]', 469 '[% bug.component_obj.default_qa_contact.login FILTER js %]'); 470 </script> 471[% END %] 472 473[%############################################################################%] 474[%# Block for URL Keyword and Whiteboard #%] 475[%############################################################################%] 476[% BLOCK section_url_keyword_whiteboard %] 477 <tr> 478 [% INCLUDE "bug/field-label.html.tmpl" 479 field = bug_fields.bug_file_loc 480 editable = 1 481 accesskey = "u" 482 %] 483 <td> 484 [% IF bug.check_can_change_field("bug_file_loc", 0, 1) %] 485 <span id="bz_url_edit_container" class="bz_default_hidden"> 486 [% IF is_safe_url(bug.bug_file_loc) %] 487 <a href="[% bug.bug_file_loc FILTER html %]" target="_blank" 488 title="[% bug.bug_file_loc FILTER html %]"> 489 [% bug.bug_file_loc FILTER truncate(40) FILTER html %]</a> 490 [% ELSE %] 491 [% bug.bug_file_loc FILTER html %] 492 [% END %] 493 (<a href="#" id="bz_url_edit_action">bearbeiten</a>)</span> 494 [% END %] 495 <span id="bz_url_input_area"> 496 [% url_output = PROCESS input no_td=1 inputname => "bug_file_loc" size => "40" colspan => 2 %] 497 [% IF NOT bug.check_can_change_field("bug_file_loc", 0, 1) 498 AND is_safe_url(bug.bug_file_loc) %] 499 <a href="[% bug.bug_file_loc FILTER html %]">[% url_output FILTER none %]</a> 500 [% ELSE %] 501 [% url_output FILTER none %] 502 [% END %] 503 </span> 504 [% IF bug.check_can_change_field("bug_file_loc", 0, 1) %] 505 <script type="text/javascript"> 506 hideEditableField('bz_url_edit_container', 507 'bz_url_input_area', 508 'bz_url_edit_action', 509 'bug_file_loc', 510 "[% bug.bug_file_loc FILTER js %]"); 511 </script> 512 [% END %] 513 </td> 514 </tr> 515 516 [% IF Param('usestatuswhiteboard') %] 517 <tr> 518 [% INCLUDE "bug/field-label.html.tmpl" 519 field = bug_fields.status_whiteboard 520 editable = 1 521 accesskey = "w" 522 %] 523 [% PROCESS input inputname => "status_whiteboard" size => "40" colspan => 2 %] 524 </tr> 525 [% END %] 526 527 [% IF use_keywords %] 528 <tr> 529 <th class="field_label"> 530 <label for="keywords" accesskey="k"> 531 <a href="describekeywords.cgi">Schlüsselwörter</a></label>: 532 </th> 533 <td class="field_value" colspan="2"> 534 [% INCLUDE bug/field.html.tmpl 535 bug = bug, field = bug_fields.keywords, value = bug.keywords 536 editable = bug.check_can_change_field("keywords", 0, 1), 537 no_tds = 1, possible_values = all_keywords 538 %] 539 </td> 540 </tr> 541 [% END %] 542 543 [% IF user.id %] 544 <tr> 545 [% INCLUDE bug/field.html.tmpl 546 bug = bug, field = bug_fields.tag, value = bug.tags.join(", "), 547 editable = 1, possible_values = user.tags.keys 548 %] 549 </tr> 550 [% END %] 551[% END %] 552 553[%############################################################################%] 554[%# Block for Duplicates #%] 555[%############################################################################%] 556 557[% BLOCK section_duplicates %] 558 [% RETURN UNLESS bug.duplicates.size %] 559 <tr> 560 <th class="field_label"> 561 <label for="duplicates">Duplikate</label>: 562 </th> 563 <td class="field_value" colspan="2"> 564 <span id="duplicates"> 565 [% FOREACH dupe = bug.duplicates %] 566 [% dupe.id FILTER bug_link(dupe, use_alias => 1) FILTER none %][% " " %] 567 [% END %] 568 </span> 569 (<a href="buglist.cgi?bug_id=[% bug.duplicate_ids.join(",") FILTER html %]"> 570 [%-%]als [% terms.bug %]liste zeigen</a>) 571 </td> 572 </tr> 573[% END %] 574 575[%############################################################################%] 576[%# Block for Depends On / Blocks #%] 577[%############################################################################%] 578 579[% BLOCK section_dependson_blocks %] 580 <tr> 581 [% INCLUDE dependencies 582 field = bug_fields.dependson deps = bug.depends_on_obj %] 583 </tr> 584 585 <tr> 586 [% INCLUDE dependencies 587 field = bug_fields.blocked deps = bug.blocks_obj %] 588 </tr> 589 590 <tr> 591 <th> </th> 592 593 <td colspan="2" align="left" id="show_dependency_tree_or_graph"> 594 Zeige Abhängigkeits<a href="showdependencytree.cgi?id=[% bug.bug_id %]&hide_resolved=1">baum</a> 595 596 [% IF Param('webdotbase') %] 597 / <a href="showdependencygraph.cgi?id=[% bug.bug_id %]">-graf</a> 598 [% END %] 599 </td> 600 </tr> 601[% END %] 602 603 604[%############################################################################%] 605[%# Block for Restricting Visibility #%] 606[%############################################################################%] 607 608[% BLOCK section_restrict_visibility %] 609 [% RETURN UNLESS bug.groups.size %] 610 611 <div class="bz_group_visibility_section"> 612 [% inallgroups = 1 %] 613 [% inagroup = 0 %] 614 [% emitted_description = 0 %] 615 616 [% FOREACH group = bug.groups %] 617 [% SET inallgroups = 0 IF NOT group.ingroup %] 618 [% SET inagroup = 1 IF group.ison %] 619 620 [% NEXT IF group.mandatory %] 621 622 [% IF NOT emitted_description %] 623 [% emitted_description = 1 %] 624 <div id="bz_restrict_group_visibility_help"> 625 <b>Nur Personen, die Mitglied <em>aller</em> hier ausgewählter 626 Gruppen sind, können diesen [% terms.bug %] sehen:</b> 627 <p class="instructions"> 628 (Je weniger Sie hier auswählen, um so öffentlicher ist der 629 [%+ terms.bug %].) 630 </p> 631 </div> 632 [% END %] 633 634 [% IF group.ingroup %] 635 <input type="hidden" name="defined_groups" 636 value="[% group.name FILTER html %]"> 637 [% END %] 638 639 <input type="checkbox" value="[% group.name FILTER html %]" 640 name="groups" id="group_[% group.bit %]" 641 [% ' checked="checked"' IF group.ison %] 642 [% ' disabled="disabled"' IF NOT group.ingroup %]> 643 <label for="group_[% group.bit %]"> 644 [%- group.description FILTER html_light %]</label> 645 <br> 646 [% END %] 647 648 [% IF emitted_description %] 649 [% IF NOT inallgroups %] 650 <p class="instructions">Nur Gruppenmitglieder können die Sichtbarkeit 651 eines [% terms.bug_gen %] bezüglich der Gruppe ändern.</p> 652 [% END %] 653 [% END %] 654 655 [% IF inagroup %] 656 <div id="bz_enable_role_visibility_help"> 657 <b>Benutzer mit den hier angegebenen Rollen können diesen 658 [%+ terms.bug %] unabhängig von ihrer Gruppenzugehörigkeit sehen:</b> 659 </div> 660 <div id="bz_enable_role_visibility"> 661 <div> 662 [% user_can_edit_accessible = 663 bug.check_can_change_field("reporter_accessible", 0, 1) 664 %] 665 [% IF user_can_edit_accessible %] 666 <input type="hidden" name="defined_reporter_accessible" value="1"> 667 [% END %] 668 <input type="checkbox" value="1" 669 name="reporter_accessible" id="reporter_accessible" 670 [% " checked" IF bug.reporter_accessible %] 671 [% " disabled=\"disabled\"" UNLESS user_can_edit_accessible %]> 672 <label for="reporter_accessible">Berichterstatter</label> 673 </div> 674 <div> 675 [% user_can_edit_accessible = 676 bug.check_can_change_field("cclist_accessible", 0, 1) 677 %] 678 [% IF user_can_edit_accessible %] 679 <input type="hidden" name="defined_cclist_accessible" value="1"> 680 [% END %] 681 <input type="checkbox" value="1" 682 name="cclist_accessible" id="cclist_accessible" 683 [% " checked" IF bug.cclist_accessible %] 684 [% " disabled=\"disabled\"" UNLESS user_can_edit_accessible %]> 685 <label for="cclist_accessible">CC-Listen-Mitglieder</label> 686 </div> 687 <p class="instructions"> 688 Der Zuständige 689 [% IF (Param('useqacontact')) %] 690 und der QS-Kontakt können 691 [% ELSE %] 692 kann 693 [% END %] 694 den [% terms.bug %] immer sehen, und dieser Abschnitt hat keine 695 Wirkung, solange der [% terms.bug %] nicht auf wenigstens eine 696 Gruppe eingeschränkt ist. 697 </p> 698 </div> 699 [% END %] 700 </div> [%# bz_group_visibility_section %] 701[% END %] 702 703[%############################################################################%] 704[%# Block for Dates #%] 705[%############################################################################%] 706 707[% BLOCK section_dates %] 708 <tr> 709 <th class="field_label"> 710 Berichtet: 711 </th> 712 <td> 713 [% bug.creation_ts FILTER time('%d.%m.%Y, %H:%M %Z') %] von [% INCLUDE global/user.html.tmpl who = bug.reporter %] 714 </td> 715 </tr> 716 717 <tr> 718 <th class="field_label"> 719 Letzte Änderung: 720 </th> 721 <td> 722 [% bug.delta_ts FILTER time('%d.%m.%Y, %H:%M %Z') %] 723 (<a href="show_activity.cgi?id=[% bug.bug_id %]">[%# terms.Bug %]Historie</a>) 724 </td> 725 726 </tr> 727[% END %] 728 729[%############################################################################%] 730[%# Block for CC LIST #%] 731[%############################################################################%] 732[% BLOCK section_cclist %] 733 <tr> 734 <th class="field_label"> 735 <label for="newcc" accesskey="a">CC-Liste:</label> 736 </th> 737 <td> 738 [% IF user.id %] 739 [% IF NOT bug.cc.contains(user.login) %] 740 <input type="checkbox" id="addselfcc" name="addselfcc" 741 [% " checked=\"checked\"" 742 IF user.settings.state_addselfcc.value == 'always' 743 || (!bug.user.has_any_role 744 && user.settings.state_addselfcc.value == 'cc_unless_role') %]> 745 <label for="addselfcc">Füge mich zur CC-Liste hinzu</label> 746 <br> 747 [% END %] 748 [% END %] 749 [% bug.cc.size FILTER html %] Benutzer 750 [% IF user.id %] 751 [% IF bug.cc.contains( user.email ) %] 752 einschließlich Ihnen 753 [% END %] 754 [% END %] 755 [% IF user.id || bug.cc.size %] 756 <span id="cc_edit_area_showhide_container" class="bz_default_hidden"> 757 (<a href="#" id="cc_edit_area_showhide">[% IF user.id %]bearbeiten[% ELSE %]zeigen[% END %]</a>) 758 </span> 759 [% END %] 760 <div id="cc_edit_area"> 761 <br> 762 [% IF user.id %] 763 <div> 764 <div><label for="cc"><b>Hinzufügen</b></label></div> 765 [% INCLUDE global/userselect.html.tmpl 766 id => "newcc" 767 name => "newcc" 768 value => "" 769 size => 30 770 classes => ["bz_userfield"] 771 multiple => 5 772 %] 773 </div> 774 [% END %] 775 [% IF bug.cc.size %] 776 <select id="cc" multiple="multiple" size="5" 777 [% IF bug.user.canedit %]name="cc"[% END %]> 778 [% FOREACH c = bug.cc %] 779 <option value="[% c FILTER email FILTER html %]"> 780 [% c FILTER email FILTER html %]</option> 781 [% END %] 782 </select> 783 [% IF user.id && !bug.user.canedit %] 784 <input type="hidden" name="cc" value="[% user.login FILTER email FILTER html %]"> 785 [% END %] 786 [% IF user.id AND (bug.user.canedit OR bug.cc.contains(user.login)) %] 787 <br> 788 <input type="checkbox" id="removecc" name="removecc"> 789 <label for="removecc"> 790 [% IF bug.user.canedit %] 791 Gewählte CCs entfernen 792 [% ELSE %] 793 Mich von der CC-Liste entfernen 794 [% END %] 795 </label> 796 <br> 797 [% END %] 798 [% END %] 799 </div> 800 [% IF user.id || bug.cc.size %] 801 <script type="text/javascript"> 802 hideEditableField( 'cc_edit_area_showhide_container', 803 'cc_edit_area', 804 'cc_edit_area_showhide', 805 '', 806 ''); 807 </script> 808 [% END %] 809 </td> 810 </tr> 811[% END %] 812 813[%############################################################################%] 814[%# Block for See Also #%] 815[%############################################################################%] 816[% BLOCK section_see_also %] 817 [% IF Param('use_see_also') || bug.see_also.size %] 818 <tr> 819 [% INCLUDE bug/field.html.tmpl 820 field = bug_fields.see_also 821 value = bug.see_also 822 editable = bug.check_can_change_field('see_also', 0, 1) 823 %] 824 </tr> 825 [% END %] 826[% END %] 827 828[%############################################################################%] 829[%# Block for FLAGS #%] 830[%############################################################################%] 831 832[% BLOCK section_flags %] 833 [%# *** Flags *** %] 834 [% show_bug_flags = 0 %] 835 [% bug_flags_set = 0 %] 836 [% show_more_flags = 0 %] 837 [% FOREACH type = bug.flag_types %] 838 [% IF type.flags.size || (user.id && type.is_active && user.can_request_flag(type)) %] 839 [% show_bug_flags = 1 %] 840 [% END %] 841 [% IF user.id && type.is_active && (!type.flags.size || type.is_multiplicable) %] 842 [% show_more_flags = 1 %] 843 [% END %] 844 [% IF type.flags.size %] 845 [% bug_flags_set = 1 %] 846 [% END %] 847 [% LAST IF show_bug_flags && show_more_flags && bug_flags_set %] 848 [% END %] 849 [% IF show_bug_flags %] 850 <tr> 851 <th class="field_label"> 852 <label>Markierungen:</label> 853 </th> 854 <td> 855 [% IF bug.flag_types.size %] 856 [% PROCESS "flag/list.html.tmpl" flag_no_header = 1 857 flag_types = bug.flag_types 858 any_flags_requesteeble = bug.any_flags_requesteeble %] 859 [% END %] 860 [% IF show_more_flags %] 861 <span id="bz_flags_more_container" class="bz_default_hidden"> 862 [% IF !bug_flags_set %]<em>Noch keine Markierungen</em>[% END %] 863 (<a href="#" id="bz_flags_more_action">[% IF bug_flags_set %]mehr [% END %]Markierungen setzen</a>) 864 </span> 865 <script type="text/javascript"> 866 YAHOO.util.Dom.removeClass('bz_flags_more_container', 'bz_default_hidden'); 867 var table = YAHOO.util.Dom.get("flags"); 868 var rows = YAHOO.util.Dom.getElementsByClassName('bz_flag_type', 'tbody', table); 869 for (var i = 0; i < rows.length; i++) { 870 YAHOO.util.Dom.addClass(rows[i], 'bz_default_hidden'); 871 } 872 YAHOO.util.Event.addListener('bz_flags_more_action', 'click', function (e) { 873 YAHOO.util.Dom.addClass('bz_flags_more_container', 'bz_default_hidden'); 874 for (var i = 0; i < rows.length; i++) { 875 YAHOO.util.Dom.removeClass(rows[i], 'bz_default_hidden'); 876 } 877 YAHOO.util.Event.preventDefault(e); 878 }); 879 </script> 880 [% END %] 881 </td> 882 </tr> 883 [% END %] 884[% END %] 885 886[%############################################################################%] 887[%# Block for Custom Fields #%] 888[%############################################################################%] 889 890[% BLOCK section_customfields %] 891[%# *** Custom Fields *** %] 892 [% USE Bugzilla %] 893 [% FOREACH field = Bugzilla.active_custom_fields %] 894 <tr> 895 [% PROCESS bug/field.html.tmpl value = bug.${field.name} 896 editable = bug.check_can_change_field(field.name, 0, 1) 897 value_span = 2 %] 898 </tr> 899 [% IF extra_field_item %] 900 <tr> 901 <th class="field_label">[% extra_field_item.header FILTER none %]</th> 902 <td>[% extra_field_item.data FILTER none %]</td> 903 </tr> 904 [% END %] 905 [% END %] 906[% END %] 907 908[%############################################################################%] 909[%# Block for Section Spacer #%] 910[%############################################################################%] 911 912[% BLOCK section_spacer %] 913 <tr> 914 <td colspan="2" class="bz_section_spacer"></td> 915 </tr> 916[% END %] 917 918 919 920 921[%############################################################################%] 922[%# Block for dependencies #%] 923[%############################################################################%] 924 925[% BLOCK dependencies %] 926 927 [% INCLUDE "bug/field-label.html.tmpl" %] 928 929 <td> 930 <span id="[% field.name FILTER html %]_input_area"> 931 [% IF bug.check_can_change_field(field.name, 0, 1) %] 932 <input name="[% field.name FILTER html %]" 933 id="[% field.name FILTER html %]" class="text_input" 934 value="[% bug.${field.name}.join(', ') FILTER html %]"> 935 [% END %] 936 </span> 937 938 [% FOREACH dep_bug = deps %] 939 [% dep_bug.id FILTER bug_link(dep_bug, use_alias => 1) 940 FILTER none %][% " " %] 941 [% END %] 942 [% IF bug.check_can_change_field(field.name, 0, 1) %] 943 <span id="[% field.name FILTER html %]_edit_container" 944 class="edit_me bz_default_hidden"> 945 (<a href="#" id="[% field.name FILTER html %]_edit_action">bearbeiten</a>) 946 </span> 947 <script type="text/javascript"> 948 hideEditableField('[% field.name FILTER js %]_edit_container', 949 '[% field.name FILTER js %]_input_area', 950 '[% field.name FILTER js %]_edit_action', 951 '[% field.name FILTER js %]', 952 '[% bug.${field.name}.join(', ') FILTER js %]'); 953 </script> 954 [% END %] 955 </td> 956 957[% END %] 958 959[%############################################################################%] 960[%# Block for Time Tracking Group #%] 961[%############################################################################%] 962 963[% BLOCK section_timetracking %] 964 <table class="bz_time_tracking_table"> 965 <tr> 966 [% INCLUDE "bug/field-label.html.tmpl" 967 field = bug_fields.estimated_time, editable = 1 968 %] 969 <th> 970 Akt. Schätzg. (h): 971 </th> 972 [% INCLUDE "bug/field-label.html.tmpl" 973 field = bug_fields.work_time, editable = 1 974 %] 975 [% INCLUDE "bug/field-label.html.tmpl" 976 field = bug_fields.remaining_time, editable = 1 977 %] 978 [% INCLUDE "bug/field-label.html.tmpl" 979 field = bug_fields.percentage_complete, editable = 1 980 %] 981 <th> 982 Fortschritt (h): 983 </th> 984 [% INCLUDE "bug/field-label.html.tmpl" 985 field = bug_fields.deadline, editable = 1 986 %] 987 </tr> 988 <tr> 989 <td> 990 <input name="estimated_time" id="estimated_time" 991 value="[% PROCESS formattimeunit 992 time_unit=bug.estimated_time %]" 993 size="6" maxlength="6"> 994 </td> 995 <td> 996 [% PROCESS formattimeunit 997 time_unit=(bug.actual_time + bug.remaining_time) %] 998 </td> 999 <td> 1000 [% PROCESS formattimeunit time_unit=bug.actual_time %] + 1001 <input name="work_time" id="work_time" 1002 value="0" size="3" maxlength="6" 1003 onchange="adjustRemainingTime();"> 1004 </td> 1005 <td> 1006 <input name="remaining_time" id="remaining_time" 1007 value="[% PROCESS formattimeunit 1008 time_unit=bug.remaining_time %]" 1009 size="6" maxlength="6" onchange="updateRemainingTime();"> 1010 </td> 1011 <td> 1012 [% PROCESS calculatepercentage act=bug.actual_time 1013 rem=bug.remaining_time %] 1014 </td> 1015 <td> 1016 [% PROCESS formattimeunit time_unit=bug.estimated_time - (bug.actual_time + bug.remaining_time) %] 1017 </td> 1018 <td> 1019 [% INCLUDE bug/field.html.tmpl 1020 field = bug_fields.deadline, value = bug.deadline, no_tds = 1 1021 editable = bug.check_can_change_field('deadline', 0, 1) %] 1022 </td> 1023 </tr> 1024 <tr> 1025 <td colspan="7" class="bz_summarize_time"> 1026 <a href="summarize_time.cgi?id=[% bug.bug_id %]&do_depends=1"> 1027 Zusammenfassung der Aufwände (einschließlich von Aufwänden von 1028 [%+ terms.bugs_dat %], die diesen [% terms.bug %] blockieren)</a> 1029 </td> 1030 </tr> 1031 </table> 1032[% END %] 1033 1034[%############################################################################%] 1035[%# Block for the Additional Comments box #%] 1036[%############################################################################%] 1037 1038[% BLOCK comment_box %] 1039 <div id="add_comment" class="bz_section_additional_comments"> 1040 [% IF user.id %] 1041 <label for="comment" accesskey="c"><b>Zusätzli<u>c</u>her 1042 Kommentar</b></label>: 1043 1044 [% IF user.is_insider && bug.check_can_change_field('longdesc', 0, 1) %] 1045 <input type="checkbox" name="comment_is_private" value="1" 1046 id="newcommentprivacy" 1047 onClick="updateCommentTagControl(this, 'comment')"> 1048 <label for="newcommentprivacy"> 1049 Den Kommentar als vertraulich kennzeichnen (wodurch er nur 1050 Mitgliedern der Gruppe 1051 <strong>[% Param('insidergroup') FILTER html %]</strong> sichtbar 1052 ist) 1053 </label> 1054 [% END %] 1055 1056 <!-- This table keeps the submit button aligned with the box. --> 1057 <table><tr><td> 1058 [% IF bug.check_can_change_field('longdesc', 0, 1) %] 1059 [% INCLUDE global/textarea.html.tmpl 1060 name = 'comment' 1061 id = 'comment' 1062 minrows = 10 1063 maxrows = 25 1064 cols = constants.COMMENT_COLS 1065 %] 1066 [% IF user.is_insider %] 1067 <script> 1068 updateCommentTagControl(document.getElementById('newcommentprivacy'), 'comment'); 1069 </script> 1070 [% END %] 1071 [% Hook.process("after_comment_textarea", 'bug/edit.html.tmpl') %] 1072 [% ELSE %] 1073 Sie dürfen dem [% terms.bug_dat %] keinen zusätzlichen Kommentar 1074 hinzufügen. 1075 [% END %] 1076 <br> 1077 [% PROCESS commit_button id=""%] 1078 1079 <table id="bug_status_bottom" 1080 class="status" cellspacing="0" cellpadding="0"> 1081 <tr> 1082 <th class="field_label"> 1083 <a href="page.cgi?id=fields.html#bug_status">Status</a>: 1084 </th> 1085 <td> 1086 [% PROCESS bug/knob.html.tmpl %] 1087 </td> 1088 </tr> 1089 </table> 1090 </td></tr></table> 1091 1092 [%# For logged-out users %] 1093 [% ELSE %] 1094 <table> 1095 <tr> 1096 <td> 1097 <fieldset> 1098 <legend>Hinweis</legend> 1099 Sie müssen sich 1100 <a href="show_bug.cgi?id= 1101 [%- bug.bug_id %]&GoAheadAndLogIn=1">anmelden</a>, 1102 um Änderungen an diesem [% terms.bug_dat %] vorzunehmen oder 1103 einen Kommentar zu hinterlassen. 1104 </fieldset> 1105 </td> 1106 </tr> 1107 </table> 1108 [% END %] 1109 </div> 1110[% END %] 1111 1112[%############################################################################%] 1113[%# Block for SELECT fields #%] 1114[%############################################################################%] 1115 1116[% BLOCK select %] 1117 <td> 1118 [% IF bug.check_can_change_field(selname, 0, 1) 1119 AND bug.choices.${selname}.size > 1 %] 1120 <input type="hidden" id="[% selname %]_dirty"> 1121 <select id="[% selname %]" name="[% selname %]"> 1122 [% FOREACH x = bug.choices.${selname} %] 1123 [% NEXT IF NOT x.is_active AND x.name != bug.${selname} %] 1124 <option value="[% x.name FILTER html %]" 1125 [% " selected" IF x.name == bug.${selname} %]> 1126 [%- x.name FILTER html %] 1127 </option> 1128 [% END %] 1129 </select> 1130 [% ELSE %] 1131 [% bug.${selname} FILTER html %] 1132 [% END %] 1133 </td> 1134[% END %] 1135 1136[%############################################################################%] 1137[%# Block for INPUT fields #%] 1138[%############################################################################%] 1139 1140[% BLOCK input %] 1141 [% IF no_td != 1 %] 1142 <td[% " colspan=\"$colspan\"" IF colspan %]> 1143 [% END %] 1144 [% val = value ? value : bug.$inputname %] 1145 [% IF bug.check_can_change_field(inputname, 0, 1) %] 1146 <input id="[% inputname %]" name="[% inputname %]" class="text_input" 1147 value="[% val FILTER html %]"[% " size=\"$size\"" IF size %] 1148 [% " maxlength=\"$maxlength\"" IF maxlength %] 1149 [% " spellcheck=\"$spellcheck\"" IF spellcheck %]> 1150 [% ELSE %] 1151 [% IF size && val.length > size %] 1152 <span title="[% val FILTER html %]"> 1153 [% val FILTER truncate(size) FILTER html %] 1154 </span> 1155 [% ELSE %] 1156 [% val FILTER html %] 1157 [% END %] 1158 [% END %] 1159 [% IF no_td != 1 %] 1160 </td> 1161 [% END %] 1162 [% no_td = 0 %] 1163 [% maxlength = 0 %] 1164 [% colspan = 0 %] 1165 [% size = 0 %] 1166 [% value = undef %] 1167 [% spellcheck = undef %] 1168[% END %] 1169[% BLOCK commit_button %] 1170 [% IF user.id %] 1171 <div class="knob-buttons"> 1172 <input type="submit" value="Änderungen übernehmen" 1173 id="commit[% id FILTER css_class_quote %]"> 1174 </div> 1175 [% END %] 1176[% END %] 1177