[%# 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): Gervase Markham # Vaskin Kissoyan # Max Kanat-Alexander # Frédéric Buclin # Olav Vitters # Guy Pyrzak # Elliotte Martin #%] [% PROCESS global/variables.none.tmpl %] [% PROCESS "global/field-descs.none.tmpl" %] [% PROCESS bug/time.html.tmpl %]
[% PROCESS section_title %] [%# 1st Column %] [%# 2nd Column %]
[%# *** ID, product, component, status, resolution, Hardware, and OS *** %] [% PROCESS section_status %] [% PROCESS section_spacer %] [% PROCESS section_details1 %] [% PROCESS section_spacer %] [%# *** severity, priority, version and milestone *** %] [% PROCESS section_details2 %] [%# *** assigned to and qa contact *** %] [% PROCESS section_people %] [% PROCESS section_spacer %] [% PROCESS section_url_keyword_whiteboard %] [% PROCESS section_spacer %] [%# *** Dependencies and duplicates *** %] [% PROCESS section_duplicates %] [% PROCESS section_dependson_blocks %]
 
[%# *** Reported and modified dates *** %] [% PROCESS section_dates %] [% PROCESS section_cclist %] [% PROCESS section_spacer %] [% PROCESS section_see_also %] [% PROCESS section_customfields %] [% PROCESS section_spacer %] [% Hook.process("after_custom_fields") %] [% PROCESS section_flags %]

[% IF user.is_timetracker %] [% PROCESS section_timetracking %] [% END %] [%# *** Attachments *** %] [% PROCESS attachment/list.html.tmpl attachments = bug.attachments bugid = bug.bug_id num_attachment_flag_types = bug.num_attachment_flag_types show_attachment_flags = bug.show_attachment_flags %] [% IF user.settings.comment_box_position.value == 'before_comments' %] [% PROCESS comment_box %] [% END %] [% PROCESS section_restrict_visibility %]
[%# *** Additional Comments *** %]
[% PROCESS bug/comments.html.tmpl comments = bug.comments mode = user.id ? "edit" : "show" %]
[% IF user.settings.comment_box_position.value == 'after_comments' %]
[% PROCESS comment_box %] [% END %]
[%############################################################################%] [%# Block for the Title (alias and short desc) #%] [%############################################################################%] [% BLOCK section_title %] [%# That's the main table, which contains all editable fields. %]
[% PROCESS commit_button id="_top"%] [%-# %][% terms.Bug %] [% bug.bug_id FILTER html %] [%-# %] - [% IF Param("usebugaliases") %] [% IF bug.alias != "" %] ([% bug.alias FILTER html %]) [% END %] [% END %] [% bug.short_desc FILTER quoteUrls(bug) %] [% IF bug.check_can_change_field('short_desc', 0, 1) || bug.check_can_change_field('alias', 0, 1) %] (edit) [% END %]
[% IF Param("usebugaliases") %] [% IF bug.check_can_change_field('alias', 0, 1) %] [% END %] [%# *** Summary *** %]
: [% ELSIF bug.alias %] ( [% ELSE %] [% END %] [% PROCESS input inputname => "alias" size => "20" maxlength => "20" no_td => 1 %][% ")" IF NOT bug.check_can_change_field('alias', 0, 1) && bug.alias %]
: [% PROCESS input inputname => "short_desc" size => "80" colspan => 2 maxlength => 255 spellcheck => "true" no_td => 1 %]
[% END %] [%############################################################################%] [%# Block for the first table in the "Details" section #%] [%############################################################################%] [% BLOCK section_details1 %] [%#############%] [%# PRODUCT #%] [%#############%] [% INCLUDE bug/field.html.tmpl bug = bug, field = bug_fields.product, override_legal_values = bug.choices.product desc_url = 'describecomponents.cgi', value = bug.product editable = bug.check_can_change_field('product', 0, 1) %] [%# Classification is here so that it can be used in value controllers # and visibility controllers. It comes after product because # it uses some javascript that depends on the existence of the # product field. #%] [% INCLUDE bug/field.html.tmpl bug = bug field = bug_fields.classification override_legal_values = bug.choices.classification value = bug.classification editable = bug.check_can_change_field('product', 0, 1) %] [%###############%] [%# Component #%] [%###############%] [% INCLUDE bug/field.html.tmpl bug = bug, field = bug_fields.component, value = bug.component override_legal_values = bug.choices.component desc_url = "describecomponents.cgi?product=$bug.product" editable = bug.check_can_change_field('component', 0, 1) %] : [% PROCESS select selname => "version" %] [%############%] [%# PLATFORM #%] [%############%] : [% INCLUDE bug/field.html.tmpl bug = bug, field = bug_fields.rep_platform, no_tds = 1, value = bug.rep_platform editable = bug.check_can_change_field('rep_platform', 0, 1) %] [%+ INCLUDE bug/field.html.tmpl bug = bug, field = bug_fields.op_sys, no_tds = 1, value = bug.op_sys editable = bug.check_can_change_field('op_sys', 0, 1) %] [% END %] [%############################################################################%] [%# Block for the status section #%] [%############################################################################%] [% BLOCK section_status %] Status: [% display_value("bug_status", bug.bug_status) FILTER html %] [% IF bug.resolution %] [%+ display_value("resolution", bug.resolution) FILTER html %] [% IF bug.dup_id %] of [% "${terms.bug} ${bug.dup_id}" FILTER bug_link(bug.dup_id) FILTER none %] [% END %] [% END %] [% IF bug.user.canedit || bug.user.isreporter %] (edit) [% END %] [% END %] [%############################################################################%] [%# Block for the second table in the "Details" section #%] [%############################################################################%] [% BLOCK section_details2 %] [%###############################################################%] [%# Importance (priority and severity) #%] [%###############################################################%] : [% INCLUDE bug/field.html.tmpl bug = bug, field = bug_fields.priority, no_tds = 1, value = bug.priority editable = bug.check_can_change_field('priority', 0, 1) %] [%+ INCLUDE bug/field.html.tmpl bug = bug, field = bug_fields.bug_severity, no_tds = 1, value = bug.bug_severity editable = bug.check_can_change_field('bug_severity', 0, 1) %] [% Hook.process('after_importance', 'bug/edit.html.tmpl') %] [% IF Param("usetargetmilestone") && bug.target_milestone %] : [% PROCESS select selname = "target_milestone" %] [% END %] [% END %] [%############################################################################%] [%# Block for the table in the "People" section #%] [%############################################################################%] [% BLOCK section_people %] Assigned To: [% IF bug.check_can_change_field("assigned_to", 0, 1) %]
[% INCLUDE global/user.html.tmpl who = bug.assigned_to %] (edit) [% IF bug.assigned_to.id != user.id %] (take) [% END %]
[% INCLUDE global/userselect.html.tmpl id => "assigned_to" name => "assigned_to" value => bug.assigned_to.login classes => ["bz_userfield"] size => 30 %]
[% ELSE %] [% INCLUDE global/user.html.tmpl who = bug.assigned_to %] [% END %] [% IF Param('useqacontact') %] : [% IF bug.check_can_change_field("qa_contact", 0, 1) %] [% IF bug.qa_contact != "" %]
[% INCLUDE global/user.html.tmpl who = bug.qa_contact %] (edit)
[% END %]
[% INCLUDE global/userselect.html.tmpl id => "qa_contact" name => "qa_contact" value => bug.qa_contact.login size => 30 classes => ["bz_userfield"] emptyok => 1 %]
[% ELSE %] [% INCLUDE global/user.html.tmpl who = bug.qa_contact %] [% END %] [% END %] [% END %] [%############################################################################%] [%# Block for URL Keyword and Whiteboard #%] [%############################################################################%] [% BLOCK section_url_keyword_whiteboard %] : [% IF bug.check_can_change_field("bug_file_loc", 0, 1) %] [% IF is_safe_url(bug.bug_file_loc) %] [% bug.bug_file_loc FILTER truncate(40) FILTER html %] [% ELSE %] [% bug.bug_file_loc FILTER html %] [% END %] (edit) [% END %] [% url_output = PROCESS input no_td=1 inputname => "bug_file_loc" size => "40" colspan => 2 %] [% IF NOT bug.check_can_change_field("bug_file_loc", 0, 1) AND is_safe_url(bug.bug_file_loc) %] [% url_output FILTER none %] [% ELSE %] [% url_output FILTER none %] [% END %] [% IF bug.check_can_change_field("bug_file_loc", 0, 1) %] [% END %] [% IF Param('usestatuswhiteboard') %] : [% PROCESS input inputname => "status_whiteboard" size => "40" colspan => 2 %] [% END %] [% IF use_keywords %] : [% INCLUDE bug/field.html.tmpl bug = bug, field = bug_fields.keywords, value = bug.keywords editable = bug.check_can_change_field("keywords", 0, 1), no_tds = 1 %] [% END %] [% END %] [%############################################################################%] [%# Block for Duplicates #%] [%############################################################################%] [% BLOCK section_duplicates %] [% RETURN UNLESS bug.duplicates.size %] : [% FOREACH dupe = bug.duplicates %] [% dupe.id FILTER bug_link(dupe, use_alias => 1) FILTER none %][% " " %] [% END %] ( [%-%]view as [% terms.bug %] list) [% END %] [%############################################################################%] [%# Block for Depends On / Blocks #%] [%############################################################################%] [% BLOCK section_dependson_blocks %] [% INCLUDE dependencies field = bug_fields.dependson deps = bug.depends_on_obj %] [% INCLUDE dependencies field = bug_fields.blocked deps = bug.blocks_obj %]   Show dependency tree [% IF Param('webdotbase') %] / graph [% END %] [% END %] [%############################################################################%] [%# Block for Restricting Visibility #%] [%############################################################################%] [% BLOCK section_restrict_visibility %] [% RETURN UNLESS bug.groups.size %]
[% inallgroups = 1 %] [% inagroup = 0 %] [% emitted_description = 0 %] [% FOREACH group = bug.groups %] [% SET inallgroups = 0 IF NOT group.ingroup %] [% SET inagroup = 1 IF group.ison %] [% NEXT IF group.mandatory %] [% IF NOT emitted_description %] [% emitted_description = 1 %]
Only users in all of the selected groups can view this [%+ terms.bug %]:

Unchecking all boxes makes this a more public [% terms.bug %].

[% END %] [% IF group.ingroup %] [% END %]
[% END %] [% IF emitted_description %] [% IF NOT inallgroups %]

Only members of a group can change the visibility of [% terms.abug %] for that group.

[% END %] [% END %] [% IF inagroup %]
Users in the roles selected below can always view this [% terms.bug %]:
[% user_can_edit_accessible = bug.check_can_change_field("reporter_accessible", 0, 1) %] [% IF user_can_edit_accessible %] [% END %]
[% user_can_edit_accessible = bug.check_can_change_field("cclist_accessible", 0, 1) %] [% IF user_can_edit_accessible %] [% END %]

The assignee [% IF (Param('useqacontact')) %] and QA contact [% END %] can always see [% terms.abug %], and this section does not take effect unless the [% terms.bug %] is restricted to at least one group.

[% END %]
[%# bz_group_visibility_section %] [% END %] [%############################################################################%] [%# Block for Dates #%] [%############################################################################%] [% BLOCK section_dates %] Reported: [% bug.creation_ts FILTER time %] by [% INCLUDE global/user.html.tmpl who = bug.reporter %] Modified: [% bug.delta_ts FILTER time FILTER replace(':\d\d$', '') FILTER replace(':\d\d ', ' ')%] ([%# terms.Bug %]History) [% END %] [%############################################################################%] [%# Block for CC LIST #%] [%############################################################################%] [% BLOCK section_cclist %] [% IF user.id %] [% IF NOT bug.cc || NOT bug.cc.contains(user.login) %] [% has_role = bug.user.isreporter || bug.assigned_to.id == user.id || (Param('useqacontact') && bug.qa_contact && bug.qa_contact.id == user.id) %]
[% END %] [% END %] [% bug.cc.size || 0 FILTER html %] [% IF bug.cc.size == 1 %] user [% ELSE %] users [% END %] [% IF user.id %] [% IF bug.cc.contains( user.email ) %] including you [% END %] [% END %] [% IF user.id || bug.cc.size %] ([% IF user.id %]edit[% ELSE %]show[% END %]) [% END %]

[% IF user.id %]
[% INCLUDE global/userselect.html.tmpl id => "newcc" name => "newcc" value => "" size => 30 classes => ["bz_userfield"] multiple => 5 %]
[% END %] [% IF bug.cc %] [% IF user.id && !bug.user.canedit %] [% END %] [% IF user.id AND (bug.user.canedit OR bug.cc.contains(user.login)) %]

[% END %] [% END %]
[% IF user.id || bug.cc.size %] [% END %] [% END %] [%############################################################################%] [%# Block for See Also #%] [%############################################################################%] [% BLOCK section_see_also %] [% IF Param('use_see_also') || bug.see_also.size %] [% INCLUDE bug/field.html.tmpl field = bug_fields.see_also value = bug.see_also editable = bug.check_can_change_field('see_also', 0, 1) %] [% END %] [% END %] [%############################################################################%] [%# Block for FLAGS #%] [%############################################################################%] [% BLOCK section_flags %] [%# *** Flags *** %] [% show_bug_flags = 0 %] [% FOREACH type = bug.flag_types %] [% IF (type.flags && type.flags.size > 0) || (user.id && type.is_active) %] [% show_bug_flags = 1 %] [% LAST %] [% END %] [% END %] [% IF show_bug_flags %] [% IF bug.flag_types.size > 0 %] [% PROCESS "flag/list.html.tmpl" flag_no_header = 1 flag_types = bug.flag_types any_flags_requesteeble = bug.any_flags_requesteeble %] [% END %] [% END %] [% END %] [%############################################################################%] [%# Block for Custom Fields #%] [%############################################################################%] [% BLOCK section_customfields %] [%# *** Custom Fields *** %] [% USE Bugzilla %] [% FOREACH field = Bugzilla.active_custom_fields %] [% PROCESS bug/field.html.tmpl value = bug.${field.name} editable = bug.check_can_change_field(field.name, 0, 1) value_span = 2 %] [% IF extra_field_item %] [% extra_field_item.header FILTER none %] [% extra_field_item.data FILTER none %] [% END %] [% END %] [% END %] [%############################################################################%] [%# Block for Section Spacer #%] [%############################################################################%] [% BLOCK section_spacer %] [% END %] [%############################################################################%] [%# Block for dependencies #%] [%############################################################################%] [% BLOCK dependencies %] [% INCLUDE "bug/field-label.html.tmpl" %] [% IF bug.check_can_change_field(field.name, 0, 1) %] [% END %] [% FOREACH dep_bug = deps %] [% dep_bug.id FILTER bug_link(dep_bug, use_alias => 1) FILTER none %][% " " %] [% END %] [% IF bug.check_can_change_field(field.name, 0, 1) %] (edit) [% END %] [% END %] [%############################################################################%] [%# Block for Time Tracking Group #%] [%############################################################################%] [% BLOCK section_timetracking %]
Current Est. %Complete Gain
[% PROCESS formattimeunit time_unit=(bug.actual_time + bug.remaining_time) %] [% PROCESS formattimeunit time_unit=bug.actual_time %] + [% PROCESS calculatepercentage act=bug.actual_time rem=bug.remaining_time %] [% PROCESS formattimeunit time_unit=bug.estimated_time - (bug.actual_time + bug.remaining_time) %] [% INCLUDE bug/field.html.tmpl field = bug_fields.deadline, value = bug.deadline, no_tds = 1 editable = bug.check_can_change_field('deadline', 0, 1) %]
Summarize time (including time for [% terms.bugs %] blocking this [% terms.bug %])
[% END %] [%############################################################################%] [%# Block for the Additional Comments box #%] [%############################################################################%] [% BLOCK comment_box %]
[% IF user.id %] : [% IF user.is_insider %] [% END %]
[% INCLUDE global/textarea.html.tmpl name = 'comment' id = 'comment' minrows = 10 maxrows = 25 cols = constants.COMMENT_COLS %] [% Hook.process("after_comment_textarea", 'bug/edit.html.tmpl') %]
[% PROCESS commit_button id=""%]
Status: [% PROCESS bug/knob.html.tmpl %]
[%# For logged-out users %] [% ELSE %]
Note You need to log in before you can comment on or make changes to this [% terms.bug %].
[% END %]
[% END %] [%############################################################################%] [%# Block for SELECT fields #%] [%############################################################################%] [% BLOCK select %] [% IF bug.check_can_change_field(selname, 0, 1) AND bug.choices.${selname}.size > 1 %] [% ELSE %] [% bug.${selname} FILTER html %] [% END %] [% END %] [%############################################################################%] [%# Block for INPUT fields #%] [%############################################################################%] [% BLOCK input %] [% IF no_td != 1 %] [% END %] [% val = value ? value : bug.$inputname %] [% IF bug.check_can_change_field(inputname, 0, 1) %] [% ELSE %] [% IF size && val.length > size %] [% val FILTER truncate(size) FILTER html %] [% ELSE %] [% val FILTER html %] [% END %] [% END %] [% IF no_td != 1 %] [% END %] [% no_td = 0 %] [% maxlength = 0 %] [% colspan = 0 %] [% size = 0 %] [% value = undef %] [% spellcheck = undef %] [% END %] [% BLOCK commit_button %] [% IF user.id %]
[% END %] [% END %]