449 lines
15 KiB
Cheetah
449 lines
15 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): Erik Stambaugh <erik@dasbistro.com>
|
|
#%]
|
|
|
|
[%# INTERFACE:
|
|
# events: hash, keyed by event_id number. Values are anonymous hashes of:
|
|
# schedule: array of hashes containing schedule info:
|
|
# day: value in day column
|
|
# time: value selected in time column
|
|
# mailto_type: 0=user 1=group
|
|
# mailto: recipient's id (profile or group)
|
|
# queries: as with schedule, an anonymous array containing hashes of:
|
|
# name: the named query's name
|
|
# title: title to be displayed on the results
|
|
# sort: integer that sets execution order on named queries
|
|
#%]
|
|
|
|
[% title = "Set up whining" %]
|
|
[% PROCESS global/header.html.tmpl
|
|
title = title
|
|
style_urls = ['skins/standard/admin.css']
|
|
doc_section = "whining.html"
|
|
%]
|
|
|
|
<p>
|
|
"Whining" is when [% terms.Bugzilla %] executes a saved query at a regular interval
|
|
and sends the resulting list of [% terms.bugs %] via email.
|
|
</p>
|
|
|
|
<p>
|
|
To set up a new whine event, click "Add a new event." Enter a subject line
|
|
for the message that will be sent, along with a block of text that will
|
|
accompany the [% terms.bug %] list in the body of the message.
|
|
</p>
|
|
|
|
<p>
|
|
Schedules are added to an event by clicking on "Add a new schedule." A schedule
|
|
consists of a day, a time of day or interval of times
|
|
(e.g., every 15 minutes), and a target email address that may or may not be
|
|
alterable, depending on your privileges. Events may have more than one schedule
|
|
in order to run at multiple times or for different users.
|
|
</p>
|
|
|
|
<p>
|
|
Searches come from saved searches, which are created by executing a <a
|
|
href="query.cgi">search</a>, then telling [% terms.Bugzilla %] to remember
|
|
the search under a particular name. Add a query by clicking "Add a new
|
|
query", and select the desired saved search name under "Search" and add a
|
|
title for the [% terms.bug %] table. The optional number entered under
|
|
"Sort" will determine the execution order (lowest to highest) if multiple
|
|
queries are listed. If you check "One message per [% terms.bug %]," each [%
|
|
terms.bug %] that matches the search will be sent in its own email message.
|
|
</p>
|
|
|
|
<p>
|
|
All times are server local time ([% local_timezone FILTER html %]).
|
|
</p>
|
|
|
|
<form method="post" action="editwhines.cgi">
|
|
[%# This hidden submit button must be here to set default behavior when
|
|
the user presses return on a form input field #%]
|
|
<input type="submit" value="Update / Commit" name="commit"
|
|
style="display: none;" id="commit" />
|
|
<input type="hidden" name="update" value="1" />
|
|
<input type="hidden" name="token" value="[% token FILTER html %]" />
|
|
|
|
[% FOREACH event = events %]
|
|
|
|
<table class="eventbox" cellpadding="2">
|
|
<tr>
|
|
<th align="left">
|
|
Event:
|
|
</th>
|
|
<td align="right" colspan="2">
|
|
<input type="submit" value="Remove Event"
|
|
name="remove_event_[% event.key %]"
|
|
id="remove_event_[% event.key %]" />
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top" align="left">
|
|
Email subject:
|
|
</td>
|
|
<td colspan="2">
|
|
<input type="text" name="event_[% event.key %]_subject"
|
|
size="60" maxlength="128" value="
|
|
[%- event.value.subject FILTER html %]" />
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top" align="left">
|
|
Description:<br />(email text)
|
|
</td>
|
|
<td colspan="2">
|
|
[% INCLUDE global/textarea.html.tmpl
|
|
name = "event_${event.key}_body"
|
|
minrows = 3
|
|
maxrows = 10
|
|
defaultrows = 5
|
|
cols = 80
|
|
defaultcontent = event.value.body
|
|
%]
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td></td>
|
|
<td colspan="2">
|
|
<input type="checkbox" name="event_[% event.key %]_mailifnobugs"
|
|
id="event_[% event.key %]_mailifnobugs" [% ' checked="checked"' IF event.value.mailifnobugs == 1 %] />
|
|
<label for="event_[% event.key %]_mailifnobugs">Send a message even if there are no [% terms.bugs %] in the search result</label>
|
|
</td>
|
|
</tr>
|
|
|
|
[% IF event.value.schedule.size == 0 %]
|
|
|
|
<tr>
|
|
<td valign="top" align="left">
|
|
Schedule:
|
|
</td>
|
|
<td class="unset" colspan="2">
|
|
Not scheduled to run<br />
|
|
<input type="submit" value="Add a new schedule"
|
|
name="add_schedule_[% event.key %]"
|
|
id="add_schedule_[% event.key %]" />
|
|
</td>
|
|
</tr>
|
|
|
|
[% ELSE %]
|
|
|
|
<tr>
|
|
<td valign="top" align="left">
|
|
Schedule:
|
|
</td>
|
|
<td class="set" colspan="2">
|
|
|
|
<table>
|
|
<tr>
|
|
<th>
|
|
Interval
|
|
</th>
|
|
<th>
|
|
[% IF mail_others %]
|
|
Mail to
|
|
[% END %]
|
|
</th>
|
|
<th>
|
|
</th>
|
|
</tr>
|
|
[% FOREACH schedule = event.value.schedule %]
|
|
<tr>
|
|
<td align="left">
|
|
|
|
[%# these hidden fields allow us to compare old values instead
|
|
of reading the database to tell if a field has changed %]
|
|
|
|
<input type="hidden" value="[% schedule.day FILTER html %]"
|
|
name="orig_day_[% schedule.id %]" />
|
|
<input type="hidden" value="[% schedule.time FILTER html %]"
|
|
name="orig_time_[% schedule.id %]" />
|
|
[% PROCESS day_field val=schedule.day %]
|
|
[% PROCESS time_field val=schedule.time %]
|
|
</td>
|
|
<td align="left">
|
|
[% IF mail_others %]
|
|
<input type="hidden" name="orig_mailto_type_[% schedule.id %]"
|
|
value="[% schedule.mailto_type FILTER html %]" />
|
|
<select name="mailto_type_[% schedule.id %]">
|
|
<option value="0" [% IF schedule.mailto_type == 0 %]
|
|
selected
|
|
[% END %]>User</option>
|
|
<option value="1" [% IF schedule.mailto_type == 1 %]
|
|
selected
|
|
[% END %]>Group</option>
|
|
</select>
|
|
<input type="hidden" name="orig_mailto_[% schedule.id %]"
|
|
value="[% schedule.mailto FILTER html %]" />
|
|
<input type="text" name="mailto_[% schedule.id %]"
|
|
value="[% schedule.mailto FILTER html %]" size="30" />
|
|
[% END %]
|
|
</td>
|
|
<td align="left">
|
|
<input type="submit" value="Remove"
|
|
name="remove_schedule_[% schedule.id %]"
|
|
id="remove_schedule_[% schedule.id %]" />
|
|
</td>
|
|
</tr>
|
|
[% END %]
|
|
|
|
<tr>
|
|
<td colspan="3">
|
|
<input type="submit" value="Add a new schedule"
|
|
name="add_schedule_[% event.key %]"
|
|
id="add_schedule_[% event.key %]" />
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</td>
|
|
</tr>
|
|
|
|
[% END %]
|
|
|
|
[% IF event.value.queries.size == 0 %]
|
|
|
|
<tr>
|
|
<td valign="top" align="left">
|
|
Searches:
|
|
</td>
|
|
<td class="unset" align="left">
|
|
No searches <br />
|
|
<input type="submit" value="Add a new query"
|
|
name="add_query_[% event.key %]"
|
|
id="add_query_[% event.key %]" />
|
|
</td>
|
|
</tr>
|
|
|
|
[% ELSE %]
|
|
|
|
<tr>
|
|
<td valign="top" align="left">
|
|
Searches:
|
|
</td>
|
|
<td class="set" align="left" colspan="2">
|
|
|
|
<table>
|
|
<tr>
|
|
<th>Sort</th>
|
|
<th>Search/Report</th>
|
|
<th>Title</th>
|
|
<th></th>
|
|
<th></th>
|
|
</tr>
|
|
|
|
[% FOREACH query = event.value.queries %]
|
|
|
|
<tr>
|
|
<td align="left">
|
|
<input type="text" name="query_sort_[% query.id %]"
|
|
size="3" value="[% query.sort %]" />
|
|
<input type="hidden" value="[% query.sort %]"
|
|
name="orig_query_sort_[% query.id %]" />
|
|
</td>
|
|
<td align="left">
|
|
<input type="hidden" value="[% query.isreport %]-[% query.name FILTER html %]"
|
|
name="orig_query_name_[% query.id %]" />
|
|
[% PROCESS query_field thisquery=query.name isreport=query.isreport %]
|
|
</td>
|
|
<td align="left">
|
|
<input type="hidden" value="[% query.title FILTER html %]"
|
|
name="orig_query_title_[% query.id %]" />
|
|
<input type="text" name="query_title_[% query.id %]"
|
|
size="50" value="[% query.title FILTER html %]"
|
|
maxlength="64" />
|
|
</td>
|
|
<td align="left">
|
|
<input type="hidden" value="[% query.onemailperbug FILTER html %]"
|
|
name="orig_query_onemailperbug_[% query.id %]" />
|
|
<input type="checkbox" [% ' checked="checked"' IF query.onemailperbug == 1 %]
|
|
id="query_onemailperbug_[% query.id %]"
|
|
name="query_onemailperbug_[% query.id %]" />
|
|
<label for="query_onemailperbug_[% query.id %]">One message per [% terms.bug %]</label>
|
|
</td>
|
|
<td align="right">
|
|
<input type="submit" value="Remove"
|
|
name="remove_query_[% query.id %]"
|
|
id="remove_query_[% query.id %]" />
|
|
</td>
|
|
</tr>
|
|
|
|
[% END %]
|
|
|
|
<tr>
|
|
<td colspan="3">
|
|
<input type="submit" value="Add a new query"
|
|
name="add_query_[% event.key %]"
|
|
id="add_query_[% event.key %]" />
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
</td>
|
|
</tr>
|
|
|
|
[% END %]
|
|
|
|
<tr>
|
|
<td></td>
|
|
<td><input type="submit" value="Update / Commit" name="commit" id="update" /></td>
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
[% END %]
|
|
|
|
<p align="left">
|
|
<input type="submit" value="Add a new event" name="add_event" id="add_event" />
|
|
</p>
|
|
|
|
</form>
|
|
|
|
[% PROCESS global/footer.html.tmpl %]
|
|
|
|
[% BLOCK query_field +%]
|
|
|
|
[% IF available_queries.size > 0 || available_reports.size > 0 %]
|
|
|
|
<select name="query_name_[% query.id %]">
|
|
[% FOREACH q = available_queries %]
|
|
<option [% "selected" IF q == thisquery && !isreport %] value="0-[% q FILTER html %]">
|
|
[% q FILTER html %]
|
|
</option>
|
|
[% END %]
|
|
[% FOREACH q = available_reports %]
|
|
<option [% "selected" IF q == thisquery && isreport %] value="1-[% q FILTER html %]">
|
|
Report: [% q FILTER html %]
|
|
</option>
|
|
[% END %]
|
|
</select>
|
|
|
|
[% ELSE %]
|
|
Please visit the <a href="query.cgi">Search</a> page and save a query
|
|
[% END %]
|
|
|
|
[%+ END %]
|
|
|
|
[% BLOCK day_field +%]
|
|
<select name="day_[% schedule.id %]">
|
|
[%
|
|
options = [
|
|
['All', 'Each day', ],
|
|
['MF', 'Monday through Friday', ],
|
|
['Sun', 'Sunday', ],
|
|
['Mon', 'Monday', ],
|
|
['Tue', 'Tuesday', ],
|
|
['Wed', 'Wednesday', ],
|
|
['Thu', 'Thursday', ],
|
|
['Fri', 'Friday', ],
|
|
['Sat', 'Saturday', ],
|
|
['1', 'On the 1st of the month', ],
|
|
['2', 'On the 2nd of the month', ],
|
|
['3', 'On the 3rd of the month', ],
|
|
['4', 'On the 4th of the month', ],
|
|
['5', 'On the 5th of the month', ],
|
|
['6', 'On the 6th of the month', ],
|
|
['7', 'On the 7th of the month', ],
|
|
['8', 'On the 8th of the month', ],
|
|
['9', 'On the 9th of the month', ],
|
|
['10', 'On the 10th of the month', ],
|
|
['11', 'On the 11th of the month', ],
|
|
['12', 'On the 12th of the month', ],
|
|
['13', 'On the 13th of the month', ],
|
|
['14', 'On the 14th of the month', ],
|
|
['15', 'On the 15th of the month', ],
|
|
['16', 'On the 16th of the month', ],
|
|
['17', 'On the 17th of the month', ],
|
|
['18', 'On the 18th of the month', ],
|
|
['19', 'On the 19th of the month', ],
|
|
['20', 'On the 20th of the month', ],
|
|
['21', 'On the 21st of the month', ],
|
|
['22', 'On the 22nd of the month', ],
|
|
['23', 'On the 23rd of the month', ],
|
|
['24', 'On the 24th of the month', ],
|
|
['25', 'On the 25th of the month', ],
|
|
['26', 'On the 26th of the month', ],
|
|
['27', 'On the 27th of the month', ],
|
|
['28', 'On the 28th of the month', ],
|
|
['29', 'On the 29th of the month', ],
|
|
['30', 'On the 30th of the month', ],
|
|
['31', 'On the 31st of the month', ],
|
|
['last', 'Last day of the month', ],
|
|
]
|
|
%]
|
|
|
|
[% FOREACH option = options %]
|
|
<option value="[% option.0 %]"
|
|
[%- IF val == option.0 +%] selected[% END %]>
|
|
[%- option.1 -%]
|
|
</option>
|
|
[% END %]
|
|
|
|
</select>
|
|
[%+ END %]
|
|
|
|
[% BLOCK time_field +%]
|
|
<select name="time_[% schedule.id %]">
|
|
|
|
[%
|
|
options = [
|
|
[ '0', 'at midnight', ],
|
|
[ '1', 'at 01:00', ],
|
|
[ '2', 'at 02:00', ],
|
|
[ '3', 'at 03:00', ],
|
|
[ '4', 'at 04:00', ],
|
|
[ '5', 'at 05:00', ],
|
|
[ '6', 'at 06:00', ],
|
|
[ '7', 'at 07:00', ],
|
|
[ '8', 'at 08:00', ],
|
|
[ '9', 'at 09:00', ],
|
|
[ '10', 'at 10:00', ],
|
|
[ '11', 'at 11:00', ],
|
|
[ '12', 'at 12:00', ],
|
|
[ '13', 'at 13:00', ],
|
|
[ '14', 'at 14:00', ],
|
|
[ '15', 'at 15:00', ],
|
|
[ '16', 'at 16:00', ],
|
|
[ '17', 'at 17:00', ],
|
|
[ '18', 'at 18:00', ],
|
|
[ '19', 'at 19:00', ],
|
|
[ '20', 'at 20:00', ],
|
|
[ '21', 'at 21:00', ],
|
|
[ '22', 'at 22:00', ],
|
|
[ '23', 'at 23:00', ],
|
|
[ '60min', 'every hour', ],
|
|
[ '30min', 'every 30 minutes', ],
|
|
[ '15min', 'every 15 minutes', ],
|
|
]
|
|
%]
|
|
|
|
[% FOREACH option = options %]
|
|
<option value="[% option.0 %]"
|
|
[%- IF val == option.0 +%] selected[% END %]>
|
|
[%- option.1 -%]
|
|
</option>
|
|
[% END %]
|
|
|
|
</select>
|
|
|
|
[%+ END %]
|
|
|