336 lines
11 KiB
Cheetah
336 lines
11 KiB
Cheetah
[%# 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): Gervase Markham <gerv@gerv.net>
|
|
# Myk Melez <myk@mozilla.org>
|
|
# Shane H. W. Travis <travis@sedsystems.ca>
|
|
#%]
|
|
|
|
[%# INTERFACE:
|
|
# watchedusers: string.
|
|
# Comma-separated list of email addresses this user watches.
|
|
# watchers: array.
|
|
# Array of users watching this user's account.
|
|
# excludeself: boolean.
|
|
# True if user is not receiving self-generated mail.
|
|
# <rolename>: Multiple hashes, one for each rolename (e.g. assignee; see
|
|
# below), keyed by reasonname (e.g. comments; again, see
|
|
# below). The value is a boolean - true if the user is
|
|
# receiving mail for that reason when in that role.
|
|
#%]
|
|
|
|
[% useqacontact = Param('useqacontact') %]
|
|
[% usevotes = Param('usevotes') %]
|
|
|
|
<p>
|
|
If you don't like getting a notification for "trivial"
|
|
changes to [% terms.bugs %], you can use the settings below to
|
|
filter some or all notifications.
|
|
</p>
|
|
|
|
<script type="text/javascript">
|
|
<!--
|
|
function SetCheckboxes(setting) {
|
|
for (var count = 0; count < document.userprefsform.elements.length; count++) {
|
|
var theinput = document.userprefsform.elements[count];
|
|
if (theinput.type == "checkbox" && !theinput.disabled) {
|
|
if (theinput.name.match("neg")) {
|
|
theinput.checked = false;
|
|
}
|
|
else {
|
|
theinput.checked = setting;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
document.write('<input type="button" value="Enable All Mail" onclick="SetCheckboxes(true); return false;">\n');
|
|
document.write('<input type="button" value="Disable All Mail" onclick="SetCheckboxes(false); return false;">\n');
|
|
// -->
|
|
</script>
|
|
|
|
<hr>
|
|
|
|
<table>
|
|
<tr>
|
|
<td colspan="2">
|
|
<b>Global options:</b>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td width="150"></td>
|
|
<td>
|
|
[% prefname = "email-$constants.REL_ANY-$constants.EVT_FLAG_REQUESTED" %]
|
|
<input type="checkbox" name="[% prefname %]" id="[% prefname %]"
|
|
value="1"
|
|
[% " checked" IF
|
|
mail.${constants.REL_ANY}.${constants.EVT_FLAG_REQUESTED} %]>
|
|
<label for="[% prefname %]">Email me when someone asks me to set a flag</label>
|
|
<br>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td width="150"></td>
|
|
<td>
|
|
[% prefname = "email-$constants.REL_ANY-$constants.EVT_REQUESTED_FLAG" %]
|
|
<input type="checkbox" name="[% prefname %]" id="[% prefname %]"
|
|
value="1"
|
|
[% " checked" IF
|
|
mail.${constants.REL_ANY}.${constants.EVT_REQUESTED_FLAG} %]>
|
|
<label for="[% prefname %]">Email me when someone sets a flag I asked for</label>
|
|
<br>
|
|
</td>
|
|
</tr>
|
|
[% IF user.is_global_watcher %]
|
|
<tr>
|
|
<td width="150"></td>
|
|
<td>
|
|
You are watching all [% terms.bugs %]. To be removed from this role,
|
|
contact
|
|
<a href="[% Param("user_mailto") %][% Param("maintainer") %]">[% Param("maintainer") %]</a>.
|
|
</td>
|
|
</tr>
|
|
[% END %]
|
|
</table>
|
|
|
|
<hr>
|
|
<b>Field/recipient specific options:</b>
|
|
<br>
|
|
<br>
|
|
|
|
[% events = [
|
|
{ id = constants.EVT_ADDED_REMOVED,
|
|
description = "I'm added to or removed from this capacity" },
|
|
{ id = constants.EVT_BUG_CREATED,
|
|
description = "A new $terms.bug is created" },
|
|
{ id = constants.EVT_OPENED_CLOSED,
|
|
description = "The $terms.bug is resolved or reopened" },
|
|
{ id = constants.EVT_PROJ_MANAGEMENT,
|
|
description = "The priority, status, severity, or milestone changes" },
|
|
{ id = constants.EVT_COMMENT,
|
|
description = "New comments are added" },
|
|
{ id = constants.EVT_ATTACHMENT,
|
|
description = "New attachments are added" },
|
|
{ id = constants.EVT_ATTACHMENT_DATA,
|
|
description = "Some attachment data changes" },
|
|
{ id = constants.EVT_KEYWORD,
|
|
description = "The keywords field changes" },
|
|
{ id = constants.EVT_CC,
|
|
description = "The CC field changes" },
|
|
{ id = constants.EVT_DEPEND_BLOCK,
|
|
description = "The dependency tree changes" },
|
|
{ id = constants.EVT_OTHER,
|
|
description = "Any field not mentioned above changes" },
|
|
{ id = constants.EVT_DEPEND_REOPEN,
|
|
description = "A blocking bug is reopened or closed" },
|
|
] %]
|
|
|
|
[% neg_events = [
|
|
{ id = constants.EVT_UNCONFIRMED,
|
|
description = "The $terms.bug is in the unconfirmed state" },
|
|
{ id = constants.EVT_CHANGED_BY_ME,
|
|
description = "The change was made by me" },
|
|
] %]
|
|
|
|
[% relationships = [
|
|
{ id = constants.REL_ASSIGNEE,
|
|
description = "Assignee" },
|
|
{ id = constants.REL_QA,
|
|
description = "QA Contact" },
|
|
{ id = constants.REL_REPORTER,
|
|
description = "Reporter" },
|
|
{ id = constants.REL_CC,
|
|
description = "CCed" },
|
|
{ id = constants.REL_VOTER,
|
|
description = "Voter" },
|
|
] %]
|
|
|
|
<table class="bz_emailprefs" border="1">
|
|
<tr>
|
|
<td colspan="[% (useqacontact AND usevotes) ? '5' :
|
|
((useqacontact OR usevotes) ? '4' : '3') %]"
|
|
align="center" width="50%">
|
|
<b>When my relationship to this [% terms.bug %] is:</b>
|
|
</td>
|
|
<td rowspan="2" width="40%">
|
|
<b>I want to receive mail when:</b>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
[% FOREACH relationship = relationships %]
|
|
[% NEXT IF (relationship.id == constants.REL_QA AND NOT useqacontact) OR
|
|
(relationship.id == constants.REL_VOTER AND NOT usevotes) %]
|
|
<th align="center" width="9%">
|
|
[% relationship.description FILTER html %]
|
|
</th>
|
|
[% END %]
|
|
</tr>
|
|
|
|
[% FOREACH event = events %]
|
|
[% count = loop.count() %]
|
|
<tr class="bz_row_[% count % 2 == 1 ? "odd" : "even" %]">
|
|
[% FOREACH relationship = relationships %]
|
|
[% NEXT IF (relationship.id == constants.REL_QA AND NOT useqacontact) OR
|
|
(relationship.id == constants.REL_VOTER AND NOT usevotes) %]
|
|
<td align="center">
|
|
<input type="checkbox"
|
|
name="email-[% relationship.id %]-[% event.id %]"
|
|
value="1"
|
|
[%# The combinations don't always make sense; disable a couple %]
|
|
[% IF event.id == constants.EVT_ADDED_REMOVED AND
|
|
(relationship.id == constants.REL_REPORTER OR
|
|
relationship.id == constants.REL_VOTER) %]
|
|
disabled
|
|
[% ELSIF mail.${relationship.id}.${event.id} %]
|
|
checked
|
|
[% END %]>
|
|
</td>
|
|
[% END %]
|
|
<td>
|
|
[% event.description FILTER html %]
|
|
</td>
|
|
</tr>
|
|
[% END %]
|
|
|
|
<tr>
|
|
<td colspan="[% (useqacontact AND usevotes) ? '5' :
|
|
((useqacontact OR usevotes) ? '4' : '3') %]"
|
|
align="center" width="50%">
|
|
|
|
</td>
|
|
<td width="40%">
|
|
<b>but not when (overrides above):</b>
|
|
</td>
|
|
</tr>
|
|
|
|
[% FOREACH event = neg_events %]
|
|
[% count = loop.count() %]
|
|
<tr class="bz_row_[% count % 2 == 1 ? "odd" : "even" %]">
|
|
[% FOREACH relationship = relationships %]
|
|
[% NEXT IF (relationship.id == constants.REL_QA AND NOT useqacontact) OR
|
|
(relationship.id == constants.REL_VOTER AND NOT usevotes) %]
|
|
<td align="center">
|
|
<input type="checkbox"
|
|
name="neg-email-[% relationship.id %]-[% event.id %]"
|
|
value="1"
|
|
[% " checked" IF NOT mail.${relationship.id}.${event.id} %]>
|
|
</td>
|
|
[% END %]
|
|
<td>
|
|
[% event.description FILTER html %]
|
|
</td>
|
|
</tr>
|
|
[% END %]
|
|
|
|
</table>
|
|
|
|
[%# Add hidden form fields for fields not used %]
|
|
[% FOREACH event = events %]
|
|
[% FOREACH relationship = relationships %]
|
|
[% IF (relationship.id == constants.REL_QA AND NOT useqacontact) OR
|
|
(relationship.id == constants.REL_VOTER AND NOT usevotes) %]
|
|
<input type="hidden"
|
|
name="email-[% relationship.id %]-[% event.id %]"
|
|
value="[% mail.${relationship.id}.${event.id} ? "1" : "0" %]">
|
|
[% END %]
|
|
[% END %]
|
|
[% END %]
|
|
|
|
[% FOREACH event = neg_events %]
|
|
[% FOREACH relationship = relationships %]
|
|
[% IF (relationship.id == constants.REL_QA AND NOT useqacontact) OR
|
|
(relationship.id == constants.REL_VOTER AND NOT usevotes) %]
|
|
<input type="hidden"
|
|
name="neg-email-[% relationship.id %]-[% event.id %]"
|
|
value="[% mail.${relationship.id}.${event.id} ? "0" : "1" %]">
|
|
[% END %]
|
|
[% END %]
|
|
[% END %]
|
|
|
|
<hr>
|
|
<b>User Watching</b>
|
|
|
|
<p>
|
|
If you watch a user, it is as if you are standing in their shoes for the
|
|
purposes of getting email. Email is sent or not according to <u>your</u>
|
|
preferences for <u>their</u> relationship to the [% terms.bug %]
|
|
(e.g. Assignee).
|
|
</p>
|
|
|
|
<hr>
|
|
|
|
<p>
|
|
[% IF watchedusers.size %]
|
|
You are watching everyone in the following list:
|
|
</p>
|
|
<p>
|
|
<select id="watched_by_you" name="watched_by_you" multiple="multiple" size="5">
|
|
[% FOREACH w = watchedusers %]
|
|
<option value="[% w.login FILTER html %]">[% w.identity FILTER html %]</option>
|
|
[% END %]
|
|
</select> <br />
|
|
<input type="checkbox" id="remove_watched_users" name="remove_watched_users" value="1">
|
|
<label for="remove_watched_users">Remove selected users from my watch list</label>
|
|
[% ELSE %]
|
|
You are currently not watching any users.
|
|
[% END %]
|
|
</p>
|
|
|
|
<p><a name="new_watched_by_you">Add users to my watch list (comma separated list)</a>:
|
|
<input size="60" name="new_watchedusers" id="new_watchedusers" value="" />
|
|
</p>
|
|
|
|
<hr />
|
|
|
|
<p><a name="watching_you" id="watching_you">Users watching you</a>:<br>
|
|
[% IF watchers.size %]
|
|
</p>
|
|
<p>
|
|
<select id="watchers" name="watchers" multiple="multiple" size="5">
|
|
[% FOREACH w = watchers %]
|
|
<option value="[% w.login FILTER html %]">[% w.identity FILTER html %]</option>
|
|
[% END %]
|
|
</select> <br />
|
|
<input type="checkbox" id="remove_watchers" name="remove_watchers" value="1">
|
|
<label for="remove_watchers">Remove selected users watching me</label>
|
|
[% ELSE %]
|
|
<i>No one</i>
|
|
[% END %]
|
|
</p>
|
|
|
|
<p><a name="new_watchers">Add users to watch me (comma separated list)</a>:
|
|
<input size="60" name="new_watchers" id="new_watchers" value="" />
|
|
</p>
|
|
|
|
<script type="text/javascript" language="JavaScript">
|
|
addListener(window, 'load', function() {
|
|
[%-# FIXME: remove hardcoded i18n message, also from js/field.js::userAutocomplete() %]
|
|
new SimpleAutocomplete("new_watchedusers",
|
|
function(h) { userAutocomplete(h, null); },
|
|
{ multipleDelimiter: ',', emptyText: 'No users found' });
|
|
new SimpleAutocomplete("new_watchers",
|
|
function(h) { userAutocomplete(h, null); },
|
|
{ multipleDelimiter: ',', emptyText: 'No users found' });
|
|
});
|
|
</script>
|
|
|
|
<hr />
|
|
|
|
<br />
|