| [%# 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. |
| # Also references the 'supportwatchers' Param. |
| #%] |
| |
| [% PROCESS global/variables.none.tmpl %] |
| |
| [% 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="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_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" }, |
| ] %] |
| |
| [% 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 %] |
| |
| [% IF Param('supportwatchers') %] |
| <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> |
| |
| <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 FILTER html %]">[% w FILTER html %]</option> |
| [% END %] |
| </select> <br /> |
| <input type="checkbox" id="remove_watched_users" name="remove_watched_users"> |
| <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" id="new_watched_by_you">Add users to my watch list (comma separated list)</a>: |
| <input size="60" name="new_watchedusers" value=""> |
| </p> |
| |
| <p><a name="watching_you" id="watching_you">Users watching you</a>:<br> |
| [% IF watchers.size %] |
| [% FOREACH watcher = watchers %] |
| [% watcher FILTER html %] <br> |
| [% END %] |
| [% ELSE %] |
| <i>No one</i> |
| [% END %] |
| </p> |
| |
| [% END %] |
| |
| <hr> |
| |
| <br> |