[%# 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.
  #%]

From: [% Param("mailfrom") %]
To: [% email %][% Param("emailsuffix") %]
Subject: Your [% terms.Bugzilla %] [%+ terms.bug %] list needs attention.
X-Bugzilla-Type: whine

[This e-mail has been automatically generated.]

You have one or more [% terms.bugs %] assigned to you in the [% terms.Bugzilla %] 
[% terms.bug %] tracking system ([% urlbase %]) that require
attention.

All of these [% terms.bugs %] are in the [% display_value("bug_status", "CONFIRMED") %]
state, and have not been touched in [% Param("whinedays") %] days or more.
You need to take a look at them, and decide on an initial action.

Generally, this means one of three things:

(1) You decide this [% terms.bug %] is really quick to deal with (like, it's [% display_value("resolution", "INVALID") %]),
    and so you get rid of it immediately.
(2) You decide the [% terms.bug %] doesn't belong to you, and you reassign it to
    someone else. (Hint: if you don't know who to reassign it to, make
    sure that the Component field seems reasonable, and then use the
    "Reset Assignee to default" option.)
(3) You decide the [% terms.bug %] belongs to you, but you can't solve it this moment.
    Accept the [% terms.bug %] by setting the status to [% display_value("bug_status", "IN_PROGRESS") %].

To get a list of all [% display_value("bug_status", "CONFIRMED") %] [%+ terms.bugs %], you can use this URL (bookmark
it if you like!):

 [% urlbase %]buglist.cgi?bug_status=CONFIRMED&assigned_to=[% email %]

Or, you can use the general query page, at 
[%+ urlbase %]query.cgi

Appended below are the individual URLs to get to all of your [% display_value("bug_status", "CONFIRMED") %] [%+ terms.bugs %]
that haven't been touched for [% Param("whinedays") %] days or more.

You will get this message once a day until you've dealt with these [% terms.bugs %]!

[% FOREACH bug = bugs %]
 [%+ bug.summary %]
    -> [% urlbase %]show_bug.cgi?id=[% bug.id %]
[% END %]
