summaryrefslogtreecommitdiffstats
path: root/template/en/default/bug/show.xml.tmpl
blob: 16f281ea557e0d5e6883fe65d6e8022b7dc9240d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
[%# 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 <bbaetz@student.usyd.edu.au>
  #                 Colin Ogilvie <mozilla@colinogilvie.co.uk>
  #
  #%]
[% PROCESS bug/time.html.tmpl %]
<?xml version="1.0" [% IF Param('utf8') %]encoding="UTF-8" [% END %]standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "[% urlbase FILTER html %]bugzilla.dtd">

<bugzilla version="[% constants.BUGZILLA_VERSION %]"
          urlbase="[% urlbase FILTER xml %]"
          maintainer="[% Param('maintainer') FILTER xml %]"
[% IF user.id %]
          exporter="[% user.email FILTER xml %]"
[% END %]
>

[% FOREACH bug = bugs %]
  [% IF bug.error %]
    <bug error="[% bug.error FILTER xml %]">
      <bug_id>[% bug.bug_id FILTER xml %]</bug_id>
    </bug>
  [% ELSE %]
    <bug>
      [% FOREACH field = bug.fields %]
        [% IF displayfields.$field %]
          [%+ PROCESS bug_field %]
        [% END %]
      [% END %]

      [%# Now handle 'special' fields #%]
      [% IF displayfields.group %]
        [% FOREACH g = bug.groups %]
          [% NEXT UNLESS g.ison %]
          <group>[% g.name FILTER xml %]</group>
        [% END %]
      [% END %]

      [%# Bug Flags %]
      [% FOREACH type = bug.flag_types %]
        [% FOREACH flag = type.flags %]
          <flag name="[% type.name FILTER xml %]"
                status="[% flag.status FILTER xml %]"
                setter="[% flag.setter.login FILTER xml %]"
          [% IF flag.requestee %]
              requestee="[% flag.requestee.login FILTER xml %]"
          [% END %]
          />
        [% END %]
      [% END %]
      [% IF displayfields.long_desc %]
        [% FOREACH c = bug.longdescs %]
          [% NEXT IF c.isprivate && !user.in_group(Param("insidergroup")) %]
          <long_desc isprivate="[% c.isprivate FILTER xml %]">
            <who name="[% c.author.name FILTER xml %]">[% c.author.email FILTER xml %]</who>
            <bug_when>[% c.time FILTER time FILTER xml %]</bug_when>
            [% IF user.in_group(Param('timetrackinggroup')) && (c.work_time - 0 != 0) %]
              <work_time>[% PROCESS formattimeunit time_unit = c.work_time FILTER xml %]</work_time>
            [% END %]
            <thetext>[% c.body FILTER xml %]</thetext>
          </long_desc>
        [% END %]
      [% END %]
      
      [% IF displayfields.attachment %]
        [% FOREACH a = bug.attachments %]
          [% NEXT IF a.isprivate && !user.in_group(Param("insidergroup")) %]
          <attachment
              isobsolete="[% a.isobsolete FILTER xml %]"
              ispatch="[% a.ispatch FILTER xml %]"
              isprivate="[% a.isprivate FILTER xml %]"
          >
            <attachid>[% a.id %]</attachid>
            <date>[% a.attached FILTER time FILTER xml %]</date>
            <desc>[% a.description FILTER xml %]</desc>
            <filename>[% a.filename FILTER xml %]</filename>
            <type>[% a.contenttype FILTER xml %]</type>
            <size>[% a.datasize FILTER xml %]</size>
            <attacher>[% a.attacher.email FILTER xml %]</attacher>
        [% IF displayfields.attachmentdata %]
            <data encoding="base64">[% a.data FILTER base64 %]</data>
        [% END %]        

            [% FOREACH flag = a.flags %]
              <flag name="[% flag.type.name FILTER xml %]"
                    status="[% flag.status FILTER xml %]"
                    setter="[% flag.setter.email FILTER xml %]"
                    [% IF flag.status == "?" && flag.requestee %]
                      requestee="[% flag.requestee.email FILTER xml %]"
                    [% END %]
               />
            [% END %]
          </attachment>
        [% END %]
      [% END %]
      
      [% Hook.process("bug_end") %]

    </bug>
  [% END %]
[% END %]

</bugzilla>

[% BLOCK bug_field %]
  [% 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 %]
    [% ELSIF field == 'creation_ts' OR field == 'delta_ts' %]
      [% val = val FILTER time %]
    [% END %]
    <[% field %][% IF name != '' %] name="[% name FILTER xml %]"[% END -%]>[% val FILTER xml %]</[% field %]>
  [% END %]
[% END %]