[%# 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): Bradley Baetz # Colin Ogilvie # #%] [% PROCESS bug/time.html.tmpl %] [% FOREACH bug = error_bugs %] [% bug.bug_id | xml %] [% END %] [% FOREACH bug = bugs %] [% 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]) | xml %] [% END %] [%# Now handle 'special' fields #%] [% IF displayfields.group %] [% FOREACH g = bug.groups %] [% NEXT UNLESS g.ison %] [% g.name | xml %] [% END %] [% END %] [%# Bug Flags %] [% PROCESS section_flags obj => bug %] [% IF displayfields.long_desc %] [% FOREACH c = bug.comments %] [% NEXT IF c.is_private && !user.is_insider %] [% c.id | xml %] [% IF c.type %] [% c.type | xml %] [% END %] [% IF c.is_about_attachment %] [% c.extra_data | xml %] [% END %] [% c.author.email | email | xml %] [% c.creation_ts | time("%Y-%m-%d %T %z") | xml %] [% IF user.is_timetracker && (c.work_time - 0 != 0) %] [% PROCESS formattimeunit time_unit = c.work_time | xml %] [% END %] [% c.body_full | xml %] [% END %] [% END %] [% IF displayfields.attachment %] [% FOREACH a = bug.attachments %] [% NEXT IF a.isprivate && !user.is_insider %] [% a.id %] [% a.attached | time("%Y-%m-%d %T %z") | xml %] [% a.modification_time | time("%Y-%m-%d %T %z") | xml %] [% a.description | xml %] [% a.filename | xml %] [% a.contenttype | xml %] [% a.datasize | xml %] [% a.attacher.email | email | 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]) | xml %] [% END %] [% IF displayfields.attachmentdata %] [% a.data | base64 %] [% END %] [% PROCESS section_flags obj => a %] [% END %] [% END %] [% Hook.process("bug_end") %] [% END %] [% BLOCK bug_field %] [% SET field_obj = bug_fields.${field} %] [% IF field_obj.type == constants.FIELD_TYPE_SINGLE_SELECT %] [% fn = field _ "_obj" %] <[% field %]>[% bug.$fn.name | xml %] [% ELSIF field_obj.type == constants.FIELD_TYPE_MULTI_SELECT %] [% fn = field _ "_obj" %] [% FOREACH value = bug.$fn %] <[% field %]>[% value.name | xml %] [% END %] [% ELSE %] [% FOREACH val = bug.$field %] [%# 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.email | email %] [% ELSIF field == 'cc' %] [% val = val | email %] [% ELSIF field == 'creation_ts' OR field == 'delta_ts' %] [% val = val | time("%Y-%m-%d %T %z") %] [% END %] <[% field %][% IF name != '' %] name="[% name | xml %]"[% END -%]>[%- val | xml %] [% END %] [% END %] [% END %] [% BLOCK section_flags %] [% RETURN UNLESS displayfields.flag %] [% FOREACH flag = obj.flags %] [% END %] [% END %]