[%# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # # This Source Code Form is "Incompatible With Secondary Licenses", as # defined by the Mozilla Public License, v. 2.0. #%] [% USE Bugzilla %] [% PROCESS bug/time.html.tmpl %] [% IF Param('comment_taggers_group') %] [% IF user.can_tag_comments %]
x  
x
[% END %] [% IF user.id %] [% END %] [% END %]
[% PROCESS section_title %] [%# 1st Column %] [%# 2nd Column %]
[%# *** ID, product, component, status, resolution, Hardware, and OS *** %] [% PROCESS section_status %] [% PROCESS section_spacer %] [% PROCESS section_aliases %] [% PROCESS section_spacer %] [% PROCESS section_details1 %] [% PROCESS section_spacer %] [%# *** severity, priority, version, milestone, and deadline *** %] [% 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_bug_ignored %] [% 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 bug.alias.size > 0 %] ([% bug.alias.join(', ') FILTER html %]) [% END %] - [% bug.short_desc FILTER quoteUrls(bug) %] [% can_edit_short_desc = bug.check_can_change_field('short_desc', 0, 1) %] [% IF can_edit_short_desc %] (edit) [% END %]
[% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.short_desc editable = can_edit_short_desc accesskey = "s" tag_name = 'span' %] [% INCLUDE input inputname => "short_desc" size => "80" 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, value = bug.product override_legal_values = bug.choices.product desc_url = "describecomponents.cgi" 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) %] [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.version editable = bug.check_can_change_field('version', 0, 1) %] [% PROCESS select selname => "version" %] [%############%] [%# PLATFORM #%] [%############%] [% can_edit_rep_platform = bug.check_can_change_field('rep_platform', 0, 1) %] [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.rep_platform, editable = can_edit_rep_platform, accesskey = "h" %] [% INCLUDE bug/field.html.tmpl bug = bug, field = bug_fields.rep_platform, no_tds = 1, value = bug.rep_platform editable = can_edit_rep_platform %] [%+ 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) #%] [%###############################################################%] [% can_edit_priority = bug.check_can_change_field('priority', 0, 1) %] : [% INCLUDE bug/field.html.tmpl bug = bug, field = bug_fields.priority, no_tds = 1, value = bug.priority editable = can_edit_priority %] [%+ 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 %] [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.target_milestone editable = bug.check_can_change_field('target_milestone', 0, 1) %] [% PROCESS select selname = "target_milestone" %] [% END %] [% IF Param("timetrackinggroup") && bug.deadline %] Deadline: [% bug.deadline FILTER html %] [% END %] [% END %] [%############################################################################%] [%# Block for the table in the "People" section #%] [%############################################################################%] [% BLOCK section_people %] [% can_edit_assigned_to = bug.check_can_change_field("assigned_to", 0, 1) %] [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.assigned_to editable = can_edit_assigned_to %] [% IF can_edit_assigned_to %]
[% 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') %] [% can_edit_qa_contact = bug.check_can_change_field("qa_contact", 0, 1) %] [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.qa_contact editable = can_edit_qa_contact accesskey = "q" %] [% IF can_edit_qa_contact %]
[% INCLUDE global/user.html.tmpl who = bug.qa_contact %] (edit) [% IF bug.qa_contact.id != user.id %] (take) [% 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 %] [% can_edit_bug_file_loc = bug.check_can_change_field("bug_file_loc", 0, 1) %] [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.bug_file_loc editable = can_edit_bug_file_loc accesskey = "u" %] [% IF can_edit_bug_file_loc %] [% 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 = INCLUDE input no_td = 1 inputname = "bug_file_loc" size = 40 %] [% 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') %] [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.status_whiteboard editable = bug.check_can_change_field("status_whiteboard", 0, 1) accesskey = "w" %] [% INCLUDE input inputname = "status_whiteboard" size = 40 %] [% 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), desc_url = "describekeywords.cgi", possible_values = active_keywords %] [% END %] [% IF user.id %] [% INCLUDE bug/field.html.tmpl bug = bug, field = bug_fields.tag, value = bug.tags.join(", "), editable = 1, possible_values = user.tags.keys %] [% END %] [% END %] [%############################################################################%] [%# Block for Duplicates #%] [%############################################################################%] [% BLOCK section_duplicates %] [% RETURN UNLESS bug.duplicates.size %] : [% FOREACH dupe = bug.duplicates %] [% INCLUDE bug/link.html.tmpl bug = dupe, link_text = dupe.id, use_alias = 1 %][% " " %] [% 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 %] [% IF bug.dependson.size || bug.blocked.size %]   Show dependency tree [% IF Bugzilla.localconfig.webdotbase %] / graph [% END %] [% 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 [%+ IF Param('or_groups') %]at least one[% ELSE %]all[% END %] 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("%Y-%m-%d %H:%M %Z") %] by [% INCLUDE global/user.html.tmpl who = bug.reporter %] Modified: [% bug.delta_ts FILTER time("%Y-%m-%d %H:%M %Z") %] ([%# terms.Bug %]History) [% END %] [%############################################################################%] [%# Block for CC LIST #%] [%############################################################################%] [% BLOCK section_cclist %] [% IF user.id %] [% IF NOT bug.cc.contains(user.login) %]
[% END %] [% END %] [% bug.cc.size FILTER html %] [% IF bug.cc.size == 1 %] user [% ELSE %] users [% END %] [% IF user.id %] [% IF bug.cc.contains( user.login ) %] 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.size %] [% 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 Bug Ignored #%] [%############################################################################%] [% BLOCK section_bug_ignored %] [% IF user.id %] (never email me about this [% terms.bug %]) [% 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 section_aliases %] [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.alias %] [% IF bug.alias.size %] [% bug.alias.join(', ') FILTER html %] [% ELSE %] None [% END %] [% IF bug.check_can_change_field('alias', 0, 1) %] (edit)

[% IF bug.alias.size %]
[% END %]
[% END %] [% END %] [%############################################################################%] [%# Block for FLAGS #%] [%############################################################################%] [% BLOCK section_flags %] [%# *** Flags *** %] [% show_bug_flags = 0 %] [% bug_flags_set = 0 %] [% show_more_flags = 0 %] [% FOREACH type = bug.flag_types %] [% IF type.flags.size || (user.id && type.is_active && user.can_request_flag(type)) %] [% show_bug_flags = 1 %] [% END %] [% IF user.id && type.is_active && (!type.flags.size || type.is_multiplicable) %] [% show_more_flags = 1 %] [% END %] [% IF type.flags.size %] [% bug_flags_set = 1 %] [% END %] [% LAST IF show_bug_flags && show_more_flags && bug_flags_set %] [% END %] [% IF show_bug_flags %] [% IF bug.flag_types.size %] [% PROCESS "flag/list.html.tmpl" flag_no_header = 1 flag_types = bug.flag_types any_flags_requesteeble = bug.any_flags_requesteeble %] [% END %] [% IF show_more_flags %] [% IF !bug_flags_set %]None yet set[% END %] ([% IF !bug_flags_set %]set[% ELSE %]more[% END %] flags) [% END %] [% END %] [% END %] [%############################################################################%] [%# Block for Custom Fields #%] [%############################################################################%] [% BLOCK section_customfields %] [%# *** Custom Fields *** %] [% FOREACH field = Bugzilla.active_custom_fields %] [%# Use PROCESS instead of INCLUDE, because extra_field_item is defined # in the template and must be returned back. INCLUDE cannot do that. %] [% PROCESS bug/field.html.tmpl value = bug.${field.name} editable = bug.check_can_change_field(field.name, 0, 1) %] [% 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 %] [% INCLUDE bug/link.html.tmpl bug = dep_bug, link_text = dep_bug.id, use_alias = 1 %][% " " %] [% END %] [% IF bug.check_can_change_field(field.name, 0, 1) %] (edit) [% END %] [% END %] [%############################################################################%] [%# Block for Time Tracking Group #%] [%############################################################################%] [% BLOCK section_timetracking %] [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.estimated_time, editable = 1 %] [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.work_time, editable = 1 %] [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.remaining_time, editable = 1 %] [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.percentage_complete %] [% INCLUDE "bug/field-label.html.tmpl" field = bug_fields.deadline, editable = 1 %]
Current Est.: 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 && bug.check_can_change_field('longdesc', 0, 1) %] [% END %]
[% IF bug.check_can_change_field('longdesc', 0, 1) %] [% INCLUDE bug/comment.html.tmpl minrows = 10 maxrows = 25 cols = constants.COMMENT_COLS %] [% IF user.is_insider %] [% END %] [% Hook.process("after_comment_textarea", 'bug/edit.html.tmpl') %] [% ELSE %] You are not allowed to make an additional comment on this [% terms.bug %]. [% END %]
[% PROCESS commit_button id=""%] [% Hook.process("after_comment_commit_button", 'bug/edit.html.tmpl') %]
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 = 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 %] [% END %] [% BLOCK commit_button %] [% IF user.id %]
[% IF Param('minor_update_group') && user.in_group(Param('minor_update_group')) %]
[% END %]
[% END %] [% END %]