[%# 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.
#%]
[% PROCESS bug/time.html.tmpl %]
[% FOREACH bug = bugs %]
[% IF bug.error %]
[% bug.bug_id FILTER xml %]
[% ELSE %]
[% FOREACH field = bug.fields %]
[% IF displayfields.$field %]
[%+ PROCESS bug_field %]
[% END %]
[% END %]
[%# This is here so automated clients can still use process_bug.cgi %]
[% IF displayfields.token && user.id %]
[% issue_hash_token([bug.id, bug.delta_ts]) FILTER xml %]
[% END %]
[%# Now handle 'special' fields #%]
[% IF displayfields.group %]
[% FOREACH g = bug.groups %]
[% NEXT UNLESS g.ison %]
[% g.name FILTER xml %]
[% END %]
[% END %]
[%# Bug Flags %]
[% PROCESS section_flags obj => bug %]
[% IF displayfields.long_desc %]
[% sort_order = user.settings.comment_sort_order.value %]
[% sort_order FILTER xml %]
[% FOREACH c = bug.comments %]
[% PROCESS a_comment %]
[% END %]
[% END %]
[% IF displayfields.attachment %]
[% FOREACH a = bug.attachments %]
[% NEXT IF a.isprivate && !user.is_insider %]
[% a.id %]
[% a.attached FILTER time("%Y-%m-%d %T %z") FILTER xml %]
[% a.modification_time FILTER time("%Y-%m-%d %T %z") FILTER xml %]
[% a.description FILTER xml %]
[% a.filename FILTER xml %]
[% a.contenttype FILTER xml %]
[% a.datasize FILTER xml %]
[% a.attacher.login FILTER email FILTER xml %]
[%# This is here so automated clients can still use attachment.cgi %]
[% IF displayfields.token && user.id %]
[% issue_hash_token([a.id, a.modification_time]) FILTER xml %]
[% END %]
[% IF displayfields.attachmentdata %]
[% a.data FILTER base64 %]
[% END %]
[% PROCESS section_flags obj => a %]
[% END %]
[% END %]
[% Hook.process("bug_end") %]
[% END %]
[% END %]
[% BLOCK bug_field %]
[% field_values = bug.$field %]
[%# Work around TT bug https://rt.cpan.org/Public/Bug/Display.html?id=9802 %]
[% IF bug.$field.size == 1 %]
[% field_values = [bug.$field.first] %]
[% END %]
[% FOREACH val = field_values %]
[%# We need to handle some fields differently. This should become
# nicer once we have custfields, and a type attribute for the fields
#%]
[% name = '' %]
[% IF field == 'reporter' OR field == 'assigned_to' OR
field == 'qa_contact' %]
[% name = val.name %]
[% val = val.login FILTER email %]
[% ELSIF field == 'cc' %]
[% val = val FILTER email %]
[% ELSIF field == 'creation_ts' OR field == 'delta_ts' %]
[% val = val FILTER time("%Y-%m-%d %T %z") %]
[% ELSIF field == "see_also" %]
[% val = val.name %]
[% END %]
<[% field %][% IF name != '' %] name="[% name FILTER xml %]"[% END -%]>
[%- val FILTER xml %][% field %]>
[% END %]
[% END %]
[% BLOCK section_flags %]
[% RETURN UNLESS displayfields.flag %]
[% FOREACH flag = obj.flags %]
[% END %]
[% END %]
[% BLOCK a_comment %]
[% RETURN IF c.is_private && !user.is_insider %]
[% c.id FILTER xml %]
[% c.count FILTER xml %]
[% IF c.is_about_attachment %]
[% c.extra_data FILTER xml %]
[% END %]
[% c.author.login FILTER email FILTER xml %]
[% c.creation_ts FILTER time("%Y-%m-%d %T %z") FILTER xml %]
[% IF user.is_timetracker && (c.work_time - 0 != 0) %]
[% PROCESS formattimeunit time_unit = c.work_time FILTER xml %]
[% END %]
[% c.body_full FILTER xml %]
[% END %]