зеркало из https://github.com/mozilla/pjs.git
Bug 135707 - rearrange templates to normalise filenames, and create directory structure which allows for localised versions of the templates. Earlier versions of these templates can be found, cvs removed, scattered around bugzilla/template/default; but there are no substantial changes between their initial checkin there and here.
This commit is contained in:
Родитель
26fdb2d3b8
Коммит
1038a4adc7
|
@ -0,0 +1,39 @@
|
|||
[%# 1.0@bugzilla.org %]
|
||||
[%# 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): John Vandenberg <zeroj@null.net>
|
||||
#%]
|
||||
From: bugzilla-admin-daemon
|
||||
To: [% emailaddress %]
|
||||
Subject: [% tokentype %] token cancelled
|
||||
|
||||
A token was cancelled from [% remoteaddress %].
|
||||
If you did not request this, it could be either an honest
|
||||
mistake or the result of a malicious hack attempt.
|
||||
|
||||
Take a look at the information below and forward this email
|
||||
to [% maintainer %] if you suspect foul play.
|
||||
|
||||
Token: [% token %]
|
||||
Token Type: [% tokentype %]
|
||||
User: [% emailaddress %]
|
||||
Issue Date: [% issuedate %]
|
||||
Event Data: [% eventdata %]
|
||||
Cancelled Because: [% cancelaction %]
|
||||
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = "Create a new Bugzilla account"
|
||||
%]
|
||||
|
||||
<p>
|
||||
To create a Bugzilla account, all that you need to do is to enter a
|
||||
legitimate e-mail address. The account will be created, and its
|
||||
password will be mailed to you. Optionally you may enter your real name
|
||||
as well.
|
||||
</p>
|
||||
|
||||
<form method="get" action="createaccount.cgi">
|
||||
<table>
|
||||
<tr>
|
||||
<td align="right">
|
||||
<b>E-mail address:</b>
|
||||
</td>
|
||||
<td>
|
||||
<input size="35" name="login">
|
||||
[% Param('emailsuffix') FILTER html %]
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">
|
||||
<b>Real name:</b>
|
||||
</td>
|
||||
<td>
|
||||
<input size="35" name="realname">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
||||
<input type="submit" value="Create Account">
|
||||
</form>
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,38 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = "Account Created"
|
||||
%]
|
||||
|
||||
<p>
|
||||
A new account,
|
||||
<tt>[% login FILTER html %]</tt>,
|
||||
has been created and a randomly-generated password has been e-mailed
|
||||
to that address.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
When the e-mail arrives,
|
||||
<a href="query.cgi?GoAheadAndLogIn=1">log in here</a>.
|
||||
</p>
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,36 @@
|
|||
[%# 1.0@bugzilla.org %]
|
||||
[%# 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): John Vandenberg <zeroj@null.net>
|
||||
#%]
|
||||
From: bugzilla-admin-daemon
|
||||
To: [% emailaddress %]
|
||||
Subject: Bugzilla Change Email Address Request
|
||||
|
||||
Bugzilla has received a request to change the email address
|
||||
for the [% oldemailaddress %] account to your address.
|
||||
|
||||
To confirm the change, visit the following link:
|
||||
|
||||
[% Param('urlbase') %]token.cgi?a=cfmem&t=[% token FILTER html %]
|
||||
|
||||
If you are not the person who made this request, or you wish to cancel
|
||||
this request, visit the following link:
|
||||
|
||||
[% Param('urlbase') %]token.cgi?a=cxlem&t=[% token FILTER html %]
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
[%# 1.0@bugzilla.org %]
|
||||
[%# 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): John Vandenberg <zeroj@null.net>
|
||||
#%]
|
||||
From: bugzilla-admin-daemon
|
||||
To: [% emailaddress %]
|
||||
Subject: Bugzilla Change Email Address Request
|
||||
Importance: High
|
||||
X-MSMail-Priority: High
|
||||
X-Priority: 1
|
||||
|
||||
Bugzilla has received a request to change the email address
|
||||
for your account to [% newemailaddress %].
|
||||
|
||||
If you are not the person who made this request, or you wish to cancel
|
||||
this request, visit the following link:
|
||||
|
||||
[% Param('urlbase') %]token.cgi?a=cxlem&t=[% token FILTER html %]
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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): John Vandenberg <zeroj@null.net>
|
||||
#%]
|
||||
|
||||
[% INCLUDE global/header %]
|
||||
|
||||
|
||||
<p>
|
||||
To change your email address, please enter the old email address:
|
||||
</p>
|
||||
|
||||
<form method="post" action="token.cgi">
|
||||
<input type="hidden" name="t" value=[% token FILTER html %]>
|
||||
<input type="hidden" name="a" value="chgem">
|
||||
<table>
|
||||
<tr>
|
||||
<th align="right">Old Email Address:</th>
|
||||
<td><input type="input" name="email" size="36"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th align="right"> </th>
|
||||
<td><input type="submit" value="Submit"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,34 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = "Account Exists"
|
||||
%]
|
||||
|
||||
<form method="get" action="token.cgi">
|
||||
<input type="hidden" name="a" value="reqpw" />
|
||||
<input type="hidden" name="loginname" value="[% login FILTER html %]" />
|
||||
A Bugzilla account for <tt>[% login FILTER html %]</tt> already exists. If you
|
||||
are the account holder and have forgotten your password,
|
||||
<input type="submit" value="submit a request to change it" />.
|
||||
</form>
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,99 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[%# INTERFACE:
|
||||
# realname: string. The user's real name, if any.
|
||||
# login: string. The user's Bugzilla login email address.
|
||||
# login_change_date: string. The date the email change will be complete. (optional)
|
||||
# new_login_name: string. The user's new Bugzilla login whilst not confirmed. (optional)
|
||||
#%]
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
Please enter your existing password to confirm account changes.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th align="right">Password:</th>
|
||||
<td>
|
||||
<input type="hidden" name="Bugzilla_login"
|
||||
value="[% login FILTER html %]" />
|
||||
<input type="password" name="Bugzilla_password" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2"><hr></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th align="right">New password:</th>
|
||||
<td>
|
||||
<input type="password" name="new_password1" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th align="right">Re-enter new password:</th>
|
||||
<td>
|
||||
<input type="password" name="new_password2" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th align="right">Your real name (optional, but encouraged):</th>
|
||||
<td>
|
||||
<input size="35" name="realname" value="[% realname FILTER html %]" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
[% IF Param('allowemailchange') %]
|
||||
[% IF login_change_date %]
|
||||
[% IF new_login_name %]
|
||||
<tr>
|
||||
<th align="right">Pending email address:</th>
|
||||
<td>[% new_login_name FILTER html %]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th align="right">Change request expires:</th>
|
||||
<td>[% login_change_date %]</td>
|
||||
</tr>
|
||||
[% ELSE %]
|
||||
<tr>
|
||||
<th align="right">Confirmed email address:</th>
|
||||
<td>[% login FILTER html %]
|
||||
</tr>
|
||||
<tr>
|
||||
<th align="right">Completion date:</th>
|
||||
<td>[% login_change_date %]</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
[% ELSE %]
|
||||
<tr>
|
||||
<th align="right">New email address:</th>
|
||||
<td>
|
||||
<input size="35" name="new_login_name">
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
[% END %]
|
||||
|
||||
</table>
|
|
@ -0,0 +1,157 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[%# INTERFACE:
|
||||
# watchedusers: string.
|
||||
# Comma-separated list of email addresses this user watches.
|
||||
# excludeself: boolean.
|
||||
# True if user is not receiving self-generated mail.
|
||||
# <rolename>: Multiple hashes, one for each rolename (e.g. owner; 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.
|
||||
#%]
|
||||
|
||||
<table>
|
||||
[% IF Param('supportwatchers') %]
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<hr />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
If you want to help cover for someone when they're on vacation, or if
|
||||
you need to do the QA related to all of their bugs, you can tell
|
||||
Bugzilla to send mail related to their bugs to you also. List the
|
||||
email addresses of any users you wish to watch here, separated by
|
||||
commas.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th align="right">Users to watch:</th>
|
||||
<td>
|
||||
<input size="35" name="watchedusers" value="[% watchedusers %]" />
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<p>
|
||||
If you don't like getting a notification for "trivial"
|
||||
changes to bugs, you can use the settings below to
|
||||
filter some (or even all) notifications.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr />
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<b>Global options:</b>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td width="150"></td>
|
||||
<td>
|
||||
Only email me reports of changes made by other people
|
||||
<input type="checkbox" name="ExcludeSelf" value="on"
|
||||
[% " checked" IF excludeself %]>
|
||||
<br>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr />
|
||||
<b>Field/recipient specific options:</b>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
|
||||
<table width="100%" border="1">
|
||||
<tr>
|
||||
<td colspan="5" align="center" width="50%">
|
||||
<b>When my relationship to this bug is:</b>
|
||||
</td>
|
||||
<td rowspan="2" width="50%">
|
||||
<b>I want to receive mail when:</b>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="center" width="10%">
|
||||
<b>Reporter</b>
|
||||
</td>
|
||||
<td align="center" width="10%">
|
||||
<b>Assignee</b>
|
||||
</td>
|
||||
<td align="center" width="10%">
|
||||
<b>QA Contact</b>
|
||||
</td>
|
||||
<td align="center" width="10%">
|
||||
<b>CC</b>
|
||||
</td>
|
||||
<td align="center" width="10%">
|
||||
<b>Voter</b>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
[% FOREACH reason = [
|
||||
{ name = 'Removeme',
|
||||
description = 'I\'m added to or removed from this capacity' },
|
||||
{ name = 'Comments',
|
||||
description = 'New Comments are added' },
|
||||
{ name = 'Attachments',
|
||||
description = 'New Attachments are added' },
|
||||
{ name = 'Status',
|
||||
description = 'Priority, status, severity, and/or milestone changes' },
|
||||
{ name = 'Resolved',
|
||||
description = 'The bug is resolved or verified' },
|
||||
{ name = 'Keywords',
|
||||
description = 'Keywords field changes' },
|
||||
{ name = 'CC',
|
||||
description = 'CC field changes' },
|
||||
{ name = 'Other',
|
||||
description = 'Any field not mentioned above changes' } ] %]
|
||||
<tr>
|
||||
[% FOREACH role = [ "Owner", "Reporter", "QAcontact", "CClist", "Voter" ]
|
||||
%]
|
||||
<td align="center">
|
||||
<input type="checkbox" name="email[% role %][% reason.name %]" value="on"
|
||||
[% " checked" IF $role.${reason.name} %]>
|
||||
</td>
|
||||
[% END %]
|
||||
<td>
|
||||
[% reason.description %]
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
</table>
|
||||
|
||||
<br>
|
|
@ -0,0 +1,76 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[%# INTERFACE:
|
||||
# mybugslink: boolean. True if the user wishes the My Bugs link to appear.
|
||||
# queries: array of hashes. May be empty. Each hash has two members:
|
||||
# name: string. The name of the query.
|
||||
# footer: boolean. True if the query appears in the footer.
|
||||
#%]
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th align="right">The 'My bugs' link:</th>
|
||||
<td>
|
||||
<select name="mybugslink">
|
||||
<option value="1">should appear on the footer of every page</option>
|
||||
<option value="0"
|
||||
[% " selected" IF NOT mybugslink %]>should not be displayed
|
||||
</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<input type="hidden" name="numqueries" value="[% queries.size %]" />
|
||||
[% IF queries.size %]
|
||||
[% FOREACH query = queries %]
|
||||
<tr>
|
||||
<th align="right">Your query named '[% query.name FILTER html %]':</th>
|
||||
<td>
|
||||
<select name="query-[% loop.index %]">
|
||||
<option value="0">should only appear in the query page</option>
|
||||
<option value="1"
|
||||
[% " selected" IF query.footer %]>
|
||||
should appear on the footer of every page
|
||||
</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<input type="hidden" name="name-[% loop.index %]"
|
||||
value="[% query.name FILTER html %]" />
|
||||
[% END %]
|
||||
|
||||
[% ELSE %]
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<br>
|
||||
If you create remembered queries using the
|
||||
<a href="query.cgi">query page</a>,
|
||||
you can then come to this page and choose to have some of them
|
||||
appear in the footer of each Bugzilla page.
|
||||
<br>
|
||||
<br>
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
|
||||
</table>
|
|
@ -0,0 +1,57 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[%# INTERFACE:
|
||||
# has_bits: array of strings. May be empty.
|
||||
# Descriptions of the permission bits the user has.
|
||||
# set_bits: array of strings. May be empty.
|
||||
# Descriptions of the permission bits the user can set for
|
||||
# other people.
|
||||
#%]
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
[% IF has_bits.size %]
|
||||
You have the following permission bits set on your account:
|
||||
<ul>
|
||||
[% FOREACH bit_description = has_bits %]
|
||||
<li>[% bit_description %]</li>
|
||||
[% END %]
|
||||
</ul>
|
||||
[% ELSE %]
|
||||
There are no permission bits set on your account.
|
||||
[% END %]
|
||||
|
||||
[% IF set_bits.size %]
|
||||
And you can turn on or off the following bits for
|
||||
<a HREF="editusers.cgi">other users</a>:
|
||||
<p>
|
||||
<ul>
|
||||
[% FOREACH bit_description = set_bits %]
|
||||
<li>[% bit_description %]</li>
|
||||
[% END %]
|
||||
</ul>
|
||||
</p>
|
||||
[% END %]
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
|
@ -0,0 +1,113 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[%# INTERFACE:
|
||||
# login: string. The user's Bugzilla login email address.
|
||||
# tabs: List of hashes. May not be empty. Each hash has three members:
|
||||
# name: string. Name of the tab (used internally.)
|
||||
# description: string. Description of the tab (used in tab title.)
|
||||
# saveable: boolean. True if tab has a form which can be submitted.
|
||||
# True if user is not receiving self-generated mail.
|
||||
# Note: For each tab name, a template "prefs/${tab.name}.tmpl" must exist,
|
||||
# and its interface must be fulfilled.
|
||||
# current_tab: A direct reference to one of the hashes in the tabs list.
|
||||
# This tab will be displayed.
|
||||
# changes_saved: boolean/string. True if the CGI processed form data before
|
||||
# displaying anything, and can contain an optional custom
|
||||
# message if required (which Perl still evaluates as True).
|
||||
#%]
|
||||
|
||||
[% filtered_login = login FILTER html %]
|
||||
[% INCLUDE global/header
|
||||
title = "User Preferences"
|
||||
h2 = filtered_login
|
||||
style = "td.selected_tab {
|
||||
border-width: 2px 2px 0px;
|
||||
border-style: solid;
|
||||
}
|
||||
td.unselected_tab, td.spacer {
|
||||
border-width: 0px 0px 2px 0px;
|
||||
border-style: solid;
|
||||
}"
|
||||
%]
|
||||
|
||||
<center>
|
||||
<table cellspacing="0" cellpadding="10" border="0" width="100%">
|
||||
<tr>
|
||||
<td class="spacer"> </td>
|
||||
|
||||
[% FOREACH tab = tabs %]
|
||||
[% IF tab.name == current_tab.name %]
|
||||
<td align="center" bgcolor="lightblue" class="selected_tab">
|
||||
[% tab.description %]
|
||||
</td>
|
||||
[% ELSE %]
|
||||
<td align="center" bgcolor="#BBBBEE" class="unselected_tab">
|
||||
<a HREF="userprefs.cgi?tab=[% tab.name %]">[% tab.description %]</a>
|
||||
</td>
|
||||
[% END %]
|
||||
[% END %]
|
||||
|
||||
<td class="spacer"> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
|
||||
[% IF changes_saved %]
|
||||
<p>
|
||||
<font color="red">
|
||||
The changes to your
|
||||
[% current_tab.description FILTER lower %] have been saved.
|
||||
</font>
|
||||
</p>
|
||||
[% IF changes_saved != 1 %]
|
||||
<p>
|
||||
[% changes_saved %]
|
||||
</p>
|
||||
[% END %]
|
||||
[% END %]
|
||||
|
||||
<h3>[% current_tab.description %]</h3>
|
||||
|
||||
<form method="post">
|
||||
<input type="hidden" name="tab" value="[% current_tab.name %]">
|
||||
|
||||
[% INCLUDE "prefs/${current_tab.name}.tmpl" IF current_tab.name.defined %]
|
||||
|
||||
[% IF current_tab.saveable %]
|
||||
<input type="hidden" name="dosave" value="1">
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td width="150"></td>
|
||||
<td>
|
||||
<input type="submit" value="Submit Changes">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
[% END %]
|
||||
|
||||
</form>
|
||||
|
||||
[% INCLUDE global/footer %]
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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): Myk Melez <myk@mozilla.org>
|
||||
#%]
|
||||
|
||||
<option value="text/plain">plain text (text/plain)</option>
|
||||
<option value="text/html">HTML source (text/html)</option>
|
||||
<option value="image/gif">GIF image (image/gif)</option>
|
||||
<option value="image/jpeg">JPEG image (image/jpeg)</option>
|
||||
<option value="image/png">PNG image (image/png)</option>
|
||||
<option value="application/octet-stream">binary file (application/octet-stream)</option>
|
|
@ -0,0 +1,130 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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): Myk Melez <myk@mozilla.org>
|
||||
#%]
|
||||
|
||||
[%# Define strings that will serve as the title and header of this page %]
|
||||
[% title = BLOCK %]Create New Attachment for Bug #[% bugid %][% END %]
|
||||
[% h1 = BLOCK %]Create New Attachment for <a href="show_bug.cgi?id=[% bugid %]">Bug #[% bugid %]</a>[% END %]
|
||||
[% h2 = BLOCK %][% bugsummary FILTER html %][% END %]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = title
|
||||
h1 = h1
|
||||
h2 = h2
|
||||
style = "
|
||||
th { text-align: right; vertical-align: baseline; white-space: nowrap; }
|
||||
td { text-align: left; vertical-align: baseline; padding-bottom: 5px; }
|
||||
"
|
||||
extra = "onload=\"setContentTypeDisabledState();\""
|
||||
%]
|
||||
|
||||
<form name="entryform" method="post" action="attachment.cgi" enctype="multipart/form-data">
|
||||
<input type="hidden" name="bugid" value="[% bugid %]">
|
||||
<input type="hidden" name="action" value="insert">
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th>File:</th>
|
||||
<td>
|
||||
<em>Enter the path to the file on your computer.</em><br>
|
||||
<input type="file" name="data" size="50">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Description:</th>
|
||||
<td>
|
||||
<em>Describe the attachment briefly.</em><br>
|
||||
<input type="text" name="description" size="60" maxlength="200">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th></th>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Content Type:</th>
|
||||
<td>
|
||||
<em>If the attachment is a patch, check the box below.</em><br>
|
||||
<input type="checkbox" name="ispatch" value="1" onchange="setContentTypeDisabledState();"> patch<br><br>
|
||||
|
||||
<em>Otherwise, choose a method for determining the content type.</em><br>
|
||||
<input type="radio" name="contenttypemethod" value="autodetect">
|
||||
auto-detect<br>
|
||||
<input type="radio" name="contenttypemethod" value="list">
|
||||
select from list: <select name="contenttypeselection" onchange="this.form.contenttypemethod[1].checked = true;">
|
||||
[% PROCESS attachment/contenttypes %]
|
||||
</select><br>
|
||||
<input type="radio" name="contenttypemethod" value="manual">
|
||||
enter manually: <input type="text" name="contenttypeentry" size="30" maxlength="200" onchange="if (this.value) this.form.contenttypemethod[2].checked = true;">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Obsoletes:</th>
|
||||
<td>
|
||||
<em>(optional) Check each existing attachment made obsolete by your new attachment.</em><br>
|
||||
[% IF attachments.size %]
|
||||
[% FOREACH attachment = attachments %]
|
||||
<input type="checkbox" name="obsolete" value="[% attachment.id %]">
|
||||
<a href="attachment.cgi?id=[% attachment.id %]&action=edit">[% attachment.id %]: [% attachment.description FILTER html %]</a><br>
|
||||
[% END %]
|
||||
[% ELSE %]
|
||||
[no attachments can be made obsolete]
|
||||
[% END %]
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Comment:</th>
|
||||
<td>
|
||||
<em>(optional) Add a comment about this attachment to the bug.</em><br>
|
||||
<textarea wrap="soft" name="comment" rows="6" cols="80"></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th> </th>
|
||||
<td><input type="submit" value="Submit"></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</form>
|
||||
|
||||
<script language="JavaScript" type="text/javascript">
|
||||
<!--
|
||||
function setContentTypeDisabledState()
|
||||
{
|
||||
var entryform = document.entryform;
|
||||
|
||||
var isdisabled = false;
|
||||
if (entryform.ispatch.checked)
|
||||
isdisabled = true;
|
||||
|
||||
for (var i=0 ; i<entryform.contenttypemethod.length ; i++)
|
||||
entryform.contenttypemethod[i].disabled = isdisabled;
|
||||
|
||||
entryform.contenttypeselection.disabled = isdisabled;
|
||||
entryform.contenttypeentry.disabled = isdisabled;
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
|
||||
[% INCLUDE global/footer %]
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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): Myk Melez <myk@mozilla.org>
|
||||
#%]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = "Changes Submitted"
|
||||
style = "th { text-align: left; }"
|
||||
%]
|
||||
|
||||
<table border="1">
|
||||
<tr>
|
||||
<td>
|
||||
<h2>
|
||||
<a title="[% description FILTER html %]" href="attachment.cgi?id=[% attachid %]&action=edit">Attachment #[% attachid %]</a>
|
||||
to <a href="show_bug.cgi?id=[% bugid %]">Bug #[% bugid %]</a> Created
|
||||
</h2>
|
||||
|
||||
[% mailresults %]
|
||||
|
||||
[% IF contenttypemethod == 'autodetect' %]
|
||||
<p>
|
||||
<b>Note:</b> Bugzilla automatically detected the content type
|
||||
<em>[% contenttype %]</em> for this attachment. If this is
|
||||
incorrect, correct the value by
|
||||
<a href="attachment.cgi?id=[% attachid %]&action=edit">editing the attachment</a>.
|
||||
</p>
|
||||
[% END %]
|
||||
</td>
|
||||
<td>
|
||||
<a href="show_bug.cgi?id=[% bugid %]">Go back to bug #[% bugid %]</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
<a href="attachment.cgi?bugid=[% bugid %]&action=enter">Create Another Attachment to Bug #[% bugid %]</a>
|
||||
</p>
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,226 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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): Myk Melez <myk@mozilla.org>
|
||||
#%]
|
||||
|
||||
[%# Define strings that will serve as the title and header of this page %]
|
||||
[% title = BLOCK %]Edit Attachment #[% attachid %] for Bug #[% bugid %][% END %]
|
||||
[% h1 = BLOCK %]Edit Attachment #[% attachid %] for <a href="show_bug.cgi?id=[% bugid %]">Bug #[% bugid %]</a>[% END %]
|
||||
[% h2 = BLOCK %][% bugsummary FILTER html %][% END %]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = title
|
||||
h1 = h1
|
||||
h2 = h2
|
||||
style = "
|
||||
th { text-align: right; vertical-align: top; }
|
||||
td { text-align: left; vertical-align: top; }
|
||||
td#info { text-align: right; vertical-align: top; }
|
||||
td#actions { text-align: right; vertical-align: bottom; }
|
||||
td#noview { text-align: left; vertical-align: center; }
|
||||
"
|
||||
%]
|
||||
|
||||
<script type="application/x-javascript" language="JavaScript">
|
||||
<!--
|
||||
function editAsComment()
|
||||
{
|
||||
// Get the content of the document as a string.
|
||||
var viewFrame = document.getElementById('viewFrame');
|
||||
var aSerializer = new XMLSerializer();
|
||||
var contentDocument = viewFrame.contentDocument;
|
||||
var theContent = aSerializer.serializeToString(contentDocument);
|
||||
|
||||
// If this is a plaintext document, remove cruft that Mozilla adds
|
||||
// because it treats it as an HTML document with a big PRE section.
|
||||
// http://bugzilla.mozilla.org/show_bug.cgi?id=86012
|
||||
var contentType = '[% contenttype %]';
|
||||
if ( contentType == 'text/plain' )
|
||||
{
|
||||
theContent = theContent.replace( /^<html><head\/><body><pre>/ , "" );
|
||||
theContent = theContent.replace( /<\/pre><\/body><\/html>$/ , "" );
|
||||
theContent = theContent.replace( /</gi , "<" );
|
||||
theContent = theContent.replace( />/gi , ">" );
|
||||
theContent = theContent.replace( /&/gi , "&" );
|
||||
}
|
||||
|
||||
// Add mail-style quote indicators (>) to the beginning of each line.
|
||||
// ".*\n" matches lines that end with a newline, while ".+" matches
|
||||
// the rare situation in which the last line of a file does not end
|
||||
// with a newline.
|
||||
theContent = theContent.replace( /(.*\n|.+)/g , ">$1" );
|
||||
|
||||
hideElementById('viewFrame');
|
||||
hideElementById('editButton');
|
||||
hideElementById('smallCommentFrame');
|
||||
|
||||
showElementById('undoEditButton');
|
||||
|
||||
// Show the TEXTAREA that will contain the editable attachment
|
||||
// and copy the content of the attachment into it.
|
||||
showElementById('editFrame');
|
||||
|
||||
var editFrame = document.getElementById('editFrame');
|
||||
editFrame.value = theContent;
|
||||
editFrame.value += "\n\n";
|
||||
}
|
||||
function undoEditAsComment()
|
||||
{
|
||||
// Hide the "edit attachment as comment" TEXTAREA and the "undo" button.
|
||||
hideElementById('undoEditButton');
|
||||
hideElementById('editFrame');
|
||||
|
||||
// Show the "view attachment" IFRAME, the "redo" button that allows the user
|
||||
// to go back to editing the attachment as a comment, and the small comment field.
|
||||
showElementById('viewFrame');
|
||||
showElementById('redoEditButton');
|
||||
showElementById('smallCommentFrame');
|
||||
|
||||
}
|
||||
function redoEditAsComment()
|
||||
{
|
||||
// Hide the "view attachment" IFRAME, the "redo" button that allows the user
|
||||
// to go back to editing the attachment as a comment, and the small comment field.
|
||||
hideElementById('viewFrame');
|
||||
hideElementById('redoEditButton');
|
||||
hideElementById('smallCommentFrame');
|
||||
|
||||
// Show the "edit attachment as comment" TEXTAREA and the "undo" button.
|
||||
showElementById('undoEditButton');
|
||||
showElementById('editFrame');
|
||||
}
|
||||
|
||||
function hideElementById(id)
|
||||
{
|
||||
var elm = document.getElementById(id);
|
||||
if (elm) {
|
||||
elm.style.display = 'none';
|
||||
}
|
||||
}
|
||||
|
||||
function showElementById(id, val)
|
||||
{
|
||||
var elm = document.getElementById(id);
|
||||
if (elm) {
|
||||
if (!val) val = 'inline';
|
||||
elm.style.display = val;
|
||||
}
|
||||
}
|
||||
|
||||
function normalizeComments()
|
||||
{
|
||||
// Remove the unused comment field from the document so its contents
|
||||
// do not get transmitted back to the server.
|
||||
|
||||
var small = document.getElementById('smallCommentFrame');
|
||||
var big = document.getElementById('editFrame');
|
||||
if ( small.style.display == 'none' )
|
||||
{
|
||||
small.parentNode.removeChild(small);
|
||||
}
|
||||
if ( big.style.display == 'none' )
|
||||
{
|
||||
big.parentNode.removeChild(big);
|
||||
}
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
|
||||
<form method="post" action="attachment.cgi" onsubmit="normalizeComments();">
|
||||
<input type="hidden" name="id" value="[% attachid %]">
|
||||
<input type="hidden" name="action" value="update">
|
||||
<input type="hidden" name="contenttypemethod" value="manual">
|
||||
|
||||
<table width="100%">
|
||||
|
||||
<tr>
|
||||
<td width="25%">
|
||||
<small>
|
||||
<b>Description:</b><br>
|
||||
<textarea rows="3" cols="25" name="description" wrap="soft">[% description FILTER html %]</textarea><br>
|
||||
|
||||
<b>MIME Type:</b><br>
|
||||
<input type="text" size="20" name="contenttypeentry" value="[% contenttype FILTER html %]"><br>
|
||||
|
||||
<b>Flags:</b><br>
|
||||
<input type="checkbox" name="ispatch" value="1"[% " checked" IF ispatch %]>patch
|
||||
<input type="checkbox" name="isobsolete" value="1"[% " checked" IF isobsolete %]>obsolete<br>
|
||||
|
||||
[% IF statusdefs.size %]
|
||||
<b>Status:</b><br>
|
||||
[% FOREACH def = statusdefs %]
|
||||
<input type="checkbox" name="status" value="[% def.id %]"[% " checked" IF statuses.${def.id} %]>[% def.name FILTER html %]<br>
|
||||
[% END %]
|
||||
[% END %]
|
||||
|
||||
<div id="smallCommentFrame">
|
||||
<b>Comment (on the bug):</b><br>
|
||||
<textarea name="comment" rows="5" cols="25" wrap="soft"></textarea><br>
|
||||
</div>
|
||||
|
||||
<input type="submit" value="Submit">
|
||||
|
||||
</small>
|
||||
</td>
|
||||
|
||||
[% IF isviewable %]
|
||||
<td width="75%">
|
||||
<textarea id="editFrame" name="comment" style="height: 400px; width: 100%; display: none;" cols="80" wrap="soft"></textarea>
|
||||
<iframe id="viewFrame" src="attachment.cgi?id=[% attachid %]&action=view" style="height: 400px; width: 100%;">
|
||||
<b>You cannot view the attachment while editing it because your browser does not support IFRAMEs.
|
||||
<a href="attachment.cgi?id=[% attachid %]&action=view">View the attachment on a separate page</a>.</b>
|
||||
</iframe>
|
||||
<script type="application/x-javascript" language="JavaScript">
|
||||
<!--
|
||||
if (typeof document.getElementById == "function") {
|
||||
document.write('<button type="button" id="editButton" onclick="editAsComment();">Edit Attachment As Comment</button>');
|
||||
document.write('<button type="button" id="undoEditButton" onclick="undoEditAsComment();" style="display: none;">Undo Edit As Comment</button>');
|
||||
document.write('<button type="button" id="redoEditButton" onclick="redoEditAsComment();" style="display: none;">Redo Edit As Comment</button>');
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
</td>
|
||||
[% ELSE %]
|
||||
<td id="noview" width="50%">
|
||||
<p><b>
|
||||
Attachment cannot be viewed because its MIME type is not either text/*, image/*, or application/vnd.mozilla.*.
|
||||
<a href="attachment.cgi?id=[% attachid %]&action=view">Download the attachment instead</a>.
|
||||
</b></p>
|
||||
</td>
|
||||
[% END %]
|
||||
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
Attachments on this Bug:
|
||||
[% FOREACH a = attachments %]
|
||||
[% IF a == attachid %]
|
||||
#[% a %]
|
||||
[% ELSE %]
|
||||
<a href="attachment.cgi?id=[% a %]&action=edit">#[% a %]</a>
|
||||
[% END %]
|
||||
[% "|" UNLESS loop.last() %]
|
||||
[% END %]
|
||||
|
||||
</form>
|
||||
|
||||
<br>
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,81 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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): Myk Melez <myk@mozilla.org>
|
||||
#%]
|
||||
|
||||
<br>
|
||||
<table cellspacing="0" cellpadding="4" border="1">
|
||||
<tr>
|
||||
<th bgcolor="#cccccc" align="left">Attachment</th>
|
||||
<th bgcolor="#cccccc" align="left">Type</th>
|
||||
<th bgcolor="#cccccc" align="left">Modified</th>
|
||||
<th bgcolor="#cccccc" align="left">Status</th>
|
||||
<th bgcolor="#cccccc" align="left">Actions</th>
|
||||
</tr>
|
||||
|
||||
[% FOREACH attachment = attachments %]
|
||||
<tr>
|
||||
<td valign="top">
|
||||
[% IF attachment.isobsolete %]
|
||||
<strike><a href="attachment.cgi?id=[% attachment.attachid %]&action=view">[% attachment.description FILTER html %]</a></strike>
|
||||
[% ELSE %]
|
||||
<a href="attachment.cgi?id=[% attachment.attachid %]&action=view">[% attachment.description FILTER html %]</a>
|
||||
[% END %]
|
||||
</td>
|
||||
|
||||
<td valign="top">
|
||||
[% IF attachment.ispatch %]
|
||||
<i>patch</i>
|
||||
[% ELSE %]
|
||||
[% attachment.contenttype FILTER html %]
|
||||
[% END %]
|
||||
</td>
|
||||
|
||||
<td valign="top">[% attachment.date %]</td>
|
||||
|
||||
<td valign="top">
|
||||
[% IF attachment.statuses.size == 0 %]
|
||||
<i>none</i>
|
||||
[% ELSE %]
|
||||
[% FOREACH s = attachment.statuses %]
|
||||
[% s FILTER html FILTER replace('\s', ' ') %]<br>
|
||||
[% END %]
|
||||
[% END %]
|
||||
</td>
|
||||
|
||||
<td valign="top">
|
||||
[% IF attachment.canedit %]
|
||||
<a href="attachment.cgi?id=[% attachment.attachid %]&action=edit">Edit</a>
|
||||
[% ELSE %]
|
||||
None
|
||||
[% END %]
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<a href="attachment.cgi?bugid=[% bugid %]&action=enter">Create a New Attachment</a> (proposed patch, testcase, etc.)
|
||||
</td>
|
||||
<td colspan="1">
|
||||
<a href="attachment.cgi?bugid=[% bugid %]&action=viewall">View All</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br>
|
|
@ -0,0 +1,98 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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): Myk Melez <myk@mozilla.org>
|
||||
#%]
|
||||
|
||||
[% filtered_summary = bugsummary FILTER html %]
|
||||
[% INCLUDE global/header
|
||||
title = "View All Attachments for Bug #$bugid"
|
||||
h1 = "View All Attachments for <a href=\"show_bug.cgi?id=$bugid\">Bug #$bugid</a>"
|
||||
h2 = filtered_summary
|
||||
style = "
|
||||
th { text-align: right; vertical-align: top; }
|
||||
td { text-align: left; vertical-align: top; }
|
||||
td#info { text-align: right; vertical-align: top; }
|
||||
td#actions { text-align: right; vertical-align: bottom; }
|
||||
"
|
||||
%]
|
||||
|
||||
<br>
|
||||
|
||||
[% FOREACH a = attachments %]
|
||||
|
||||
<div align="center">
|
||||
<table cellspacing="0" cellpadding="4" border="1" width="75%">
|
||||
<tr>
|
||||
<td valign="top" bgcolor="#cccccc" colspan="5">
|
||||
<big><b>Attachment #[% a.attachid %]</b></big>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
[% IF a.isobsolete %]
|
||||
<strike>[% a.description FILTER html %]</strike>
|
||||
[% ELSE %]
|
||||
[% a.description FILTER html %]
|
||||
[% END %]
|
||||
</td>
|
||||
|
||||
<td valign="top">
|
||||
[% IF a.ispatch %]
|
||||
<i>patch</i>
|
||||
[% ELSE %]
|
||||
[% a.contenttype FILTER html %]
|
||||
[% END %]
|
||||
</td>
|
||||
|
||||
<td valign="top">[% a.date %]</td>
|
||||
|
||||
<td valign="top">
|
||||
[% IF a.statuses.size == 0 %]
|
||||
<i>none</i>
|
||||
[% ELSE %]
|
||||
[% FOREACH s = a.statuses %]
|
||||
[% s FILTER html FILTER replace('\s', ' ') %]<br>
|
||||
[% END %]
|
||||
[% END %]
|
||||
</td>
|
||||
|
||||
<td valign="top">
|
||||
<a href="attachment.cgi?id=[% a.attachid %]&action=edit">Edit</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
[% IF a.isviewable %]
|
||||
<iframe src="attachment.cgi?id=[% a.attachid %]&action=view" width="75%" height="350">
|
||||
<b>You cannot view the attachment on this page because your browser does not support IFRAMEs.
|
||||
<a href="attachment.cgi?id=[% a.attachid %]&action=view">View the attachment on a separate page</a>.</b>
|
||||
</iframe>
|
||||
[% ELSE %]
|
||||
<p><b>
|
||||
Attachment cannot be viewed because its MIME type is not text/*, image/*, or application/vnd.mozilla.*.
|
||||
<a href="attachment.cgi?id=[% a.attachid %]&action=view">Download the attachment instead</a>.
|
||||
</b></p>
|
||||
[% END %]
|
||||
</div>
|
||||
|
||||
<br><br>
|
||||
|
||||
[% END %]
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,46 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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): Myk Melez <myk@mozilla.org>
|
||||
# Gervase Markham <gerv@gerv.net>
|
||||
#%]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = "Changes Submitted"
|
||||
style = "th { text-align: left; }"
|
||||
%]
|
||||
|
||||
<hr>
|
||||
|
||||
<table border="1">
|
||||
<tr>
|
||||
<td>
|
||||
<h2>Changes to
|
||||
<a href="attachment.cgi?id=[% attachid %]&action=edit">attachment [% attachid %]</a>
|
||||
of bug [% bugid %] submitted
|
||||
</h2>
|
||||
[% mailresults %]
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<a href="show_bug.cgi?id=[% bugid %]">Back to Bug #[% bugid %]</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,43 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[%# INTERFACE:
|
||||
# bug_id: integer. The bug ID.
|
||||
#
|
||||
# This template also needs to be called with the interface to the
|
||||
# activity.html.tmpl template fulfilled.
|
||||
#%]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = "Changes made to bug $bug_id"
|
||||
h1 = "Activity log"
|
||||
h2 = "Bug <a href='show_bug.cgi?id=$bug_id'>$bug_id</a>"
|
||||
%]
|
||||
|
||||
<br>
|
||||
|
||||
[% INCLUDE show/activity.html.tmpl %]
|
||||
|
||||
<p>
|
||||
<a href="show_bug.cgi?id=[% bug_id %]">Back to bug [% bug_id %]</a>
|
||||
</p>
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,91 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[%# INTERFACE:
|
||||
# operations: array of hashes. May be empty. Each has has three members:
|
||||
# who: string. who performed the operation
|
||||
# when: string. when they performed it
|
||||
# changes: hash. Details of what they changed. This hash has three
|
||||
# compulsory and one optional member:
|
||||
# field: string. The name of the field
|
||||
# removed: string. What was removed from the field
|
||||
# added: string. What was added to the field
|
||||
# attach_id: integer. If the change was adding an attachment, its id.
|
||||
# incomplete_data: boolean. True if some of the data is incomplete (because
|
||||
# it was affected by an old Bugzilla bug.)
|
||||
#%]
|
||||
|
||||
[% IF incomplete_data %]
|
||||
<p>
|
||||
There used to be a bug Bugzilla which caused activity data
|
||||
to be lost if there was a large number of cc's or dependencies. That
|
||||
has been fixed, however, there was some data already lost on this bug
|
||||
that could not be regenerated. The changes that the script could not
|
||||
reliably determine are prefixed by '?'.
|
||||
</p>
|
||||
[% END %]
|
||||
|
||||
[% IF operations.size > 0 %]
|
||||
<table border cellpadding="4">
|
||||
<tr>
|
||||
<th>Who</th>
|
||||
<th>When</th>
|
||||
<th>What</th>
|
||||
<th>Removed</th>
|
||||
<th>Added</th>
|
||||
</tr>
|
||||
|
||||
[% FOREACH operation = operations %]
|
||||
<tr>
|
||||
<td rowspan="[% operation.changes.size %]" valign="top">
|
||||
[% operation.who %]
|
||||
</td>
|
||||
<td rowspan="[% operation.changes.size %]" valign="top">
|
||||
[% operation.when %]
|
||||
</td>
|
||||
[% FOREACH change = operation.changes %]
|
||||
[% "</tr><tr>" IF loop.index > 0 %]
|
||||
<td>
|
||||
[% IF change.attachid %]
|
||||
<a href="attachment.cgi?id=[% change.attachid %]&action=view">
|
||||
Attachment #[% change.attachid %]</a>
|
||||
[% END %]
|
||||
[% change.field %]
|
||||
</td>
|
||||
<td>
|
||||
[% IF change.removed %]
|
||||
[% change.removed FILTER html %]
|
||||
[% ELSE %]
|
||||
|
||||
[% END %]
|
||||
</td>
|
||||
<td>
|
||||
[% IF change.added %]
|
||||
[% change.added FILTER html %]
|
||||
[% ELSE %]
|
||||
|
||||
[% END %]
|
||||
</td>
|
||||
[% END %]
|
||||
</tr>
|
||||
[% END %]
|
||||
</table>
|
||||
[% END %]
|
|
@ -0,0 +1,47 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = "Display bugs as XML"
|
||||
%]
|
||||
|
||||
<form method="get" action="xml.cgi">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
Display bugs as XML by entering a list of bug numbers here:
|
||||
</td>
|
||||
<td>
|
||||
<input name="id" size="30" />
|
||||
<input type="submit" value="Display as XML" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>
|
||||
(e.g. 1000, 2467, 852)
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,36 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[% UNLESS header_done %]
|
||||
[% INCLUDE global/header
|
||||
title = "Search by bug number"
|
||||
%]
|
||||
[% END %]
|
||||
|
||||
<form method="get" action="show_bug.cgi">
|
||||
<p>
|
||||
You may find a single bug by entering its bug id here:
|
||||
<input name="id" size="6">
|
||||
<input type="submit" value="Show Me This Bug">
|
||||
</p>
|
||||
</form>
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,54 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[% DEFAULT start_at = 0 %]
|
||||
[% count = 0 %]
|
||||
[% FOREACH comment = comments %]
|
||||
[% IF count >= start_at %]
|
||||
[% PROCESS a_comment %]
|
||||
[% END %]
|
||||
|
||||
[% count = count + 1 %]
|
||||
[% END %]
|
||||
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Block for individual comments #%]
|
||||
[%############################################################################%]
|
||||
|
||||
[% BLOCK a_comment %]
|
||||
[% IF count > 0 %]
|
||||
<br>
|
||||
<i>------- Additional Comment
|
||||
<a name="c[% count %]" href="#c[% count %]">#[% count %]</a> From
|
||||
<a href="mailto:[% comment.email FILTER html %]">[% comment.name FILTER html %]</a>
|
||||
[%+ comment.time %] -------
|
||||
</i>
|
||||
[% END %]
|
||||
|
||||
<br>
|
||||
[%# Don't indent the <pre> block, since then the spaces are displayed in the
|
||||
# generated HTML
|
||||
#%]
|
||||
<pre>
|
||||
[%- quoteUrls(comment.body) -%]
|
||||
</pre>
|
||||
[% END %]
|
|
@ -0,0 +1,257 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
# Ville Skyttä <ville.skytta@iki.fi>
|
||||
#%]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = "Enter Bug"
|
||||
h2 = "This page lets you enter a new bug into Bugzilla."
|
||||
%]
|
||||
|
||||
<form method="post" action="post_bug.cgi">
|
||||
<input type="hidden" name="product" value="[% product FILTER html %]" />
|
||||
|
||||
<table cellspacing="2" cellpadding="0" border="0">
|
||||
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
Before filling this in, please read the
|
||||
<a href="bugwritinghelp.html">bug-writing guidelines</a>.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><br></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right" valign="top"><strong>Reporter:</strong></td>
|
||||
<td valign="top">[% reporter FILTER html %]</td>
|
||||
|
||||
<td align="right" valign="top"><strong>Product:</strong></td>
|
||||
<td valign="top">[% product FILTER html %]</td>
|
||||
</tr>
|
||||
|
||||
[%# We can't use the select block in these two cases for various reasons. %]
|
||||
<tr>
|
||||
<td align="right" valign="top">
|
||||
<strong>Version:</strong>
|
||||
</td>
|
||||
<td>
|
||||
<select name="version" size="5">
|
||||
[%- FOREACH v = version %]
|
||||
<option value="[% v FILTER html %]"
|
||||
[% " selected=\"selected\"" IF v == default.version %]>[% v FILTER html -%]
|
||||
</option>
|
||||
[%- END %]
|
||||
</select>
|
||||
</td>
|
||||
|
||||
<td align="right" valign="top">
|
||||
<strong>
|
||||
<a href="describecomponents.cgi?product=[% product FILTER uri %]">
|
||||
Component:</a>
|
||||
</strong>
|
||||
</td>
|
||||
<td>
|
||||
<select name="component" size="5">
|
||||
[%- FOREACH c = component_ %]
|
||||
<option value="[% c FILTER html %]"
|
||||
[% " selected=\"selected\"" IF c == default.component_ %]>[% c FILTER html -%]
|
||||
</option>
|
||||
[%- END %]
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td colspan="3"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
[% sel = { description => 'Platform', name => 'rep_platform' } %]
|
||||
[% INCLUDE select %]
|
||||
|
||||
[% sel = { description => 'OS', name => 'op_sys' } %]
|
||||
[% INCLUDE select %]
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
[% IF Param('letsubmitterchoosepriority') %]
|
||||
[% sel = { description => 'Priority', name => 'priority' } %]
|
||||
[% INCLUDE select %]
|
||||
[% ELSE %]
|
||||
<input type="hidden" name="priority" value="[% default.priority %]" />
|
||||
[% END %]
|
||||
|
||||
[% sel = { description => 'Severity', name => 'bug_severity' } %]
|
||||
[% INCLUDE select %]
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td colspan="3"></td>
|
||||
</tr>
|
||||
|
||||
[% IF bug_status.size > 1 %]
|
||||
<tr>
|
||||
[% sel = { description => 'Initial State', name => 'bug_status' } %]
|
||||
[% INCLUDE select %]
|
||||
|
||||
<td colspan="2"></td>
|
||||
</tr>
|
||||
[% ELSE %]
|
||||
<input type="hidden" name="bug_status" value="[% default.bug_status %]" />
|
||||
[% END %]
|
||||
|
||||
<tr>
|
||||
<td align="right">
|
||||
<strong>
|
||||
<a href="bug_status.html#assigned_to">Assigned To:</a>
|
||||
</strong>
|
||||
</td>
|
||||
<td colspan="3">
|
||||
<input name="assigned_to" size="32"
|
||||
value="[% assigned_to FILTER html %]" />
|
||||
(Leave blank to assign to default component owner)
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right"><strong>Cc:</strong></td>
|
||||
<td colspan="3">
|
||||
<input name="cc" size="45" value="[% cc FILTER html %]" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td colspan="3"></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right"<strong>URL:</strong></td>
|
||||
<td colspan="3">
|
||||
<input name="bug_file_loc" size="60"
|
||||
value="[% bug_file_loc FILTER html %]" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right"><strong>Summary:</strong></td>
|
||||
<td colspan="3">
|
||||
<input name="short_desc" size="60" value="[% short_desc FILTER html %]" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr><td align="right" valign="top"><strong>Description:</strong></td>
|
||||
<td colspan="3">
|
||||
<textarea wrap="hard" name="comment" rows="10" cols="80">
|
||||
[% comment FILTER html %]</textarea>
|
||||
<br>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
[% IF group.size %]
|
||||
<br>
|
||||
<strong>
|
||||
Only users in the selected groups can view this bug:
|
||||
</strong>
|
||||
<br>
|
||||
<font size="-1">
|
||||
(Leave all boxes unchecked to make this a public bug.)
|
||||
</font>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<!-- Checkboxes -->
|
||||
[% FOREACH g = group %]
|
||||
|
||||
<input type="checkbox" name="bit-[% g.bit %]" value="1"
|
||||
[% " checked=\"checked\"" IF g.checked %] />[% g.description %]<br />
|
||||
[% END %]
|
||||
<br>
|
||||
[% END %]
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
<input type="submit" value=" Commit "
|
||||
onclick="if (this.form.short_desc.value == '')
|
||||
{ alert('Please enter a summary sentence for this bug.');
|
||||
return false; } return true;">
|
||||
|
||||
<input type="submit" name="maketemplate"
|
||||
value="Remember values as bookmarkable template" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
[% IF Param('usebrowserinfo') %]
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">
|
||||
<br>
|
||||
We've made a guess at your operating system and platform.
|
||||
Please check them and, if we got it wrong, email
|
||||
[% Param('maintainer') %].
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
|
||||
</table>
|
||||
<input type="hidden" name="form_name" value="enter_bug">
|
||||
</form>
|
||||
|
||||
[% INCLUDE global/footer %]
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Block for SELECT fields #%]
|
||||
[%############################################################################%]
|
||||
|
||||
[% BLOCK select %]
|
||||
[% IF sel.description %]
|
||||
<td align="right">
|
||||
<strong>
|
||||
<a href="bug_status.html#[% sel.name %]">[% sel.description %]:</a>
|
||||
</strong>
|
||||
</td>
|
||||
[% END %]
|
||||
|
||||
<td>
|
||||
<select name="[% sel.name %]">
|
||||
[%- FOREACH x = ${sel.name} %]
|
||||
<option value="[% x FILTER html %]"
|
||||
[% " selected=\"selected\"" IF x == default.${sel.name} %]>[% x FILTER html -%]
|
||||
</option>
|
||||
[%- END %]
|
||||
</select>
|
||||
</td>
|
||||
[% END %]
|
|
@ -0,0 +1,47 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = "Bug $bug_id Submitted"
|
||||
%]
|
||||
|
||||
<table border="1">
|
||||
<tr>
|
||||
<td>
|
||||
<h2>Bug [% bug_id %] has been added to the database.</h2>
|
||||
|
||||
[% mailresults %]
|
||||
|
||||
</td>
|
||||
<td>
|
||||
<a href="show_bug.cgi?id=[% bug_id %]">Back To Bug# [% bug_id %]</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
<a href="attachment.cgi?bugid=[% bug_id %]&action=enter">
|
||||
Attach a file to this bug</a>.
|
||||
</p>
|
||||
|
||||
[% INCLUDE show/navigate.html.tmpl %]
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,33 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = "Bookmarks are your friend"
|
||||
h1 = "Template constructed"
|
||||
%]
|
||||
|
||||
<p>
|
||||
If you bookmark <a href="enter_bug.cgi?[% url %]">this link</a>,
|
||||
going to the bookmark will bring up the enter bug page with the fields
|
||||
initialized as you've requested.
|
||||
</p>
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,98 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[%# INTERFACE:
|
||||
# bug_id: integer. The number of the bug(s).
|
||||
# multiple_bugs: boolean. True if bug_id contains > 1 bug number.
|
||||
# doall: boolean. True if we are displaying every bug in the database.
|
||||
# showsummary: boolean. True if we are showing bug summaries.
|
||||
# rankdir: string. "TB" if we are ranking top-to-bottom,
|
||||
"LR" if left-to-right.
|
||||
# image_url: string. The URL of the graphic showing the dependencies.
|
||||
# map_url: string. The URL of the map file for the image.
|
||||
#%]
|
||||
|
||||
[% title = "Dependency Graph"
|
||||
h1 = title
|
||||
%]
|
||||
|
||||
[% IF NOT multiple_bugs %]
|
||||
[% title = "$title for bug $bug_id"
|
||||
h1 = "$h1 for bug <a href='show_bug.cgi?id=$bug_id'>$bug_id</a>"
|
||||
%]
|
||||
[% END %]
|
||||
|
||||
[% INCLUDE global/header %]
|
||||
|
||||
<p>
|
||||
Green circles represent open bugs.
|
||||
</p>
|
||||
|
||||
<a href="[% map_url %]">
|
||||
<img src="[% image_url %]" ismap>
|
||||
</a>
|
||||
|
||||
<hr>
|
||||
|
||||
<form>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
Bug numbers:
|
||||
<input name="id" value="[% bug_id %]">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<input type="checkbox" name="doall"
|
||||
[% " checked" IF doall %]>
|
||||
Show <b>every</b> bug in the system with dependencies
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<input type="checkbox" name="showsummary"
|
||||
[% " checked" IF showsummary %]>
|
||||
Show the summaries of all displayed bugs
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<select name="rankdir">
|
||||
<option value="TB"
|
||||
[% " selected" IF rankdir == "TB" %]>
|
||||
Orient top-to-bottom
|
||||
</option>
|
||||
<option value="LR"
|
||||
[% " selected" IF rankdir == "LR" %]>
|
||||
Orient left-to-right
|
||||
</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<input type="submit" value="Change Parameters">
|
||||
</form>
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,208 @@
|
|||
[%# 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): Tobias Burnus <burnus@net-b.de>
|
||||
# Ville Skyttä <ville.skytta@iki.fi>
|
||||
# Myk Melez <myk@mozilla.org>
|
||||
#%]
|
||||
|
||||
[% PROCESS global/header
|
||||
title = "Dependency tree for Bug $bugid"
|
||||
h1 = "Dependency tree for bug <a href=\"show_bug.cgi?id=$bugid\">$bugid</a>"
|
||||
style = "strike { background-color: #d9d9d9; color: #000000; }"
|
||||
%]
|
||||
|
||||
[% PROCESS depthControlToolbar %]
|
||||
|
||||
[%# Display the tree of bugs that this bug depends on. %]
|
||||
<h3>Bugs that bug <a href="show_bug.cgi?id=[% bugid %]">[% bugid %]</a> depends on
|
||||
[% IF dependson_ids.size > 0 %]
|
||||
(<a href="buglist.cgi?bug_id=[% dependson_ids.join(",") %]">view as bug list</a>
|
||||
[% IF canedit && dependson_ids.size > 1 %]
|
||||
| <a href="buglist.cgi?bug_id=[% dependson_ids.join(",") %]&tweak=1">change several</a>
|
||||
[% END %])
|
||||
[% IF maxdepth || hide_resolved %]
|
||||
<small><b>
|
||||
(Only [% "open" IF hide_resolved %] bugs
|
||||
[% " whose depth is less than $maxdepth" IF maxdepth %]
|
||||
will be shown)
|
||||
</b></small>
|
||||
[% END %]
|
||||
</h3>
|
||||
[% INCLUDE display_tree tree=dependson_tree bug_id=bugid %]
|
||||
[% ELSE %]
|
||||
</h3>
|
||||
<p>None</p>
|
||||
[% END %]
|
||||
|
||||
[%# Display the tree of bugs that this bug blocks. %]
|
||||
<h3>Bugs that bug <a href="show_bug.cgi?id=[% bugid %]">[% bugid %]</a> blocks
|
||||
[% IF blocked_ids.size > 0 %]
|
||||
(<a href="buglist.cgi?branch_id=[% blocked_ids.join(",") %]">view as bug list</a>
|
||||
[% IF canedit && blocked_ids.size > 1 %]
|
||||
| <a href="buglist.cgi?branch_id=[% blocked_ids.join(",") %]&tweak=1">change several</a>
|
||||
[% END %])
|
||||
[% IF maxdepth || hide_resolved %]
|
||||
<small><b>
|
||||
(Only [% "open" IF hide_resolved %] bugs
|
||||
[% " whose depth is less than $maxdepth" IF maxdepth %]
|
||||
will be shown)
|
||||
</b></small>
|
||||
[% END %]
|
||||
</h3>
|
||||
[% INCLUDE display_tree tree=blocked_tree bug_id=bugid %]
|
||||
[% ELSE %]
|
||||
</h3>
|
||||
<p>None</p>
|
||||
[% END %]
|
||||
|
||||
[% PROCESS depthControlToolbar %]
|
||||
|
||||
[% PROCESS global/footer %]
|
||||
|
||||
|
||||
[%###########################################################################%]
|
||||
[%# Block to display a tree #%]
|
||||
[%###########################################################################%]
|
||||
|
||||
[% BLOCK display_tree %]
|
||||
<ul>
|
||||
[% FOREACH dep_id = tree.$bug_id.dependencies %]
|
||||
[% dep = tree.$dep_id %]
|
||||
<li>
|
||||
[% "<strike>" IF !dep.open %]
|
||||
<a href="show_bug.cgi?id=[% dep_id %]">[% dep_id %]
|
||||
[[% dep.milestone FILTER html %],
|
||||
[% dep.assignee_email FILTER html %]] -
|
||||
[% IF dep.seen %]
|
||||
<i><This bug appears elsewhere in this tree></i></a>
|
||||
[% ELSE %]
|
||||
[% dep.summary FILTER html %].</a>
|
||||
[% END %]
|
||||
[% "</strike>" IF !dep.open %]
|
||||
[% INCLUDE display_tree bug_id=dep_id
|
||||
IF dep.dependencies.size > 0 && !dep.seen %]
|
||||
</li>
|
||||
[% dep.seen = 1 %]
|
||||
[% END %]
|
||||
</ul>
|
||||
[% END %]
|
||||
|
||||
[%###########################################################################%]
|
||||
[%# Block for depth control toolbar #%]
|
||||
[%###########################################################################%]
|
||||
|
||||
[% BLOCK depthControlToolbar %]
|
||||
<table cellpadding="3" border="0" cellspacing="0" bgcolor="#d0d0d0">
|
||||
<tr>
|
||||
[%# Hide/show resolved button
|
||||
Swaps text depending on the state of hide_resolved %]
|
||||
<td align="center">
|
||||
<form method="get" action="showdependencytree.cgi"
|
||||
style="display: inline; margin: 0px;">
|
||||
<input name="id" type="hidden" value="[% bugid %]">
|
||||
[% IF maxdepth %]
|
||||
<input name="maxdepth" type="hidden" value="$maxdepth">
|
||||
[% END %]
|
||||
<input type="hidden" name="hide_resolved" value="[% hide_resolved ? 0 : 1 %]">
|
||||
<input type="submit" value="[% hide_resolved ? "Show" : "Hide" %] Resolved">
|
||||
</form>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
Max Depth:
|
||||
</td>
|
||||
|
||||
<td>
|
||||
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<form method="get" action="showdependencytree.cgi"
|
||||
style="display: inline; margin: 0px;">
|
||||
[%# set to one form %]
|
||||
<input type="submit" value=" 1 " [%
|
||||
realdepth < 2 || maxdepth == 1 ? "disabled" : ""
|
||||
%]>
|
||||
<input name="id" type="hidden" value="[% bugid %]">
|
||||
<input name="maxdepth" type="hidden" value="1">
|
||||
<input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
|
||||
</form>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<form method="get" action="showdependencytree.cgi"
|
||||
style="display: inline; margin: 0px;">
|
||||
[%# Minus one form
|
||||
Allow subtracting only when realdepth and maxdepth > 1 %]
|
||||
<input name="id" type="hidden" value="[% bugid %]">
|
||||
<input name="maxdepth" type="hidden" value="[%
|
||||
maxdepth == 1 ? 1
|
||||
: ( maxdepth ? maxdepth - 1 : realdepth - 1 )
|
||||
%]">
|
||||
<input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
|
||||
<input type="submit" value=" < " [%
|
||||
realdepth < 2 || ( maxdepth && maxdepth < 2 ) ? "disabled" : ""
|
||||
%]>
|
||||
</form>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<form method="get" action="showdependencytree.cgi"
|
||||
style="display: inline; margin: 0px;">
|
||||
[%# Limit entry form: the button can not do anything when total depth
|
||||
is less than two, so disable it %]
|
||||
<input name="maxdepth" size="4" maxlength="4" value="[%
|
||||
maxdepth > 0 ? maxdepth : ""
|
||||
%]">
|
||||
<input name="id" type="hidden" value="[% bugid %]">
|
||||
<input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
|
||||
<noscript>
|
||||
<input type="submit" value="Change" [% realdepth < 2 ? "disabled" : "" %]>
|
||||
</noscript>
|
||||
</form>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<form method="get" action="showdependencytree.cgi"
|
||||
style="display: inline; margin: 0px;">
|
||||
[%# plus one form
|
||||
Disable button if total depth < 2, or if depth set to unlimited %]
|
||||
<input name="id" type="hidden" value="[% bugid %]">
|
||||
[% IF maxdepth %]
|
||||
<input name="maxdepth" type="hidden" value="[% maxdepth + 1 %]">
|
||||
[% END %]
|
||||
<input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
|
||||
<input type="submit" value=" > " [%
|
||||
realdepth < 2 || ! maxdepth || maxdepth >= realdepth ?
|
||||
"disabled" : ""
|
||||
%]>
|
||||
</form>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<form method="get" action="showdependencytree.cgi"
|
||||
style="display: inline; margin: 0px;">
|
||||
[%# Unlimited button %]
|
||||
<input name="id" type="hidden" value="[% bugid %]">
|
||||
<input name="hide_resolved" type="hidden" value="[% hide_resolved %]">
|
||||
<input type="submit" value=" Unlimited ">
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
[% END %]
|
|
@ -0,0 +1,540 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[% filtered_desc = bug.short_desc FILTER html %]
|
||||
[% UNLESS header_done %]
|
||||
[% INCLUDE global/header
|
||||
title = "Bug $bug.bug_id - $bug.short_desc"
|
||||
h1 = "Bugzilla Bug $bug.bug_id"
|
||||
h2 = filtered_desc
|
||||
extra = navigation_links()
|
||||
%]
|
||||
[% END %]
|
||||
|
||||
[% PROCESS show/navigate.html.tmpl %]
|
||||
|
||||
<hr>
|
||||
|
||||
<form name="changeform" method="post" action="process_bug.cgi">
|
||||
|
||||
<input type="hidden" name="delta_ts" value="[% bug.delta_ts %]">
|
||||
<input type="hidden" name="longdesclength" value="[% bug.longdesclength %]">
|
||||
<input type="hidden" name="id" value="[% bug.bug_id %]">
|
||||
|
||||
[%# *** Platform Reporter Product OS AddCC *** %]
|
||||
|
||||
<table cellspacing="1" cellpadding="1" border="0">
|
||||
<tr>
|
||||
<td align="right">
|
||||
<b>Bug#:</b>
|
||||
</td>
|
||||
<td>
|
||||
<a href="[% Param('urlbase') %]show_bug.cgi?id=[% bug.bug_id %]">
|
||||
[% bug.bug_id %]</a>
|
||||
</td>
|
||||
|
||||
<td> </td>
|
||||
|
||||
<td align="right">
|
||||
<b>Platform:</b>
|
||||
</td>
|
||||
[% PROCESS select selname = "rep_platform" %]
|
||||
|
||||
<td align="right">
|
||||
<b>Reporter:</b>
|
||||
</td>
|
||||
<td>
|
||||
[% bug.reporter FILTER html %]
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">
|
||||
<b>Product:</b>
|
||||
</td>
|
||||
[% PROCESS select selname => "product" %]
|
||||
|
||||
<td align="right">
|
||||
<b>OS:</b>
|
||||
</td>
|
||||
[% PROCESS select selname => "op_sys" %]
|
||||
|
||||
<td align="right">
|
||||
<b>Add CC:</b>
|
||||
</td>
|
||||
<td>
|
||||
<input name="newcc" size="30" value="">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
[%# *** Component Version CC Priority Severity AssignedTo Milestone *** %]
|
||||
|
||||
<tr>
|
||||
<td align="right">
|
||||
<b>
|
||||
<a href="describecomponents.cgi?product=[% bug.product FILTER uri %]">
|
||||
Component</a>:
|
||||
</b>
|
||||
</td>
|
||||
<td>
|
||||
<select name="component">
|
||||
[% FOREACH x = component_ %]
|
||||
<option value="[% x FILTER html %]"
|
||||
[% " selected" IF x == bug.component %]>[% x FILTER html %]
|
||||
</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</td>
|
||||
|
||||
<td> </td>
|
||||
|
||||
<td align="right">
|
||||
<b>Version:</b>
|
||||
</td>
|
||||
[% PROCESS select selname => "version" %]
|
||||
|
||||
<td rowspan="4" align="right" valign="top">
|
||||
<b>CC:</b>
|
||||
</td>
|
||||
<td rowspan="4" valign="top">
|
||||
[% IF bug.cc %]
|
||||
<select name="cc" multiple size="5">
|
||||
[% FOREACH c = bug.cc %]
|
||||
<option value="[% c FILTER html %]">[% c FILTER html %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
<br>
|
||||
<input type="checkbox" name="removecc">Remove selected CCs
|
||||
<br>
|
||||
[% ELSE %]
|
||||
<input type="hidden" name="cc" value="">
|
||||
[% END %]
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">
|
||||
<b>
|
||||
<a href="bug_status.html">Status</a>:
|
||||
</b>
|
||||
</td>
|
||||
<td>[% bug.bug_status FILTER html %]</td>
|
||||
<td> </td>
|
||||
|
||||
<td align="right">
|
||||
<b><a href="bug_status.html#priority">Priority</a>:</b>
|
||||
</td>
|
||||
[% PROCESS select selname => "priority" %]
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">
|
||||
<b>
|
||||
<a href="bug_status.html">Resolution</a>:
|
||||
</b>
|
||||
</td>
|
||||
<td>[% bug.resolution FILTER html %]</td>
|
||||
<td> </td>
|
||||
|
||||
<td align="right">
|
||||
<b><a href="bug_status.html#severity">Severity</a>:</b>
|
||||
</td>
|
||||
[% PROCESS select selname = "bug_severity" %]
|
||||
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">
|
||||
<b>
|
||||
<a href="bug_status.html#assigned_to">Assigned To</a>:
|
||||
</b>
|
||||
</td>
|
||||
<td>[% bug.assigned_to FILTER html %]</td>
|
||||
<td> </td>
|
||||
|
||||
[% IF Param("usetargetmilestone") && bug.target_milestone %]
|
||||
<td align="right">
|
||||
<b>
|
||||
<a href="[% bug.milestoneurl FILTER uri %]">Target Milestone</a>:
|
||||
</b>
|
||||
</td>
|
||||
[% PROCESS select selname = "target_milestone" %]
|
||||
[% ELSE %]
|
||||
<td colspan="3"> </td>
|
||||
[% END %]
|
||||
</tr>
|
||||
|
||||
[%# *** QAContact URL Summary Whiteboard Keywords *** %]
|
||||
|
||||
[% IF Param('useqacontact') %]
|
||||
<tr>
|
||||
<td align="right">
|
||||
<b>QA Contact:</b>
|
||||
</td>
|
||||
<td colspan="7">
|
||||
<input name="qa_contact"
|
||||
value="[% bug.qa_contact FILTER html %]" size="60">
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
|
||||
<tr>
|
||||
<td align="right">
|
||||
<b>
|
||||
[% IF bug.bug_file_loc %]
|
||||
<a href="[% bug.bug_file_loc FILTER uri %]">URL:</a>
|
||||
[% ELSE %]
|
||||
URL:
|
||||
[% END %]
|
||||
</b>
|
||||
</td>
|
||||
<td colspan="7">
|
||||
<input name="bug_file_loc"
|
||||
value="[% bug.bug_file_loc FILTER html %]" size="60">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td align="right">
|
||||
<b>Summary:</b>
|
||||
</td>
|
||||
<td colspan="7">
|
||||
<input name="short_desc"
|
||||
value="[% bug.short_desc FILTER html %]" size="60">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
[% IF Param('usestatuswhiteboard') %]
|
||||
<tr>
|
||||
<td align="right">
|
||||
<b>Status Whiteboard:</b>
|
||||
</td>
|
||||
<td colspan="7">
|
||||
<input name="status_whiteboard"
|
||||
value="[% bug.status_whiteboard FILTER html %]" size="60">
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
|
||||
[% IF use_keywords %]
|
||||
<tr>
|
||||
<td align="right">
|
||||
<b>
|
||||
<a href="describekeywords.cgi">Keywords:</a>
|
||||
</b>
|
||||
<td colspan="7">
|
||||
<input name="keywords"
|
||||
value="[% bug.keywords.join(', ') FILTER html %]" size="60">
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
</table>
|
||||
|
||||
[%# *** Attachments *** %]
|
||||
|
||||
[% INCLUDE attachment/list.atml
|
||||
attachments = bug.attachments
|
||||
bugid = bug.bug_id %]
|
||||
|
||||
[%# *** Dependencies Votes *** %]
|
||||
|
||||
[% IF Param('usedependencies') %]
|
||||
<table>
|
||||
<tr>
|
||||
[% PROCESS dependencies
|
||||
dep = { title => "depends on", fieldname => "dependson" } %]
|
||||
<td rowspan="2">
|
||||
<a href="showdependencytree.cgi?id=[% bug.bug_id %]">Show
|
||||
dependency tree</a>
|
||||
|
||||
[% IF Param('webdotbase') %]
|
||||
<br>
|
||||
<a href="showdependencygraph.cgi?id=[% bug.bug_id %]">Show
|
||||
dependency graph</a>
|
||||
[% END %]
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
[% PROCESS dependencies
|
||||
dep = { title => "blocks", fieldname => "blocked" } %]
|
||||
</tr>
|
||||
</table>
|
||||
[% END %]
|
||||
|
||||
[% IF use_votes %]
|
||||
<table>
|
||||
<tr>
|
||||
<th>
|
||||
<a href="votehelp.html">Votes:</a>
|
||||
</th>
|
||||
<td>
|
||||
[% bug.votes %]
|
||||
<a href="votes.cgi?action=show_bug&bug_id=[% bug.bug_id %]">Show
|
||||
votes for this bug</a>
|
||||
<a href="votes.cgi?action=show_user&bug_id=[% bug.bug_id %]">Vote
|
||||
for this bug</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
[% END %]
|
||||
|
||||
[%# *** Comments Groups *** %]
|
||||
|
||||
<br>
|
||||
<b>Additional Comments:</b>
|
||||
<br>
|
||||
<textarea wrap="hard" name="comment" rows="10" cols="80"
|
||||
accesskey="c"></textarea>
|
||||
<br>
|
||||
|
||||
[% IF groups.size > 0 %]
|
||||
<br>
|
||||
<b>Only users in the selected groups can view this bug:</b>
|
||||
<br>
|
||||
<font size="-1">(Unchecking all boxes makes this a public bug.)</font>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
[% FOREACH group = groups %]
|
||||
|
||||
<input type="checkbox" name="bit-[% group.bit %]" value="1"
|
||||
[% " checked='checked'" IF group.ison %]
|
||||
[% " disabled='disabled'" IF NOT group.ingroup %]>
|
||||
[% group.description %]
|
||||
<br>
|
||||
[% END %]
|
||||
|
||||
[% IF NOT user.inallgroups %]
|
||||
<b>
|
||||
Only members of a group can change the visibility of a bug for
|
||||
that group
|
||||
</b>
|
||||
<br>
|
||||
[% END %]
|
||||
|
||||
[% IF bug.inagroup %]
|
||||
<p>
|
||||
<b>But users in the roles selected below can always view this bug:</b>
|
||||
<br>
|
||||
<small>
|
||||
(The assignee
|
||||
[% IF (Param('useqacontact')) %]
|
||||
and QA contact
|
||||
[% END %]
|
||||
can always see a bug, and this section does not take effect unless
|
||||
the bug is restricted to at least one group.)
|
||||
</small>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<input type="checkbox" name="reporter_accessible" value="1"
|
||||
[% " checked" IF bug.reporter_accessible %]>Reporter
|
||||
<input type="checkbox" name="cclist_accessible" value="1"
|
||||
[% " checked" IF bug.cclist_accessible %]>CC List
|
||||
</p>
|
||||
[% END %]
|
||||
[% END %]
|
||||
|
||||
[%# *** Knob *** %]
|
||||
|
||||
<br>
|
||||
<input type="radio" name="knob" value="none" checked>
|
||||
Leave as <b>[% bug.bug_status FILTER html %]
|
||||
[% bug.resolution FILTER html %]</b>
|
||||
<br>
|
||||
|
||||
[% knum = 1 %]
|
||||
|
||||
[% IF bug.bug_status == "UNCONFIRMED" &&
|
||||
(user.canedit || user.canconfirm) %]
|
||||
<input type="radio" name="knob" value="confirm">
|
||||
Confirm bug (change status to <b>NEW</b>)
|
||||
<br>
|
||||
[% knum = knum + 1 %]
|
||||
[% END %]
|
||||
|
||||
[% IF user.canedit %]
|
||||
[% IF bug.isopened %]
|
||||
[% IF bug.bug_status != "ASSIGNED" %]
|
||||
<input type="radio" name="knob" value="accept">
|
||||
Accept bug (
|
||||
[% "confirm bug, " IF bug.isunconfirmed %]change
|
||||
status to <b>ASSIGNED</b>)
|
||||
<br>
|
||||
[% knum = knum + 1 %]
|
||||
[% END %]
|
||||
|
||||
[% IF bug.resolution %]
|
||||
<input type="radio" name="knob" value="clearresolution">
|
||||
Clear the resolution (remove the current resolution of
|
||||
<b>[% bug.resolution FILTER html %]</b>)<br>
|
||||
[% knum = knum + 1 %]
|
||||
[% END %]
|
||||
|
||||
<input type="radio" name="knob" value="resolve">
|
||||
Resolve bug, changing <a href="bug_status.html">resolution</a> to
|
||||
<select name="resolution"
|
||||
onchange="document.changeform.knob[[% knum %]].checked=true">
|
||||
[% FOREACH r = resolution %]
|
||||
<option value="[% r FILTER html %]">[% r FILTER html %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
<br>
|
||||
[% knum = knum + 1 %]
|
||||
|
||||
<input type="radio" name="knob" value="duplicate">
|
||||
Resolve bug, mark it as duplicate of bug #
|
||||
<input name="dup_id" size="6"
|
||||
onchange="if (this.value != '')
|
||||
{document.changeform.knob[[% knum %]].checked=true}">
|
||||
<br>
|
||||
[% knum = knum + 1 %]
|
||||
|
||||
<input type="radio" name="knob" value="reassign">
|
||||
<a href="bug_status.html#assigned_to">Reassign</A> bug to
|
||||
<input name="assigned_to" size="32"
|
||||
onchange="if ((this.value != '[% bug.assigned_to_email FILTER js %]') &&
|
||||
(this.value != '')) {
|
||||
document.changeform.knob[[% knum %]].checked=true;
|
||||
}"
|
||||
value="[% bug.assigned_to_email FILTER html %]">
|
||||
<br>
|
||||
[% IF bug.isunconfirmed %]
|
||||
<input type="checkbox" name="andconfirm">
|
||||
and confirm bug (change status to <b>NEW</b>)
|
||||
<br>
|
||||
[% END %]
|
||||
[% knum = knum + 1 %]
|
||||
|
||||
<input type="radio" name="knob" value="reassignbycomponent">
|
||||
Reassign bug to owner
|
||||
[% "and QA contact" IF useqacontact %]
|
||||
of selected component
|
||||
<br>
|
||||
[% IF bug.isunconfirmed %]
|
||||
<input type="checkbox" name="andconfirm">
|
||||
and confirm bug (change status to <b>NEW</b>)
|
||||
<br>
|
||||
[% END %]
|
||||
[% knum = knum + 1 %]
|
||||
[% ELSE %]
|
||||
[% IF bug.resolution != "MOVED" ||
|
||||
(bug.resolution == "MOVED" && user.canmove) %]
|
||||
<input type="radio" name="knob" value="reopen"> Reopen bug
|
||||
<br>
|
||||
[% knum = knum + 1 %]
|
||||
[% END %]
|
||||
[% IF bug.bug_status == "RESOLVED" %]
|
||||
<input type="radio" name="knob" value="verify">
|
||||
Mark bug as <b>VERIFIED</b><br>
|
||||
[% knum = knum + 1 %]
|
||||
[% END %]
|
||||
[% IF bug.bug_status != "CLOSED" %]
|
||||
<input type="radio" name="knob" value="close">
|
||||
Mark bug as <b>CLOSED</b><br>
|
||||
[% knum = knum + 1 %]
|
||||
[% END %]
|
||||
[% END %]
|
||||
[% END %]
|
||||
|
||||
<input type="submit" value="Commit">
|
||||
<input type="hidden" name="form_name" value="process_bug">
|
||||
<p>
|
||||
<font size="+1">
|
||||
<b>
|
||||
<a href="show_activity.cgi?id=[% bug.bug_id %]">View Bug Activity</a>
|
||||
|
|
||||
<a href="long_list.cgi?buglist=[% bug.bug_id %]">Format For Printing</a>
|
||||
</b>
|
||||
</font>
|
||||
|
||||
[% IF user.canmove %]
|
||||
<font size="+1"><b> | </b></font>
|
||||
<input type="submit" name="action"
|
||||
value="[% Param("move-button-text") %]">
|
||||
[% END %]
|
||||
</p>
|
||||
</form>
|
||||
|
||||
[%# *** Additional Comments *** %]
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td align="left">
|
||||
<b>
|
||||
<a name="c0" href="#c0">Description</a>:
|
||||
</b>
|
||||
</td>
|
||||
<td align="right" width="100%">
|
||||
Opened: [% bug.creation_ts %]
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr>
|
||||
|
||||
[% PROCESS show/comments.tmpl
|
||||
comments = bug.comments
|
||||
%]
|
||||
|
||||
<hr>
|
||||
|
||||
[% PROCESS show/navigate.html.tmpl %]
|
||||
|
||||
<br>
|
||||
|
||||
[% INCLUDE global/footer %]
|
||||
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Block for dependencies #%]
|
||||
[%############################################################################%]
|
||||
|
||||
[% BLOCK dependencies %]
|
||||
<th align="right">Bug [% bug.bug_id %] [%+ dep.title %]:</th>
|
||||
<td>
|
||||
[% FOREACH depbug = bug.${dep.fieldname} %]
|
||||
[% GetBugLink(depbug, depbug) %][% " " %]
|
||||
[% END %]
|
||||
</td>
|
||||
<td>
|
||||
<input name="[% dep.fieldname %]"
|
||||
value="[% bug.${dep.fieldname}.join(', ') %]">
|
||||
</td>
|
||||
[% END %]
|
||||
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Block for SELECT fields #%]
|
||||
[%############################################################################%]
|
||||
|
||||
[% BLOCK select %]
|
||||
<td>
|
||||
<select name="[% selname %]">
|
||||
[% FOREACH x = ${selname} %]
|
||||
<option value="[% x FILTER html %]"
|
||||
[% " selected" IF x == bug.${selname} %]>[% x FILTER html %]
|
||||
</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</td>
|
||||
<td> </td>
|
||||
[% END %]
|
|
@ -0,0 +1,54 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[% IF bug_list.size > 0 %]
|
||||
[% this_bug_idx = lsearch(bug_list, bug.bug_id) %]
|
||||
<b>Bug List:</b>
|
||||
[% IF this_bug_idx != -1 %]
|
||||
([% this_bug_idx + 1 %] of [% bug_list.size %])
|
||||
[% END %]
|
||||
|
||||
<a href="show_bug.cgi?id=[% bug_list.first %]">First</a>
|
||||
<a href="show_bug.cgi?id=[% bug_list.last %]">Last</a>
|
||||
|
||||
[% IF this_bug_idx != -1 %]
|
||||
[% IF this_bug_idx > 0 %]
|
||||
[% prev_bug = this_bug_idx - 1 %]
|
||||
<a href="show_bug.cgi?id=[% bug_list.$prev_bug %]">Prev</a>
|
||||
[% ELSE %]
|
||||
<i><font color="#777777">Prev</font></i>
|
||||
[% END %]
|
||||
|
||||
[% IF this_bug_idx + 1 < bug_list.size %]
|
||||
[% next_bug = this_bug_idx + 1 %]
|
||||
<a href="show_bug.cgi?id=[% bug_list.$next_bug %]">Next</a>
|
||||
[% ELSE %]
|
||||
<i><font color="#777777">Next</font></i>
|
||||
[% END %]
|
||||
[% ELSE %]
|
||||
(This bug is not in your list)
|
||||
[% END %]
|
||||
|
||||
<a href="buglist.cgi?regetlastlist=1">Show list</a>
|
||||
[% END %]
|
||||
|
||||
<a href="query.cgi">Query page</a>
|
||||
<a href="enter_bug.cgi">Enter new bug</a>
|
|
@ -0,0 +1,156 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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): Terry Weissman <terry@mozilla.org>
|
||||
# Gervase Markham <gerv@gerv.net>
|
||||
#%]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = "Full Text Bug Listing"
|
||||
%]
|
||||
|
||||
[% IF bugs.first %]
|
||||
[% FOREACH bug = bugs %]
|
||||
[% PROCESS bug_display %]
|
||||
[% END %]
|
||||
[% ELSE %]
|
||||
<p>
|
||||
You'd have more luck if you gave me some bug numbers.
|
||||
</p>
|
||||
[% END %]
|
||||
|
||||
[% INCLUDE global/footer %]
|
||||
|
||||
|
||||
[%###########################################################################%]
|
||||
[%# Block for an individual bug #%]
|
||||
[%###########################################################################%]
|
||||
|
||||
[% BLOCK bug_display %]
|
||||
<img src="1x1.gif" width="1" height="80" align="left">
|
||||
<div align="center">
|
||||
<b>
|
||||
<font ="+3">Bug [% bug.bug_id %] - [% bug.short_desc FILTER html %]</font>
|
||||
</b>
|
||||
</div>
|
||||
|
||||
<table width="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<b>Bug#:</b>
|
||||
<a href="show_bug.cgi?id=[% bug.bug_id %]">[% bug.bug_id %]</a>
|
||||
</td>
|
||||
[% PROCESS cell attr = { description => "Product",
|
||||
name => "product" } %]
|
||||
[% PROCESS cell attr = { description => "Version",
|
||||
name => "version" } %]
|
||||
[% PROCESS cell attr = { description => "Platform",
|
||||
name => "rep_platform" } %]
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
[% PROCESS cell attr = { description => "OS/Version",
|
||||
name => "op_sys" } %]
|
||||
[% PROCESS cell attr = { description => "Status",
|
||||
name => "bug_status" } %]
|
||||
[% PROCESS cell attr = { description => "Severity",
|
||||
name => "bug_severity" } %]
|
||||
[% PROCESS cell attr = { description => "Priority",
|
||||
name => "priority" } %]
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
[% PROCESS cell attr = { description => "Resolution",
|
||||
name => "resolution" } %]
|
||||
[% PROCESS cell attr = { description => "Assigned To",
|
||||
name => "assigned_to" } %]
|
||||
[% PROCESS cell attr = { description => "Reported By",
|
||||
name => "reporter" } %]
|
||||
[% IF Param('useqacontact') %]
|
||||
[% PROCESS cell attr = { description => "QA Contact",
|
||||
name => "qa_contact" } %]
|
||||
[% END %]
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<b>Component:</b>
|
||||
[% bug.component %]
|
||||
</td>
|
||||
|
||||
<td colspan="2">
|
||||
[% IF Param('usetargetmilestone') %]
|
||||
<b>Target Milestone:</b>
|
||||
[% bug.target_milestone FILTER html %]
|
||||
[% END %]
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<b>URL:</b>
|
||||
<A HREF="[% bug.bug_file_loc %]">[% bug.bug_file_loc FILTER html %]</a>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<b>Summary:</b> [% bug.short_desc FILTER html %]
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
[% IF use_keywords %]
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<b>Keywords: </b> [% bug.keywords FILTER html %]
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
|
||||
[% IF Param("usestatuswhiteboard") %]
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<b>Status Whiteboard:</b>
|
||||
[% bug.status_whiteboard FILTER html %]
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<b>Description:</b>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
[% PROCESS show/comments.tmpl
|
||||
comments = bug.comments %]
|
||||
|
||||
<hr>
|
||||
[% END %]
|
||||
|
||||
|
||||
[%###########################################################################%]
|
||||
[%# Block for standard table cells #%]
|
||||
[%###########################################################################%]
|
||||
|
||||
[% BLOCK cell %]
|
||||
<td>
|
||||
<b>[% attr.description%]:</b>
|
||||
[% bug.${attr.name} FILTER html %]
|
||||
</td>
|
||||
[% END %]
|
|
@ -0,0 +1,46 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = "Remove your votes?"
|
||||
%]
|
||||
|
||||
<p>
|
||||
You are about to remove all of your bug votes. Are you sure you wish to
|
||||
remove your vote from every bug you've voted on?
|
||||
</p>
|
||||
|
||||
<form action="votes.cgi" method="post">
|
||||
<input type="hidden" name="action" value="vote">
|
||||
<p>
|
||||
<input type="radio" name="delete_all_votes" value="1">
|
||||
Yes, delete all my votes
|
||||
</p>
|
||||
<p>
|
||||
<input type="radio" name="delete_all_votes" value="0" checked="checked">
|
||||
No, go back and review my votes
|
||||
</p>
|
||||
<p>
|
||||
<input type="submit" value="Submit">
|
||||
</p>
|
||||
</form>
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,49 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = "Show Votes"
|
||||
h2 = "Bug <a href='show_bug.cgi?id=$bug_id'>$bug_id</a>"
|
||||
%]
|
||||
|
||||
<table cellspacing="4">
|
||||
<tr>
|
||||
<th>Who</th>
|
||||
<th>Number of votes</th>
|
||||
</tr>
|
||||
|
||||
[% FOREACH user = users %]
|
||||
<tr>
|
||||
<td>
|
||||
<a href="votes.cgi?action=show_user&user=[% user.name %]">
|
||||
[% user.name %]
|
||||
</a>
|
||||
</td>
|
||||
<td align="right">
|
||||
[% user.count %]
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
</table>
|
||||
|
||||
<p>Total votes: [% total %]</p>
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,130 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = "Show Votes"
|
||||
h2 = user.name
|
||||
%]
|
||||
|
||||
[% IF votes_recorded %]
|
||||
<p>
|
||||
<font color="red">
|
||||
The changes to your votes have been saved.
|
||||
</font>
|
||||
</p>
|
||||
[% ELSE %]
|
||||
<br>
|
||||
[% END %]
|
||||
|
||||
[% IF products.size %]
|
||||
<form action="votes.cgi">
|
||||
<input type="hidden" name="action" value="vote">
|
||||
<table cellspacing="4">
|
||||
<tr>
|
||||
<td></td>
|
||||
<th>Bug #</th>
|
||||
<th>Summary</th>
|
||||
<th>Votes</th>
|
||||
</tr>
|
||||
|
||||
[% FOREACH product = products %]
|
||||
<tr>
|
||||
<th>[% product.name FILTER html %]</th>
|
||||
<td></td>
|
||||
[% IF product.maxperbug < product.maxvotes AND
|
||||
product.maxperbug > 1 %]
|
||||
<td>
|
||||
<font size="-1">
|
||||
(Note: only [% product.maxperbug %] vote
|
||||
[% "s" IF product.maxperbug != 1 %] allowed per bug in
|
||||
this product.)
|
||||
</font>
|
||||
</td>
|
||||
[% END %]
|
||||
</tr>
|
||||
|
||||
[% FOREACH bug = product.bugs %]
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>
|
||||
[% "<strike>" IF NOT bug.opened %]
|
||||
<a href="show_bug.cgi?id=[% bug.id %]">
|
||||
[% bug.id %]</a>
|
||||
[% "</strike>" IF NOT bug.opened %]
|
||||
</td>
|
||||
<td>
|
||||
<a href="votes.cgi?action=show_bug&bug_id=[% bug.id %]">
|
||||
[% bug.summary FILTER html %]
|
||||
</a>
|
||||
</td>
|
||||
<td align="right">
|
||||
[% IF user.canedit %]
|
||||
[% IF product.onevoteonly %]
|
||||
<input type="checkbox" name="[% bug.id %]" value="1"
|
||||
[% " checked" IF bug.count %]>
|
||||
[% ELSE %]
|
||||
<input name="[% bug.id %]" value="[% bug.count %]"
|
||||
size="2">
|
||||
[% END %]
|
||||
[% ELSE %]
|
||||
[% bug.count %]
|
||||
[% END %]
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
|
||||
<tr>
|
||||
<td></td>
|
||||
<td colspan="3">[% product.total %] vote
|
||||
[% "s" IF product.total != 1 %] used out of [% product.maxvotes %]
|
||||
allowed.
|
||||
<br>
|
||||
<br>
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
</table>
|
||||
|
||||
[% IF user.canedit %]
|
||||
<input type="submit" value="Change My Votes">
|
||||
<br>
|
||||
<br>
|
||||
To change your votes, type in new numbers (using zero to
|
||||
mean no votes) or change the checkbox, and then click
|
||||
<b>Change My Votes</b>.
|
||||
[% END %]
|
||||
</form>
|
||||
[% ELSE %]
|
||||
<p>
|
||||
[% IF user.canedit %]
|
||||
You are
|
||||
[% ELSE %]
|
||||
This user is
|
||||
[% END %]
|
||||
currently not voting on any bugs.
|
||||
</p>
|
||||
[% END %]
|
||||
|
||||
<p>
|
||||
<a href="votehelp.html">Help with voting</a>.
|
||||
</p>
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,42 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[% DEFAULT title = "Choose a Product" %]
|
||||
[% INCLUDE global/header %]
|
||||
|
||||
<table>
|
||||
|
||||
[% FOREACH p = proddesc.keys.sort %]
|
||||
<tr>
|
||||
<th align="right" valign="top">
|
||||
<a href="[% target %]?product=[% p FILTER uri %]">
|
||||
[% p FILTER html %]</a>:
|
||||
</th>
|
||||
|
||||
[% IF proddesc.$p %]
|
||||
<td valign="top"> [% proddesc.$p %]</td>
|
||||
[% END %]
|
||||
</tr>
|
||||
[% END %]
|
||||
|
||||
</table>
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,57 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[% UNLESS header_done %]
|
||||
[% INCLUDE global/header %]
|
||||
[% END %]
|
||||
|
||||
<tt>
|
||||
<p>
|
||||
Bugzilla has suffered an internal error. Please save this page and send
|
||||
it to [% Param("maintainer") %] with details of what you were doing at
|
||||
the time this message appeared.
|
||||
</p>
|
||||
<script> <!--
|
||||
document.write("<p>URL: " + document.location + "</p>");
|
||||
// -->
|
||||
</script>
|
||||
</tt>
|
||||
|
||||
<table cellpadding="20">
|
||||
<tr>
|
||||
<td bgcolor="#ff0000">
|
||||
<font size="+2">
|
||||
[% error %]
|
||||
</font>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
[% IF variables %]
|
||||
<pre>
|
||||
Variables:
|
||||
[% FOREACH key = variables.keys %]
|
||||
[%+ key %]: [%+ variables.$key %]
|
||||
[% END %]
|
||||
</pre>
|
||||
[% END %]
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,6 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[% PerformSubsts(Param('footerhtml')) %]
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[% DEFAULT
|
||||
title = ""
|
||||
h1 = title
|
||||
h2 = ""
|
||||
extra = ""
|
||||
jscript = ""
|
||||
style = ""
|
||||
message = ""
|
||||
%]
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>[% title FILTER html %]</title>
|
||||
|
||||
[% Param('headerhtml') %]
|
||||
|
||||
[% jscript %]
|
||||
|
||||
<script type="application/x-javascript">
|
||||
<!--
|
||||
[%+ INCLUDE "help/show-hide.js.tmpl" %]
|
||||
// -->
|
||||
</script>
|
||||
|
||||
[% IF style %]
|
||||
<style type="text/css">
|
||||
[% style %]
|
||||
</style>
|
||||
[% END %]
|
||||
|
||||
[% IF style_url %]
|
||||
<link href="[% style_url %]" rel="stylesheet" type="text/css">
|
||||
[% END %]
|
||||
|
||||
</head>
|
||||
|
||||
<body [% Param('bodyhtml') %][% " " %][% extra %]>
|
||||
|
||||
[% PerformSubsts(Param('bannerhtml')) %]
|
||||
|
||||
[% IF h1 || h2 %]
|
||||
<table border="0" cellspacing="0">
|
||||
<tr>
|
||||
<td valign="top" align="left">
|
||||
<table border="0" cellpadding="0" cellspacing="2">
|
||||
<tr>
|
||||
<td valign="top" align="left" nowrap>
|
||||
<font size="+1"><b>[% h1 %]</b></font>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
<td valign="middle"> </td>
|
||||
<td valign="middle" align="left">[% h2 %]</td>
|
||||
</tr>
|
||||
</table>
|
||||
[% END %]
|
||||
|
||||
[% IF message %]
|
||||
<table width="100%" cellspacing="0" cellpadding="5" border="1"><tr><td>
|
||||
<font color="green">[% message %]</font>
|
||||
</td></tr></table>
|
||||
[% END %]
|
|
@ -0,0 +1,32 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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): Myk Melez <myk@mozilla.org>
|
||||
#%]
|
||||
|
||||
[%# INTERFACE:
|
||||
# form: hash; the form fields/values for which to generate hidden fields.
|
||||
# exclude: string; a regular expression matching fields to exclude
|
||||
# from the list of hidden fields generated by this template
|
||||
#%]
|
||||
|
||||
[%# Generate hidden form fields for non-excluded fields. %]
|
||||
[% FOREACH field = form %]
|
||||
[% NEXT IF field.key.search(exclude) %]
|
||||
<input type="hidden" name="[% field.key %]" value="[% field.value FILTER html %]">
|
||||
[% END %]
|
|
@ -0,0 +1,17 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[% DEFAULT title = "Bugzilla Message" %]
|
||||
|
||||
[% PROCESS global/header %]
|
||||
|
||||
[%# The "header" template automatically displays the contents of a "message"
|
||||
variable if it finds one, so it is not necessary to display the message
|
||||
here. %]
|
||||
|
||||
[%# Display a URL if the calling script has included one. %]
|
||||
[% IF url && link %]
|
||||
<p>
|
||||
<a href="[% url %]">[% link %]</a>
|
||||
</p>
|
||||
[% END %]
|
||||
|
||||
[% PROCESS global/footer %]
|
|
@ -0,0 +1,40 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[% UNLESS header_done %]
|
||||
[% INCLUDE global/header %]
|
||||
[% END %]
|
||||
|
||||
<table cellpadding="20">
|
||||
<tr>
|
||||
<td bgcolor="#ff0000">
|
||||
<font size="+2">
|
||||
[% error %]
|
||||
</font>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
Please press <b>Back</b> and try again.
|
||||
</p>
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,88 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# -*- mode: html -*- %]
|
||||
[%# 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): Terry Weissman <terry@mozilla.org>
|
||||
# Jacob Steenhagen <jake@acutex.net>
|
||||
#%]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = 'Bugzilla Main Page'
|
||||
%]
|
||||
|
||||
<script type="text/javascript" language="JavaScript">
|
||||
<!--
|
||||
function addSidebar() {
|
||||
if ((typeof window.sidebar == "object") && (typeof window.sidebar.addPanel == "function"))
|
||||
{
|
||||
window.sidebar.addPanel ("Bugzilla", "[% Param('urlbase') %]sidebar.cgi", "");
|
||||
}
|
||||
else
|
||||
{
|
||||
var rv = window.confirm ("This page is enhanced for use with Netscape 6. " + "Would you like to upgrade now?");
|
||||
if (rv)
|
||||
document.location.href = "http://home.netscape.com/download/index.html";
|
||||
}
|
||||
}
|
||||
//-->
|
||||
</script>
|
||||
|
||||
|
||||
<table width="100%"><tr>
|
||||
<td>
|
||||
<p>This is where we put in lots of nifty words explaining all about Bugzilla.</p>
|
||||
|
||||
But it all boils down to a choice of:
|
||||
<p>
|
||||
<a href="query.cgi">Query existing bug reports</a><br>
|
||||
<a href="enter_bug.cgi">Enter a new bug report</a><br>
|
||||
<a href="reports.cgi">Get summary reports</a><br>
|
||||
</p><p>
|
||||
[% IF username %]
|
||||
<a href="[% PerformSubsts(Param('mybugstemplate'), subst) %]">My Bugs</a><br>
|
||||
<a href="userprefs.cgi">Change password or user preferences</a><br>
|
||||
<a href="relogin.cgi">Logout [% username FILTER html %]</a><br>
|
||||
[% ELSE %]
|
||||
<a href="query.cgi?GoAheadAndLogIn=1">Log in to an existing account</a><br>
|
||||
<a href="createaccount.cgi">Open a new Bugzilla account</a><br>
|
||||
[% END %]
|
||||
</p><p>
|
||||
<a href="javascript:addSidebar()">Add to Sidebar</a> (Requires Mozilla or Netscape 6)<br>
|
||||
</p>
|
||||
<form name="f" action="show_bug.cgi" method="get"
|
||||
onsubmit="QuickSearch(f.id.value); return false;">
|
||||
<p>
|
||||
Enter a bug # or some search terms:<br>
|
||||
<input type="text" name="id">
|
||||
<input type="submit" value="Show">
|
||||
<a href="quicksearch.html">[Help]</a>
|
||||
</p>
|
||||
</form>
|
||||
</td>
|
||||
<td align="right"><img src="ant.jpg" width=329 height=220 border=2 alt="ant.jpg [8.5k]"></td>
|
||||
</tr></table>
|
||||
|
||||
<script type="text/javascript" language="JavaScript" src="localconfig.js"></script>
|
||||
<script type="text/javascript" language="JavaScript" src="quicksearch.js"></script>
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
document.forms['f'].id.focus();
|
||||
//-->
|
||||
</script>
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,51 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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): Dave Lawrence <dkl@redhat.com>
|
||||
#%]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = "Change Columns"
|
||||
%]
|
||||
|
||||
Check which columns you wish to appear on the list, and then click
|
||||
on submit. (Cookies are required.)
|
||||
<p>
|
||||
<form action="colchange.cgi">
|
||||
<input type="hidden" name="rememberedquery" value="[% buffer %]">
|
||||
[% FOREACH column = masterlist %]
|
||||
<input type="checkbox" id="[% column %]" name="column_[% column %]" [% "CHECKED" IF lsearch(collist, column) != -1 %]>
|
||||
<label for="[% column %]">[% desc.${column} %]</label><br>
|
||||
[% END %]
|
||||
</p><p>
|
||||
<input id="nosplitheader" type="radio" name="splitheader" value="0" [% "CHECKED" IF ! splitheader %]>
|
||||
<label for="nosplitheader">Normal headers (prettier)</label><br>
|
||||
<input id="splitheader" type="radio" name="splitheader" value="1" [% "CHECKED" IF splitheader %]>
|
||||
<label for="splitheader">Stagger headers (often makes list more compact)</label>
|
||||
</p><p>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
<form action="colchange.cgi">
|
||||
<input type="hidden" name="rememberedquery" value="[% buffer %]">
|
||||
<input type="hidden" name="resetit" value="1">
|
||||
<input type="submit" value="Reset to Bugzilla default">
|
||||
</form>
|
||||
</p>
|
||||
|
||||
[% INCLUDE global/footer %]
|
||||
|
|
@ -0,0 +1,316 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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): Myk Melez <myk@mozilla.org>
|
||||
#%]
|
||||
|
||||
<script type="text/javascript" language="JavaScript">
|
||||
var numelements = document.forms.changeform.elements.length;
|
||||
function SetCheckboxes(value) {
|
||||
var item;
|
||||
for (var i=0 ; i<numelements ; i++) {
|
||||
item = document.forms.changeform.elements[i];
|
||||
item.checked = value;
|
||||
}
|
||||
}
|
||||
document.write(' <input type="button" value="Uncheck All" onclick="SetCheckboxes(false);">');
|
||||
document.write(' <input type="button" value="Check All" onclick="SetCheckboxes(true);">');
|
||||
</script>
|
||||
|
||||
<hr />
|
||||
|
||||
<p><font size="-1">
|
||||
To change multiple bugs:
|
||||
<ol>
|
||||
<li>Check the bugs you want to change above.</li>
|
||||
<li>Make your changes in the form fields below. If the change
|
||||
you are making requires an explanation, include it in
|
||||
the comments box.</li>
|
||||
<li>Click the <em>Commit</em> button.</li>
|
||||
</ol>
|
||||
</font></p>
|
||||
|
||||
<table id="form">
|
||||
<tr>
|
||||
|
||||
<th><label for="product">Product:</label></th>
|
||||
<td>
|
||||
[% PROCESS selectmenu menuname = "product"
|
||||
menuitems = products %]
|
||||
</td>
|
||||
|
||||
<th><label for="version">Version:</label></th>
|
||||
<td>
|
||||
[% PROCESS selectmenu menuname = "version"
|
||||
menuitems = versions %]
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
<th>
|
||||
<label for="rep_platform">
|
||||
<a href="bug_status.html#rep_platform">Platform:</a>
|
||||
</label>
|
||||
</th>
|
||||
<td>
|
||||
[% PROCESS selectmenu menuname = "rep_platform"
|
||||
menuitems = platforms %]
|
||||
</td>
|
||||
|
||||
<th>
|
||||
<label for="priority">
|
||||
<a href="bug_status.html#priority">Priority:</a>
|
||||
</label>
|
||||
</th>
|
||||
<td>
|
||||
[% PROCESS selectmenu menuname = "priority"
|
||||
menuitems = priorities %]
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
<th><label for="component">Component:</label></th>
|
||||
<td>
|
||||
[% PROCESS selectmenu menuname = "component"
|
||||
menuitems = components %]
|
||||
</td>
|
||||
|
||||
<th>
|
||||
<label for="bug_severity">
|
||||
<a href="bug_status.html#severity">Severity:</a>
|
||||
</label>
|
||||
</th>
|
||||
<td>
|
||||
[% PROCESS selectmenu menuname = "bug_severity"
|
||||
menuitems = severities %]
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
<th><label for="target_milestone">Target Milestone:</label></th>
|
||||
<td colspan="3">
|
||||
[% PROCESS selectmenu menuname = "target_milestone"
|
||||
menuitems = targetmilestones %]
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
[% IF Param("useqacontact") %]
|
||||
<tr>
|
||||
<th><label for="qa_contact">QA Contact:</label></th>
|
||||
<td colspan="3">
|
||||
<input id="qa_contact"
|
||||
name="qa_contact"
|
||||
value="[% dontchange FILTER html %]"
|
||||
size="32">
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
|
||||
<tr>
|
||||
|
||||
<th><label for="masscc">CC List:</label></th>
|
||||
<td colspan="3">
|
||||
<input id="masscc" name="masscc" size="32">
|
||||
<select name="ccaction">
|
||||
<option value="add">Add these to the CC List</option>
|
||||
<option value="remove">Remove these from the CC List</option>
|
||||
</select>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
[% IF use_keywords %]
|
||||
<tr>
|
||||
|
||||
<th>
|
||||
<label for="keywords">
|
||||
<a href="describekeywords.cgi">Keywords:</a>
|
||||
</label>
|
||||
</th>
|
||||
<td colspan="3">
|
||||
<input id="keywords" name="keywords" size="32">
|
||||
<select name="keywordaction">
|
||||
<option value="add">Add these keywords</option>
|
||||
<option value="delete">Delete these keywords</option>
|
||||
<option value="makeexact">Make the keywords be exactly this list</option>
|
||||
</select>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
[% END %]
|
||||
|
||||
</table>
|
||||
|
||||
<input type="hidden" name="multiupdate" value="Y">
|
||||
|
||||
<label for="comment"><b>Additional Comments:</b></label><br />
|
||||
<textarea id="comment" name="comment" rows="5" cols="80" wrap="hard"></textarea><br />
|
||||
|
||||
[% IF groups.size > 0 %]
|
||||
|
||||
<b>Groupset:</b><br />
|
||||
<table border="1">
|
||||
<tr>
|
||||
<th>Don't<br />change<br />this group<br />restriction</td>
|
||||
<th>Remove<br />bugs<br />from this<br />group</td>
|
||||
<th>Add<br />bugs<br />to this<br />group</td>
|
||||
<th>Group Name:</td>
|
||||
</tr>
|
||||
|
||||
[% FOREACH group = groups %]
|
||||
<tr>
|
||||
<td align="center">
|
||||
<input type="radio" name="bit-[% group.bit %]" value="-1" checked>
|
||||
</td>
|
||||
<td align="center">
|
||||
<input type="radio" name="bit-[% group.bit %]" value="0">
|
||||
</td>
|
||||
[% IF group.isactive %]
|
||||
<td align="center">
|
||||
<input type="radio" name="bit-[% group.bit %]" value="1">
|
||||
</td>
|
||||
[% ELSE %]
|
||||
<td> </td>
|
||||
[% foundinactive = 1 %]
|
||||
[% END %]
|
||||
|
||||
<td>
|
||||
[% IF group.isactive %]
|
||||
[% group.description %]
|
||||
[% ELSE %]
|
||||
[% group.description FILTER strike %]
|
||||
[% END %]
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
[% END %]
|
||||
|
||||
</table>
|
||||
|
||||
[% IF foundinactive %]
|
||||
<font size="-1">(Note: Bugs may not be added to <strike>inactive
|
||||
groups</strike>, only removed.)</font><br />
|
||||
[% END %]
|
||||
|
||||
[% END %]
|
||||
|
||||
|
||||
|
||||
[% knum = 0 %]
|
||||
<input id="knob-none" type="radio" name="knob" value="none" CHECKED>
|
||||
<label for="knob-none">Do nothing else</label><br />
|
||||
|
||||
[% IF bugstatuses.size == 1 && bugstatuses.0 == unconfirmedstate %]
|
||||
[% knum = knum + 1 %]
|
||||
<input id="knob-confirm" type="radio" name="knob" value="confirm">
|
||||
<label for="knob-confirm">
|
||||
Confirm bugs (change status to <b>NEW</b>)
|
||||
</label><br />
|
||||
[% END %]
|
||||
|
||||
[% knum = knum + 1 %]
|
||||
<input id="knob-accept" type="radio" name="knob" value="accept">
|
||||
<label for="knob-accept">
|
||||
Accept bugs (change status to <b>ASSIGNED</b>)
|
||||
</label><br />
|
||||
|
||||
[%# If all the bugs being changed are open, allow the user to close them. %]
|
||||
[% IF !bugstatuses.containsany(closedstates) %]
|
||||
[% knum = knum + 1 %]
|
||||
<input id="knob-clearresolution" type="radio" name="knob" value="clearresolution">
|
||||
<label for="knob-clearresolution">Clear the resolution</label><br />
|
||||
|
||||
[% knum = knum + 1 %]
|
||||
<input id="knob-resolve" type="radio" name="knob" value="resolve">
|
||||
<label for="knob-resolve">
|
||||
Resolve bugs, changing <A HREF="bug_status.html">resolution</A> to
|
||||
</label>
|
||||
<select name="resolution" onchange="document.forms.changeform.knob[[% knum %]].checked=true">
|
||||
[% FOREACH resolution = resolutions %]
|
||||
[% NEXT IF !resolution %]
|
||||
<option value="[% resolution FILTER html %]" [% selected IF resolution == "FIXED" %]>
|
||||
[% resolution FILTER html %]
|
||||
</option>
|
||||
[% END %]
|
||||
</select><br />
|
||||
|
||||
[% END %]
|
||||
|
||||
[%# If all the bugs are closed, allow the user to reopen them. %]
|
||||
[% IF !bugstatuses.containsany(openstates) %]
|
||||
[% knum = knum + 1 %]
|
||||
<input id="knob-reopen" type="radio" name="knob" value="reopen">
|
||||
<label for="knob-reopen">Reopen bugs</label><br />
|
||||
[% END %]
|
||||
|
||||
[% IF bugstatuses.size == 1 %]
|
||||
[% IF bugstatuses.contains('RESOLVED') %]
|
||||
[% knum = knum + 1 %]
|
||||
<input id="knob-verify" type="radio" name="knob" value="verify">
|
||||
<label for="knob-verify">Mark bugs as <b>VERIFIED</b></label><br />
|
||||
[% ELSIF bugstatuses.contains('VERIFIED') %]
|
||||
[% knum = knum + 1 %]
|
||||
<input id="knob-close" type="radio" name="knob" value="close">
|
||||
<label for="knob-close">Mark bugs as <b>CLOSED</b></label><br />
|
||||
[% END %]
|
||||
[% END %]
|
||||
|
||||
[% knum = knum + 1 %]
|
||||
<input id="knob-reassign" type="radio" name="knob" value="reassign">
|
||||
<label for="knob-reassign"><a href="bug_status.html#assigned_to">
|
||||
Reassign</A> bugs to
|
||||
</label>
|
||||
<input name="assigned_to"
|
||||
value="[% user FILTER html %]"
|
||||
onchange="document.forms.changeform.knob[[% knum %]].checked = true;"
|
||||
size="32"><br />
|
||||
|
||||
[% knum = knum + 1 %]
|
||||
<input id="knob-reassignbycomponent"
|
||||
type="radio"
|
||||
name="knob"
|
||||
value="reassignbycomponent">
|
||||
<label for="knob-reassignbycomponent">
|
||||
Reassign bugs to owner of selected component
|
||||
</label><br />
|
||||
|
||||
<input type="submit" value="Commit">
|
||||
|
||||
[% IF ismover %]
|
||||
<input type="submit" name="action" value="[% Param('move-button-text') %]">
|
||||
[% END %]
|
||||
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Select Menu Block #%]
|
||||
[%############################################################################%]
|
||||
|
||||
[% BLOCK selectmenu %]
|
||||
<select id="[% menuname %]" name="[% menuname %]">
|
||||
<option value="[% dontchange FILTER html %]" selected>
|
||||
[% dontchange FILTER html %]
|
||||
</option>
|
||||
[% FOREACH menuitem = menuitems %]
|
||||
<option value="[% menuitem FILTER html %]">[% menuitem FILTER html %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
[% END %]
|
|
@ -0,0 +1,54 @@
|
|||
[% template_version = "1.0@bugzilla.org" %]
|
||||
[%# 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): Myk Melez <myk@mozilla.org>
|
||||
#%]
|
||||
|
||||
<?xml version="1.0"?>
|
||||
<!-- [% template_version %] -->
|
||||
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:bz="http://www.bugzilla.org/rdf#">
|
||||
|
||||
<bz:result about="[% Param('urlbase') %]buglist.cgi?[% urlquerypart FILTER html %]">
|
||||
|
||||
<bz:bugs>
|
||||
<Seq>
|
||||
[% FOREACH bug = bugs %]
|
||||
<li>
|
||||
|
||||
<bz:bug about="[% Param('urlbase') %]show_bug.cgi?id=[% bug.id %]">
|
||||
|
||||
<bz:id>[% bug.id %]</bz:id>
|
||||
|
||||
[% FOREACH column = displaycolumns %]
|
||||
<bz:[% column %]>[% bug.$column FILTER html %]</bz:[% column %]>
|
||||
[% END %]
|
||||
|
||||
</bz:bug>
|
||||
|
||||
</li>
|
||||
|
||||
[% END %]
|
||||
|
||||
</Seq>
|
||||
|
||||
</bz:bugs>
|
||||
|
||||
</bz:result>
|
||||
|
||||
</RDF>
|
|
@ -0,0 +1,45 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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): Myk Melez <myk@mozilla.org>
|
||||
#%]
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Initialization #%]
|
||||
[%############################################################################%]
|
||||
|
||||
[% DEFAULT title = "Bug List" %]
|
||||
[% title = title FILTER html %]
|
||||
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Bug Table #%]
|
||||
[%############################################################################%]
|
||||
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>[% title %]</title>
|
||||
<link href="css/buglist.css" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
[% PROCESS buglist/table.tmpl %]
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -0,0 +1,161 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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): Myk Melez <myk@mozilla.org>
|
||||
#%]
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Template Initialization #%]
|
||||
[%############################################################################%]
|
||||
|
||||
[% DEFAULT title = "Bug List" %]
|
||||
[% style_url = "css/buglist.css" %]
|
||||
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Page Header #%]
|
||||
[%############################################################################%]
|
||||
|
||||
[% PROCESS global/header
|
||||
title = title
|
||||
style = style
|
||||
%]
|
||||
|
||||
<div align="center">
|
||||
<b>[% currenttime %]</b><br />
|
||||
|
||||
[% IF debug %]
|
||||
<p>[% query FILTER html %]</p>
|
||||
[% END %]
|
||||
|
||||
[% IF quip %]
|
||||
<a href="quips.cgi"><i>[% quip FILTER html %]</i></a>
|
||||
[% END %]
|
||||
|
||||
</div>
|
||||
|
||||
[% IF toolong %]
|
||||
<h2>
|
||||
This list is too long for Bugzilla's little mind; the
|
||||
Next/Prev/First/Last buttons won't appear on individual bugs.
|
||||
</h2>
|
||||
[% END %]
|
||||
|
||||
<hr />
|
||||
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Preceding Status Line #%]
|
||||
[%############################################################################%]
|
||||
|
||||
[% IF bugs.size > 9 %]
|
||||
[% bugs.size %] bugs found.
|
||||
[% END %]
|
||||
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Start of Change Form #%]
|
||||
[%############################################################################%]
|
||||
|
||||
[% IF dotweak %]
|
||||
<form name="changeform" method="post" action="process_bug.cgi">
|
||||
[% END %]
|
||||
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Bug Table #%]
|
||||
[%############################################################################%]
|
||||
|
||||
[% FLUSH %]
|
||||
[% PROCESS buglist/table.tmpl %]
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Succeeding Status Line #%]
|
||||
[%############################################################################%]
|
||||
|
||||
[% IF bugs.size == 0 %]
|
||||
Zarro Boogs found.
|
||||
<p>
|
||||
<a href="query.cgi">Query Page</a>
|
||||
<a href="enter_bug.cgi">Enter New Bug</a>
|
||||
<a href="query.cgi?[% urlquerypart %]">Edit this query</a>
|
||||
</p>
|
||||
|
||||
[% ELSIF bugs.size == 1 %]
|
||||
One bug found.
|
||||
|
||||
[% ELSE %]
|
||||
[% bugs.size %] bugs found.
|
||||
|
||||
[% END %]
|
||||
|
||||
<br />
|
||||
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Rest of Change Form #%]
|
||||
[%############################################################################%]
|
||||
|
||||
[% IF dotweak %]
|
||||
|
||||
[% PROCESS "buglist/change-form.tmpl" %]
|
||||
|
||||
</form>
|
||||
|
||||
<hr />
|
||||
|
||||
[% END %]
|
||||
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Navigation Bar #%]
|
||||
[%############################################################################%]
|
||||
|
||||
[% IF bugs.size > 0 %]
|
||||
<form method="post" action="long_list.cgi">
|
||||
<input type="hidden" name="buglist" value="[% buglist %]">
|
||||
<input type="submit" value="Long Format">
|
||||
|
||||
<a href="query.cgi">Query Page</a>
|
||||
<a href="enter_bug.cgi">Enter New Bug</a>
|
||||
<a href="colchange.cgi?[% urlquerypart %]">Change Columns</a>
|
||||
|
||||
[% IF bugs.size > 1 && caneditbugs && !dotweak %]
|
||||
<a href="buglist.cgi?[% urlquerypart %]
|
||||
[%- "&order=$order" FILTER uri html IF order %]&tweak=1">Change Several
|
||||
Bugs at Once</a>
|
||||
|
||||
[% END %]
|
||||
|
||||
[% IF bugowners %]
|
||||
<a href="mailto:[% bugowners %]">Send Mail to Bug Owners</a>
|
||||
[% END %]
|
||||
|
||||
<a href="query.cgi?[% urlquerypart %]">Edit this Query</a>
|
||||
|
||||
</form>
|
||||
|
||||
[% END %]
|
||||
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Page Footer #%]
|
||||
[%############################################################################%]
|
||||
|
||||
[% PROCESS global/footer %]
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = "Bugzilla Quip System"
|
||||
h1 = "Add your own clever headline"
|
||||
%]
|
||||
|
||||
[% IF added_quip %]
|
||||
<p>
|
||||
<font color="red">
|
||||
Your quip '<tt>[% added_quip FILTER html %]</tt>' has been added.
|
||||
</font>
|
||||
</p>
|
||||
[% END %]
|
||||
|
||||
<p>
|
||||
Bugzilla will pick a random quip for the headline on each bug list, and
|
||||
you can extend the quip list. Type in something clever or funny or boring
|
||||
(but not obscene or offensive, please) and bonk on the button.
|
||||
</p>
|
||||
|
||||
<form method="post" action="quips.cgi">
|
||||
<input type="hidden" name="action" value="add" />
|
||||
<input size="80" name="quip" />
|
||||
<p>
|
||||
<input type="submit" value="Add This Quip" />
|
||||
</p>
|
||||
</form>
|
||||
|
||||
[% IF show_quips %]
|
||||
<h2>
|
||||
Existing quips:
|
||||
</h2>
|
||||
<ul>
|
||||
[% FOREACH quip = quips %]
|
||||
<li>[% quip %]</li>
|
||||
[% END %]
|
||||
</ul>
|
||||
[% ELSE %]
|
||||
<p>
|
||||
Those who like their wisdom in large doses can
|
||||
<a href="quips.cgi?action=show">view the whole quip list</a>.
|
||||
</p>
|
||||
[% END %]
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,36 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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): Myk Melez <myk@mozilla.org>
|
||||
#%]
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>Bugzilla is pondering your query</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1 style="margin-top: 20%; text-align: center;">Please stand by ...</h1>
|
||||
|
||||
[% IF debug %]
|
||||
<p>
|
||||
<code>[% query FILTER html %]</code>
|
||||
</p>
|
||||
[% END %]
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,143 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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): Myk Melez <myk@mozilla.org>
|
||||
#%]
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Initialization #%]
|
||||
[%############################################################################%]
|
||||
|
||||
[%# Columns whose titles or values should be abbreviated to make the list
|
||||
# more compact. For columns whose titles should be abbreviated,
|
||||
# the shortened title is included. For columns whose values should be
|
||||
# abbreviated, a maximum length is provided along with the ellipsis that
|
||||
# should be added to an abbreviated value, if any.
|
||||
#%]
|
||||
[% abbrev =
|
||||
{
|
||||
"severity" => { size => 3 , title => "Sev" } ,
|
||||
"priority" => { size => 3 , title => "Pri" } ,
|
||||
"platform" => { size => 3 , title => "Plt" } ,
|
||||
"status" => { size => 4 } ,
|
||||
"reporter" => { size => 45 , ellipsis => "..." } ,
|
||||
"owner" => { size => 45 , ellipsis => "..." } ,
|
||||
"qa_contact" => { size => 45 , ellipsis => "..." , title => "QAContact" } ,
|
||||
"resolution" => { size => 4 } ,
|
||||
"summary" => { size => 60 , ellipsis => "..." } ,
|
||||
"status_whiteboard" => { title => "StatusSummary" } ,
|
||||
"component" => { size => 8 , title => "Comp" } ,
|
||||
"product" => { size => 8 } ,
|
||||
"version" => { size => 5 , title => "Vers" } ,
|
||||
"os" => { size => 4 } ,
|
||||
"target_milestone" => { title => "TargetM" } ,
|
||||
}
|
||||
%]
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Table Header #%]
|
||||
[%############################################################################%]
|
||||
|
||||
[% tableheader = BLOCK %]
|
||||
<table class="bz_buglist" cellspacing="0" cellpadding="4" width="100%">
|
||||
<colgroup>
|
||||
<col class="bz_id_column">
|
||||
[% FOREACH id = displaycolumns %]
|
||||
<col class="bz_[% id %]_column">
|
||||
[% END %]
|
||||
</colgroup>
|
||||
|
||||
<tr align="left">
|
||||
<th colspan="[% splitheader ? 2 : 1 %]">
|
||||
<a href="buglist.cgi?[% urlquerypart %]&order=bugs.bug_id">ID</a>
|
||||
</th>
|
||||
|
||||
[% IF splitheader %]
|
||||
|
||||
[% FOREACH id = displaycolumns %]
|
||||
[% NEXT IF loop.count() % 2 == 0 %]
|
||||
[% column = columns.$id %]
|
||||
[% PROCESS columnheader %]
|
||||
[% END %]
|
||||
|
||||
</tr><tr align="left"><th> </th>
|
||||
|
||||
[% FOREACH id = displaycolumns %]
|
||||
[% NEXT UNLESS loop.count() % 2 == 0 %]
|
||||
[% column = columns.$id %]
|
||||
[% PROCESS columnheader %]
|
||||
[% END %]
|
||||
|
||||
[% ELSE %]
|
||||
|
||||
[% FOREACH id = displaycolumns %]
|
||||
[% column = columns.$id %]
|
||||
[% PROCESS columnheader %]
|
||||
[% END %]
|
||||
|
||||
[% END %]
|
||||
|
||||
</tr>
|
||||
[% END %]
|
||||
|
||||
[% BLOCK columnheader %]
|
||||
<th colspan="[% splitheader ? 2 : 1 %]">
|
||||
<a href="buglist.cgi?[% urlquerypart %]&order=
|
||||
[% column.name FILTER uri html %]
|
||||
[% ",$order" FILTER uri html IF order %]">
|
||||
[%- abbrev.$id.title || column.title -%]</a>
|
||||
</th>
|
||||
[% END %]
|
||||
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Bug Table #%]
|
||||
[%############################################################################%]
|
||||
|
||||
[% FOREACH bug = bugs %]
|
||||
[% FLUSH IF loop.count() % 10 == 1 %]
|
||||
|
||||
[%# At the beginning of every hundred bugs in the list, start a new table. %]
|
||||
[% IF loop.count() % 100 == 1 %]
|
||||
[% tableheader %]
|
||||
[% END %]
|
||||
|
||||
<tr class="bz_[% bug.severity %] bz_[% bug.priority %] [%+ "bz_secure" IF (bug.groupset && !usebuggroups) %]">
|
||||
|
||||
<td>
|
||||
[% IF dotweak %]<input type="checkbox" name="id_[% bug.id %]">[% END %]
|
||||
<a href="show_bug.cgi?id=[% bug.id %]">[% bug.id %]</a>
|
||||
</td>
|
||||
|
||||
[% FOREACH column = displaycolumns %]
|
||||
<td>
|
||||
[%+ bug.$column.truncate(abbrev.$column.size, abbrev.$column.ellipsis) FILTER html %]
|
||||
</td>
|
||||
[% END %]
|
||||
|
||||
</tr>
|
||||
|
||||
[%# At the end of every hundred bugs in the list, or at the end of the list,
|
||||
# end the current table.
|
||||
#%]
|
||||
[% IF loop.last() || loop.count() % 100 == 0 %]
|
||||
</table>
|
||||
[% END %]
|
||||
|
||||
[% END %]
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[% filtered_product = product FILTER html %]
|
||||
[% INCLUDE global/header
|
||||
title = "Components for $product"
|
||||
h2 = filtered_product %]
|
||||
|
||||
[% IF Param("useqacontact") %]
|
||||
[% numcols = 3 %]
|
||||
[% ELSE %]
|
||||
[% numcols = 2 %]
|
||||
[% END %]
|
||||
|
||||
[% IF components.size == 0 %]
|
||||
This product has no components.
|
||||
[% ELSE %]
|
||||
<table>
|
||||
<tr>
|
||||
<th align="left">Component</th>
|
||||
<th align="left">Default Owner</th>
|
||||
[% IF Param("useqacontact") %]
|
||||
<th align="left">Default QA Contact</th>
|
||||
[% END %]
|
||||
</tr>
|
||||
|
||||
[% FOREACH comp = components.sort %]
|
||||
[% INCLUDE describe_comp %]
|
||||
[% END %]
|
||||
<tr>
|
||||
<td colspan='[% numcols %]'>
|
||||
<hr>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
[% END %]
|
||||
|
||||
[% INCLUDE global/footer %]
|
||||
|
||||
[%############################################################################%]
|
||||
[%# BLOCK for components %]
|
||||
[%############################################################################%]
|
||||
|
||||
[% BLOCK describe_comp %]
|
||||
<tr>
|
||||
<td colspan="[% numcols %]">
|
||||
<hr>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan='2'>
|
||||
<a name="[% comp.name FILTER html %]">[% comp.name FILTER html %]</a>
|
||||
</td>
|
||||
<td>
|
||||
<a href="mailto:[% comp.initialowner %][% Param('emailsuffix') %]">
|
||||
[% comp.initialowner FILTER html %]</a>
|
||||
</td>
|
||||
[% IF Param("useqacontact") %]
|
||||
<td>
|
||||
<a href="mailto:[% comp.initialqacontact %][% Param('emailsuffix') %]">
|
||||
[% comp.initialqacontact %]</a>
|
||||
</td>
|
||||
[% END %]
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="[% numcols - 1 %]">
|
||||
[% comp.description %]
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
|
@ -0,0 +1,276 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[%# INTERFACE:
|
||||
# bugs: list of hashes. May be empty. Each hash has nine members:
|
||||
# id: integer. The bug number
|
||||
# count: integer. The number of dupes
|
||||
# delta: integer. The change in count in the last $changedsince days
|
||||
# component: string. The bug's component
|
||||
# bug_severity: string. The bug's severity.
|
||||
# op_sys: string. The bug's reported OS.
|
||||
# target_milestone: string. The bug's TM.
|
||||
# short_desc: string. The bug's summary.
|
||||
# bug_status: string. The bug's status.
|
||||
#
|
||||
# bug_ids: list of integers. May be empty. The IDs of the bugs in $bugs.
|
||||
# products: list of strings. The products this user can see.
|
||||
#
|
||||
# sortby: string. the column on which we are sorting the buglist.
|
||||
# reverse: boolean. True if we are reversing the current sort.
|
||||
# maxrows: integer. Max number of rows to display.
|
||||
# changedsince: integer. The number of days ago for the changedsince column.
|
||||
# openonly: boolean. True if we are only showing open bugs.
|
||||
# product: string. Restrict to this product only.
|
||||
#%]
|
||||
|
||||
[% IF product %]
|
||||
[% title = "Most Frequently Reported Bugs for $product" %]
|
||||
[% ELSE %]
|
||||
[% title = "Most Frequently Reported Bugs" %]
|
||||
[% END%]
|
||||
|
||||
[% INCLUDE global/header %]
|
||||
|
||||
<p>
|
||||
<a href="#explanation">What is this data?</a>
|
||||
<br>
|
||||
<a href="#params">Change parameters</a>
|
||||
</p>
|
||||
|
||||
[%# *** Column Headers *** %]
|
||||
|
||||
<table border>
|
||||
<tr BGCOLOR="#CCCCCC">
|
||||
[% FOREACH column = [ { name => "id", description => "Bug #" },
|
||||
{ name => "count", description => "Dupe<br>Count" },
|
||||
{ name => "delta",
|
||||
description => "Change in last<br>$changedsince day(s)" },
|
||||
{ name => "component", description => "Component" },
|
||||
{ name => "bug_severity", description => "Severity" },
|
||||
{ name => "op_sys", description => "Op Sys" },
|
||||
{ name => "target_milestone",
|
||||
description => "Target<br>Milestone" },
|
||||
{ name => "short_desc", description => "Summary" } ]
|
||||
%]
|
||||
|
||||
[%# Small hack to keep delta column out if we don't need it %]
|
||||
[% NEXT IF column.name == "delta" AND NOT dobefore %]
|
||||
|
||||
<td>
|
||||
<center>
|
||||
<b>
|
||||
[% bug_ids_string = bug_ids.join(',') %]
|
||||
<a href="duplicates.cgi?sortby=[% column.name %]
|
||||
[% "&reverse=1" IF NOT reverse AND sortby == column.name %]
|
||||
[% "&maxrows=$maxrows" IF maxrows %]
|
||||
[% "&changedsince=$changedsince" IF changedsince %]
|
||||
[% "&openonly=1" IF openonly %]
|
||||
[% "&product=$product" IF product %]
|
||||
[% "&bug_id=$bug_ids_string&sortvisible=1" IF sortvisible %]">
|
||||
[% column.description %]</a>
|
||||
</b>
|
||||
</center>
|
||||
</td>
|
||||
[% END %]
|
||||
</tr>
|
||||
|
||||
[% IF NOT sortby %]
|
||||
[% sortby = "count"; reverse = "1" %]
|
||||
[% END %]
|
||||
|
||||
[% IF sortby == "id" OR sortby == "count" OR sortby == "delta" %]
|
||||
[%# Numeric sort %]
|
||||
[% sortedbugs = bugs.nsort(sortby) %]
|
||||
[% ELSE %]
|
||||
[% sortedbugs = bugs.sort(sortby) %]
|
||||
[% END %]
|
||||
|
||||
[% IF reverse %]
|
||||
[% bugs = sortedbugs.reverse %]
|
||||
[% ELSE %]
|
||||
[% bugs = sortedbugs %]
|
||||
[% END %]
|
||||
|
||||
[%# *** Buglist *** %]
|
||||
|
||||
[%# We need to keep track of the bug IDs we are actually displaying, because
|
||||
# if the user decides to sort the visible list, we need to know what that
|
||||
# list actually is. %]
|
||||
[% vis_bug_ids = [] %]
|
||||
|
||||
[% FOREACH bug = bugs %]
|
||||
[% LAST IF loop.index() >= maxrows %]
|
||||
[% vis_bug_ids.push(bug.id) %]
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<center>
|
||||
[% "<strike>" IF bug.resolution != "" %]
|
||||
<A HREF="show_bug.cgi?id=[% bug.id %]">[% bug.id %]</a>
|
||||
[% "</strike>" IF bug.resolution != "" %]
|
||||
</center>
|
||||
</td>
|
||||
|
||||
<td>
|
||||
<center>
|
||||
[% bug.count %]
|
||||
</center>
|
||||
</td>
|
||||
|
||||
[% IF dobefore %]
|
||||
<td><center>[% bug.delta %]</center></td>
|
||||
[% END %]
|
||||
|
||||
<td>[% bug.component %]</td>
|
||||
<td><center>[% bug.bug_severity %]</center></td>
|
||||
<td><center>[% bug.op_sys %]</center></td>
|
||||
<td><center>[% bug.target_milestone %]</center></td>
|
||||
<td>[% bug.short_desc FILTER html %]</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
|
||||
</table>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
[%# *** Parameters *** %]
|
||||
|
||||
[% bug_ids_string = vis_bug_ids.join(',') %]
|
||||
|
||||
<h3><a name="params">Change Parameters</a></h3>
|
||||
|
||||
<form method="get" action="duplicates.cgi">
|
||||
<input type="hidden" name="sortby" value="[% sortby %]" />
|
||||
<input type="hidden" name="reverse" value="[% reverse %]" />
|
||||
<input type="hidden" name="bug_id" value="[% bug_ids_string %]">
|
||||
<table>
|
||||
<tr>
|
||||
<td>When sorting or restricting,
|
||||
work with:</td>
|
||||
<td>
|
||||
<input type="radio" name="sortvisible" id="entirelist" value="0"
|
||||
[% "checked" IF NOT sortvisible %] />
|
||||
<label for="entirelist">
|
||||
entire list
|
||||
</label>
|
||||
<br />
|
||||
<input type="radio" name="sortvisible" id="visiblelist" value="1"
|
||||
[% "checked" IF sortvisible %] />
|
||||
<label for="visiblelist">
|
||||
currently visible list
|
||||
</label>
|
||||
</td>
|
||||
<td rowspan="4" valign="top">Restrict to products:</td>
|
||||
<td rowspan="4" valign="top">
|
||||
<select name="product" size="5" multiple>
|
||||
[% FOREACH p = products %]
|
||||
<option name="[% p %]"
|
||||
[% " selected" IF product == p %]>[% p %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Max rows:</td>
|
||||
<td>
|
||||
<input size="4" name="maxrows" value="[% maxrows %]" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Change column is change in the last:</td>
|
||||
<td>
|
||||
<input size="4" name="changedsince" value="[% changedsince %]" /> days
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="openonly">
|
||||
Open bugs only:
|
||||
</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" name="openonly" id="openonly" value="1"
|
||||
[% "checked" IF openonly %] />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<input type="submit" value="Change" />
|
||||
</form>
|
||||
|
||||
<form method="post" action="buglist.cgi">
|
||||
<input type="hidden" name="bug_id" value="[% bug_ids_string %]">
|
||||
<input type="hidden" name="order" value="Reuse same sort as last time">
|
||||
Or just give this to me as a <input type="submit" value="bug list">.
|
||||
(Note: the order may not be the same.)
|
||||
</form>
|
||||
|
||||
<hr />
|
||||
|
||||
<b>
|
||||
<a name="explanation">What are "Most Frequently Reported Bugs"?</a>
|
||||
</b>
|
||||
|
||||
<blockquote>
|
||||
The Most Frequent Bugs page lists the known open bugs which
|
||||
are reported most frequently in recent builds of Mozilla. It is
|
||||
automatically generated from the Bugzilla database every 24 hours, by
|
||||
counting the number of direct and indirect duplicates of bugs.
|
||||
This information is provided in order to assist in minimizing
|
||||
the amount of duplicate bugs entered into Bugzilla which in turn cuts down
|
||||
on development time.
|
||||
</blockquote>
|
||||
|
||||
<b>How do I use this list?</b>
|
||||
|
||||
<ul>
|
||||
<li>Review the most frequent bugs list.</li>
|
||||
<li>If problem is listed:</li>
|
||||
|
||||
<ul>
|
||||
<li>Click on Bug # link to confirm that you have found the same bug and
|
||||
comment if you have additional information. Or move on with your testing
|
||||
of the product.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<li>If problem not listed:</li>
|
||||
|
||||
<ul>
|
||||
<li>Go to the <a href="query.cgi">Bugzilla Search</a>
|
||||
page to try and locate a similar bug that has already been written.</li>
|
||||
<li>If you find your bug in Bugzilla, feel free to comment with any new or
|
||||
additional data you may have.</li>
|
||||
<li>If you cannot find your problem already documented in Bugzilla, go to
|
||||
the
|
||||
<a href="http://www.mozilla.org/quality/help/bug-form.html">Bugzilla
|
||||
Helper</a>
|
||||
and post a new bug.</li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,75 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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>
|
||||
#%]
|
||||
|
||||
[%# INTERFACE:
|
||||
# keywords: array of hashes. May be empty. Each has has three members:
|
||||
# name: the name of the keyword
|
||||
# description: keyword description. May be HTML.
|
||||
# bugcount: number of bugs with that keyword
|
||||
# caneditkeywords: boolean. True if this user can edit keywords
|
||||
%]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = "Bugzilla Keyword Descriptions"
|
||||
%]
|
||||
|
||||
[% FOREACH keyword = keywords %]
|
||||
[% IF loop.index % 50 == 0 %]
|
||||
[% IF loop.index != 0 %]
|
||||
</table>
|
||||
[% END %]
|
||||
|
||||
<table border="1" cellpadding="4" cellspacing="0">
|
||||
<tr bgcolor="#6666FF">
|
||||
<th align="left">Name</th>
|
||||
<th align="left">Description</th>
|
||||
<th align="left">Bugs</th>
|
||||
</tr>
|
||||
[% END %]
|
||||
|
||||
<tr>
|
||||
<th>
|
||||
<a name="[% keyword.name FILTER html %]">
|
||||
[% keyword.name FILTER html %]</a>
|
||||
</th>
|
||||
<td>[% keyword.description %]</td>
|
||||
<td align="right">
|
||||
[% IF keyword.bugcount > 0 %]
|
||||
<A HREF="buglist.cgi?keywords=[% keyword.name FILTER uri %]">
|
||||
[% keyword.bugcount %]</a>
|
||||
[% ELSE %]
|
||||
none
|
||||
[% END %]
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
|
||||
[% IF keywords.size > 0 %]
|
||||
</table>
|
||||
[% END %]
|
||||
|
||||
[% IF caneditkeywords %]
|
||||
<p>
|
||||
<a href="editkeywords.cgi">Edit keywords</a>.
|
||||
</p>
|
||||
[% END %]
|
||||
|
||||
[% INCLUDE global/footer %]
|
|
@ -0,0 +1,869 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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): Chris Lahey <clahey@ximian.com> [javascript fixes]
|
||||
# Christian Reis <kiko@async.com.br> [javascript rewrite]
|
||||
# Gervase Markham <gerv@gerv.net>
|
||||
#%]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = "Search for bugs"
|
||||
extra = " onLoad=\"selectProduct(document.forms['queryform']);\""
|
||||
%]
|
||||
|
||||
[%# Note: use Template comments and not JS ones here, to avoid bloating
|
||||
what we actually send to the browser %]
|
||||
|
||||
<script language="JavaScript" type="text/javascript"> <!--
|
||||
|
||||
var first_load = true; [%# is this the first time we load the page? %]
|
||||
var last_sel = new Array(); [%# caches last selection %]
|
||||
|
||||
var cpts = new Array();
|
||||
var vers = new Array();
|
||||
[% IF Param('usetargetmilestone') %]
|
||||
var tms = new Array();
|
||||
[% END %]
|
||||
|
||||
[%# Create three arrays of components, versions and target milestones, indexed
|
||||
# numerically according to the product they refer to. #%]
|
||||
|
||||
[% n = 0 %]
|
||||
[% FOREACH p = product %]
|
||||
cpts[[% n %]] = [
|
||||
[%- FOREACH item = componentsbyproduct.$p %]'[% item FILTER js %]', [%- END -%]];
|
||||
vers[[% n %]] = [
|
||||
[%- FOREACH item = versionsbyproduct.$p -%]'[% item FILTER js %]', [%- END -%]];
|
||||
[% IF Param('usetargetmilestone') %]
|
||||
tms[[% n %]] = [
|
||||
[%- FOREACH item = milestonesbyproduct.$p %]'[% item FILTER js %]', [%- END -%]];
|
||||
[% END %]
|
||||
[% n = n+1 %]
|
||||
[% END %]
|
||||
|
||||
[%# updateSelect(array, sel, target, merging)
|
||||
#
|
||||
# Adds to the target select object all elements in array that
|
||||
# correspond to the elements selected in source.
|
||||
# - array should be a array of arrays, indexed by number. the
|
||||
# array should contain the elements that correspond to that
|
||||
# product.
|
||||
# - sel is a list of selected items, either whole or a diff
|
||||
# depending on merging.
|
||||
# - target should be the target select object.
|
||||
# - merging (boolean) determines if we are mergine in a diff or
|
||||
# substituting the whole selection. a diff is used to optimize adding
|
||||
# selections.
|
||||
#
|
||||
# Example (compsel is a select form control)
|
||||
#
|
||||
# var components = Array();
|
||||
# components[1] = [ 'ComponentA', 'ComponentB' ];
|
||||
# components[2] = [ 'ComponentC', 'ComponentD' ];
|
||||
# source = [ 2 ];
|
||||
# updateSelect(components, source, compsel, 0, 0);
|
||||
#
|
||||
# would clear compsel and add 'ComponentC' and 'ComponentD' to it.
|
||||
#
|
||||
%]
|
||||
|
||||
function updateSelect(array, sel, target, merging) {
|
||||
|
||||
var i, item;
|
||||
|
||||
[%# If we have no versions/components/milestones %]
|
||||
if (array.length < 1) {
|
||||
target.options.length = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (merging) {
|
||||
[%# array merging/sorting in the case of multiple selections %]
|
||||
[%# merge in the current options with the first selection %]
|
||||
item = merge_arrays(array[sel[0]], target.options, 1);
|
||||
|
||||
[%# merge the rest of the selection with the results %]
|
||||
for (i = 1 ; i < sel.length ; i++) {
|
||||
item = merge_arrays(array[sel[i]], item, 0);
|
||||
}
|
||||
} else if ( sel.length > 1 ) {
|
||||
[%# here we micro-optimize for two arrays to avoid merging with a
|
||||
null array %]
|
||||
item = merge_arrays(array[sel[0]],array[sel[1]], 0);
|
||||
|
||||
[%# merge the arrays. not very good for multiple selections. %]
|
||||
for (i = 2; i < sel.length; i++) {
|
||||
item = merge_arrays(item, array[sel[i]], 0);
|
||||
}
|
||||
} else { [%# single item in selection, just get me the list %]
|
||||
item = array[sel[0]];
|
||||
}
|
||||
|
||||
[%# clear select %]
|
||||
target.options.length = 0;
|
||||
|
||||
[%# load elements of list into select %]
|
||||
for (i = 0; i < item.length; i++) {
|
||||
target.options[i] = new Option(item[i], item[i]);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
[%# Returns elements in a that are not in b.
|
||||
# NOT A REAL DIFF: does not check the reverse.
|
||||
# - a,b: arrays of values to be compare. %]
|
||||
function fake_diff_array(a, b) {
|
||||
var newsel = new Array();
|
||||
var found = false;
|
||||
|
||||
[%# do a boring array diff to see who's new %]
|
||||
for (var ia in a) {
|
||||
for (var ib in b) {
|
||||
if (a[ia] == b[ib]) {
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
newsel[newsel.length] = a[ia];
|
||||
}
|
||||
found = false;
|
||||
}
|
||||
return newsel;
|
||||
}
|
||||
|
||||
[%# takes two arrays and sorts them by string, returning a new, sorted
|
||||
# array. the merge removes dupes, too.
|
||||
# - a, b: arrays to be merge.
|
||||
# - b_is_select: if true, then b is actually an optionitem and as
|
||||
# such we need to use item.value on it. %]
|
||||
function merge_arrays(a, b, b_is_select) {
|
||||
var pos_a = 0;
|
||||
var pos_b = 0;
|
||||
var ret = new Array();
|
||||
var bitem, aitem;
|
||||
|
||||
[%# iterate through both arrays and add the larger item to the return
|
||||
list. remove dupes, too. Use toLowerCase to provide
|
||||
case-insensitivity. %]
|
||||
while ((pos_a < a.length) && (pos_b < b.length)) {
|
||||
if (b_is_select) {
|
||||
bitem = b[pos_b].value;
|
||||
} else {
|
||||
bitem = b[pos_b];
|
||||
}
|
||||
aitem = a[pos_a];
|
||||
|
||||
[%# smaller item in list a %]
|
||||
if (aitem.toLowerCase() < bitem.toLowerCase()) {
|
||||
ret[ret.length] = aitem;
|
||||
pos_a++;
|
||||
} else {
|
||||
[%# smaller item in list b %]
|
||||
if (aitem.toLowerCase() > bitem.toLowerCase()) {
|
||||
ret[ret.length] = bitem;
|
||||
pos_b++;
|
||||
} else {
|
||||
[%# list contents are equal, inc both counters. %]
|
||||
ret[ret.length] = aitem;
|
||||
pos_a++;
|
||||
pos_b++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[%# catch leftovers here. these sections are ugly code-copying. %]
|
||||
if (pos_a < a.length) {
|
||||
for (; pos_a < a.length ; pos_a++) {
|
||||
ret[ret.length] = a[pos_a];
|
||||
}
|
||||
}
|
||||
|
||||
if (pos_b < b.length) {
|
||||
for (; pos_b < b.length; pos_b++) {
|
||||
if (b_is_select) {
|
||||
bitem = b[pos_b].value;
|
||||
} else {
|
||||
bitem = b[pos_b];
|
||||
}
|
||||
ret[ret.length] = bitem;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
[%# Returns an array of indexes or values from a select form control.
|
||||
# - control: select control from which to find selections
|
||||
# - findall: boolean, store all options when true or just the selected
|
||||
# indexes
|
||||
# - want_values: boolean; we store values when true and indexes when
|
||||
# false %]
|
||||
function getSelection(control, findall, want_values) {
|
||||
var ret = new Array();
|
||||
|
||||
if ((!findall) && (control.selectedIndex == -1)) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
for (var i=0; i<control.length; i++) {
|
||||
if (findall || control.options[i].selected) {
|
||||
ret[ret.length] = want_values ? control.options[i].value : i;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
[%# Selects items in control that have index defined in sel
|
||||
# - control: SELECT control to be restored
|
||||
# - selnames: array of indexes in select form control %]
|
||||
function restoreSelection(control, selnames) {
|
||||
[%# right. this sucks. but I see no way to avoid going through the
|
||||
# list and comparing to the contents of the control. %]
|
||||
for (var j=0; j < selnames.length; j++) {
|
||||
for (var i=0; i < control.options.length; i++) {
|
||||
if (control.options[i].value == selnames[j]) {
|
||||
control.options[i].selected = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[%# selectProduct reads the selection from f.product and updates
|
||||
# f.version, component and target_milestone accordingly.
|
||||
# - f: a form containing product, component, varsion and
|
||||
# target_milestone select boxes.
|
||||
# globals (3vil!):
|
||||
# - cpts, vers, tms: array of arrays, indexed by product name. the
|
||||
# subarrays contain a list of names to be fed to the respective
|
||||
# selectboxes. For bugzilla, these are generated with perl code
|
||||
# at page start.
|
||||
# - first_load: boolean, specifying if it is the first time we load
|
||||
# the query page.
|
||||
# - last_sel: saves our last selection list so we know what has
|
||||
# changed, and optimize for additions. %]
|
||||
function selectProduct(f) {
|
||||
[%# this is to avoid handling events that occur before the form
|
||||
itself is ready, which could happen in buggy browsers. %]
|
||||
if ((!f) || (!f.product)) {
|
||||
return;
|
||||
}
|
||||
|
||||
[%# if this is the first load and nothing is selected, no need to
|
||||
merge and sort all components; perl gives it to us sorted. %]
|
||||
if ((first_load) && (f.product.selectedIndex == -1)) {
|
||||
first_load = false;
|
||||
return;
|
||||
}
|
||||
|
||||
[%# turn first_load off. this is tricky, since it seems to be
|
||||
redundant with the above clause. It's not: if when we first load
|
||||
the page there is _one_ element selected, it won't fall into that
|
||||
clause, and first_load will remain 1. Then, if we unselect that
|
||||
item, selectProduct will be called but the clause will be valid
|
||||
(since selectedIndex == -1), and we will return - incorrectly -
|
||||
without merge/sorting. %]
|
||||
first_load = false;
|
||||
|
||||
[%# - sel keeps the array of products we are selected.
|
||||
- merging says if it is a full list or just a list of products that
|
||||
were added to the current selection. %]
|
||||
var merging = false;
|
||||
var sel = Array();
|
||||
|
||||
[%# if nothing selected, pick all %]
|
||||
var findall = f.product.selectedIndex == -1;
|
||||
sel = getSelection(f.product, findall, false);
|
||||
if (!findall) {
|
||||
[%# save sel for the next invocation of selectProduct() %]
|
||||
var tmp = sel;
|
||||
|
||||
[%# this is an optimization: if we have just added products to an
|
||||
existing selection, no need to clear the form controls and add
|
||||
everybody again; just merge the new ones with the existing
|
||||
options. %]
|
||||
if ((last_sel.length > 0) && (last_sel.length < sel.length)) {
|
||||
sel = fake_diff_array(sel, last_sel);
|
||||
merging = true;
|
||||
}
|
||||
last_sel = tmp;
|
||||
}
|
||||
[%# save original options selected %]
|
||||
var saved_cpts = getSelection(f.component, false, true);
|
||||
var saved_vers = getSelection(f.version, false, true);
|
||||
[% IF Param('usetargetmilestone') %]
|
||||
var saved_tms = getSelection(f.target_milestone, false, true);
|
||||
[% END %]
|
||||
|
||||
[%# do the actual fill/update, reselect originally selected options %]
|
||||
updateSelect(cpts, sel, f.component, merging);
|
||||
restoreSelection(f.component, saved_cpts);
|
||||
updateSelect(vers, sel, f.version, merging);
|
||||
restoreSelection(f.version, saved_vers);
|
||||
[% IF Param('usetargetmilestone') %]
|
||||
updateSelect(tms, sel, f.target_milestone, merging);
|
||||
restoreSelection(f.target_milestone, saved_tms);
|
||||
[% END %]
|
||||
}
|
||||
|
||||
// -->
|
||||
</script>
|
||||
|
||||
[% query_variants = [
|
||||
{ value => "allwordssubstr", description => "contains all of the words/strings" },
|
||||
{ value => "anywordssubstr", description => "contains any of the words/strings" },
|
||||
{ value => "substring", description => "contains the string" },
|
||||
{ value => "casesubstring", description => "contains the string (exact case)" },
|
||||
{ value => "allwords", description => "contains all of the words" },
|
||||
{ value => "anywords", description => "contains any of the words" },
|
||||
{ value => "regexp", description => "matches the regexp" },
|
||||
{ value => "notregexp", description => "doesn’t match the regexp" } ] %]
|
||||
|
||||
[%# The decent help requires Javascript %]
|
||||
<script> <!--
|
||||
document.write("<p><a href='query.cgi?help=1'>Give me help</a> with this form (reloads page.)</p>");
|
||||
// -->
|
||||
</script>
|
||||
<noscript>
|
||||
<p>
|
||||
<a href="queryhelp.cgi">Give me help</a> with this form.
|
||||
</p>
|
||||
</noscript>
|
||||
|
||||
<form method="get" action="buglist.cgi" name="queryform">
|
||||
|
||||
[%# *** Summary *** %]
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th align="right">Summary:</th>
|
||||
<td>
|
||||
<select name="short_desc_type">
|
||||
[% FOREACH qv = query_variants %]
|
||||
<option value="[% qv.value %]"
|
||||
[% " selected" IF default.short_desc_type.0 == qv.value %]>[% qv.description %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<input name="short_desc" size="40" value="[% default.short_desc.0 FILTER html %]">
|
||||
</td>
|
||||
<td>
|
||||
<input type="submit" value="Search">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
[%# *** Product Component Version Target *** %]
|
||||
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<table>
|
||||
<tr valign="bottom">
|
||||
<th align="left">Product:</th>
|
||||
<th align="left"><a href="describecomponents.cgi">Component</a>:</th>
|
||||
<th align="left">Version:</th>
|
||||
|
||||
[% IF (Param("usetargetmilestone")) %]
|
||||
<th align="left">Target:</th>
|
||||
[% END %]
|
||||
</tr>
|
||||
|
||||
<tr valign="top">
|
||||
|
||||
[%# Can't use the select block here because of onChange and the fact that
|
||||
'component' is a toolkit reserved word - we use 'component_' instead. %]
|
||||
<td align="left">
|
||||
<select name="product" multiple size="5" onChange="selectProduct(this.form);">
|
||||
[% FOREACH p = product %]
|
||||
<option value="[% p FILTER html %]"
|
||||
[% " selected" IF lsearch(default.product, p) != -1 %]>
|
||||
[% p FILTER html %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</td>
|
||||
|
||||
<td align="left">
|
||||
<select name="component" multiple size="5">
|
||||
[% FOREACH c = component_ %]
|
||||
<option value="[% c FILTER html %]"
|
||||
[% " selected" IF lsearch(default.component, c) != -1 %]>
|
||||
[% c FILTER html %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</td>
|
||||
|
||||
[% PROCESS select sel = { name => 'version', size => 5 } %]
|
||||
|
||||
[% IF Param('usetargetmilestone') && target_milestone.size > 0 %]
|
||||
[% PROCESS select sel = { name => 'target_milestone', size => 5 } %]
|
||||
[% END %]
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
[%# *** Comment URL Whiteboard Keywords *** %]
|
||||
|
||||
[% FOREACH field = [
|
||||
{ name => "long_desc", description => "A comment" },
|
||||
{ name => "bug_file_loc", description => "The URL" },
|
||||
{ name => "status_whiteboard", description => "Whiteboard" } ] %]
|
||||
|
||||
[% UNLESS field.name == 'status_whiteboard' AND NOT Param('usestatuswhiteboard') %]
|
||||
<tr>
|
||||
<th align="right">[% field.description %]:</th>
|
||||
<td>
|
||||
<select name="[% field.name %]_type">
|
||||
[% FOREACH qv = query_variants %]
|
||||
[% type = "${field.name}_type" %]
|
||||
<option value="[% qv.value %]"
|
||||
[% " selected" IF default.$type.0 == qv.value %]>[% qv.description %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</td>
|
||||
<td><input name="[% field.name %]" size="40" value="
|
||||
[% default.${field.name}.0 FILTER html %]">
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
[% END %]
|
||||
[% END %]
|
||||
|
||||
[% IF have_keywords %]
|
||||
<tr>
|
||||
<th align="right"><a href="describekeywords.cgi">Keywords</a>:</th>
|
||||
<td>
|
||||
<select name="keywords_type">
|
||||
[% FOREACH qv = [
|
||||
{ name => "anywords", description => "contains any of the keywords" },
|
||||
{ name => "allwords", description => "contains all of the keywords" },
|
||||
{ name => "nowords", description => "contains none of the keywords" } ] %]
|
||||
|
||||
<option value="[% qv.name %]"
|
||||
[% " selected" IF default.keywords_type.0 == qv.name %]>
|
||||
[% qv.description %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<input name="keywords" size="40" value="[% default.keywords.0 FILTER html %]">
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
[%# *** Status Resolution Severity Priority Hardware OS *** %]
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th align="left"><a href="queryhelp.cgi#status">Status</a>:</th>
|
||||
<th align="left"><a href="queryhelp.cgi#resolution">Resolution</a>:</th>
|
||||
<th align="left"><a href="queryhelp.cgi#severity">Severity</a>:</th>
|
||||
<th align="left"><a href="queryhelp.cgi#priority">Priority</a>:</th>
|
||||
<th align="left"><a href="queryhelp.cgi#platform">Hardware</a>:</th>
|
||||
<th align="left"><a href="queryhelp.cgi#opsys">OS</a>:</th>
|
||||
</tr>
|
||||
|
||||
<tr valign="top">
|
||||
[% PROCESS select sel = { name => 'bug_status', size => 7 } %]
|
||||
[% PROCESS select sel = { name => 'resolution', size => 7 } %]
|
||||
[% PROCESS select sel = { name => 'bug_severity', size => 7 } %]
|
||||
[% PROCESS select sel = { name => 'priority', size => 7 } %]
|
||||
[% PROCESS select sel = { name => 'rep_platform', size => 7 } %]
|
||||
[% PROCESS select sel = { name => 'op_sys', size => 7 } %]
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
|
||||
[%# *** Email Numbering Votes *** %]
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend>
|
||||
<strong>
|
||||
<a href="queryhelp.cgi#peopleinvolved">Email</a> and Numbering
|
||||
</strong>
|
||||
</legend>
|
||||
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
[% FOREACH n = [1, 2] %]
|
||||
<td>
|
||||
|
||||
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td>
|
||||
Any of:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="checkbox" name="emailassigned_to[% n %]"
|
||||
id="emailassigned_to[% n %]" value="1"
|
||||
[% " checked" IF default.emailassigned_to.$n %]>
|
||||
<label for="emailassigned_to[% n %]">
|
||||
bug owner
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="checkbox" name="emailreporter[% n %]"
|
||||
id="emailreporter[% n %]" value="1"
|
||||
[% " checked" IF default.emailreporter.$n %]>
|
||||
<label for="emailreporter[% n %]">
|
||||
reporter
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
[% IF Param('useqacontact') %]
|
||||
<tr>
|
||||
<td>
|
||||
<input type="checkbox" name="emailqa_contact[% n %]"
|
||||
id="emailqa_contact[% n %]" value="1"
|
||||
[% " checked" IF default.emailqa_contact.$n %]>
|
||||
<label for="emailqa_contact[% n %]">
|
||||
QA contact
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
<tr>
|
||||
<td>
|
||||
<input type="checkbox" name="emailcc[% n %]"
|
||||
id="emailcc[% n %]" value="1"
|
||||
[% " checked" IF default.emailcc.$n %]>
|
||||
<label for="emailcc[% n %]">
|
||||
CC list member
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="checkbox" name="emaillongdesc[% n %]"
|
||||
id="emaillongdesc[% n %]" value="1"
|
||||
[% " checked" IF default.emaillongdesc.$n %]>
|
||||
<label for="emaillongdesc[% n %]">
|
||||
commenter
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<select name="emailtype[% n %]">
|
||||
[% FOREACH qv = [
|
||||
{ name => "substring", description => "contains" },
|
||||
{ name => "exact", description => "is" },
|
||||
{ name => "regexp", description => "matches regexp" },
|
||||
{ name => "notregexp", description => "doesn’t match regexp" } ] %]
|
||||
|
||||
<option value="[% qv.name %]"
|
||||
[% " selected" IF default.emailtype.$n == qv.name %]>[% qv.description %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input name="email[% n %]" size="20" value="[% default.email.$n FILTER html %]">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
</td>
|
||||
[% END %]
|
||||
</tr>
|
||||
</table>
|
||||
<hr>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<select name="bugidtype">
|
||||
<option value="include"[% " selected" IF default.bugidtype.0 == "include" %]>Only include</option>
|
||||
<option value="exclude"[% " selected" IF default.bugidtype.0 == "exclude" %]>Exclude</option>
|
||||
</select>
|
||||
bugs numbered:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="bug_id" value="[% default.bug_id.0 FILTER html %]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>(comma-separated list)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
Only bugs with at least:
|
||||
</td>
|
||||
<td>
|
||||
<input name="votes" size="3" value="[% default.votes.0 FILTER html %]"> votes
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
</fieldset>
|
||||
</td>
|
||||
|
||||
[%# *** Bug Changes *** %]
|
||||
|
||||
<td valign="top">
|
||||
<fieldset>
|
||||
<legend><strong>Bug Changes</strong></legend>
|
||||
|
||||
|
||||
<dl>
|
||||
<dt>Only bugs changed in the last </dt>
|
||||
<dd><input name=changedin size=3 value="[% default.changedin.0 FILTER html %]"> days</dd>
|
||||
</dl>
|
||||
|
||||
<dl>
|
||||
<dt>Only bugs where any of the fields</dt>
|
||||
<dd>
|
||||
<select name="chfield" multiple size="4">
|
||||
[% FOREACH field = chfield %]
|
||||
<option value="[% field FILTER html %]"
|
||||
[% " selected" IF lsearch(default.chfield, field) != -1 %]>
|
||||
[% field FILTER html %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</dd>
|
||||
|
||||
<dt>were changed between</dt>
|
||||
<dd>
|
||||
<input name="chfieldfrom" size="10" value="[% default.chfieldfrom.0 FILTER html %]">
|
||||
and <input name="chfieldto" size="10" value="[% default.chfieldto.0 FILTER html %]">
|
||||
<br>(YYYY-MM-DD)
|
||||
</dd>
|
||||
<dt>to this value: (optional)</dt>
|
||||
<dd>
|
||||
<input name="chfieldvalue" size="20" value="[% default.chfieldvalue.0 FILTER html %]">
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
[%# *** Action Selection *** %]
|
||||
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
|
||||
[% IF NOT userid %]
|
||||
<input type="hidden" name="cmdtype" value="doit">
|
||||
[% ELSE %]
|
||||
<br>
|
||||
<input type="radio" name="cmdtype" value="doit" checked> Run this query
|
||||
<br>
|
||||
|
||||
[% IF namedqueries.size > 0 %]
|
||||
<p>
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td>
|
||||
<input type="radio" name="cmdtype" value="editnamed">
|
||||
Load my remembered query:
|
||||
</td>
|
||||
<td rowspan="3">
|
||||
<select name="namedcmd">
|
||||
[% FOREACH query = namedqueries %]
|
||||
<option value="[% query FILTER html %]">[% query FILTER html %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="radio" name="cmdtype" value="runnamed">
|
||||
Run my remembered query:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="radio" name="cmdtype" value="forgetnamed">
|
||||
Forget my remembered query:
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</p>
|
||||
[% END %]
|
||||
|
||||
<input type="radio" name="cmdtype" value="asdefault">
|
||||
Remember this as my default query
|
||||
<br>
|
||||
<input type="radio" name="cmdtype" value="asnamed">
|
||||
Remember this query, and name it:
|
||||
<input type="text" name="newqueryname">
|
||||
<br> <input type="checkbox" name="tofooter" value="1">
|
||||
and put it in my page footer
|
||||
<br>
|
||||
[% END %]
|
||||
<br>
|
||||
<div>
|
||||
Sort results by:
|
||||
<select name="order">
|
||||
[% FOREACH order = orders %]
|
||||
<option value="[% order FILTER html %]"
|
||||
[% " selected" IF default.order.0 == order %]>[% order FILTER html %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
|
||||
<input type="submit" value="Search">
|
||||
[% IF userdefaultquery %]
|
||||
<p>
|
||||
<a href="query.cgi?nukedefaultquery=1">
|
||||
Set my default query back to the system default</a>
|
||||
</p>
|
||||
[% END %]
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
[%# *** Boolean Charts *** %]
|
||||
|
||||
<hr>
|
||||
|
||||
[% types = [
|
||||
{ name => "noop", description => "---" },
|
||||
{ name => "equals", description => "is equal to" },
|
||||
{ name => "notequals", description => "is not equal to" },
|
||||
{ name => "substring", description => "contains the string" },
|
||||
{ name => "casesubstring", description => "contains the string (exact case)" },
|
||||
{ name => "notsubstring", description => "does not contain the string" },
|
||||
{ name => "allwordssubstr", description => "contains all of the strings" },
|
||||
{ name => "anywordssubstr", description => "contains any of the strings" },
|
||||
{ name => "regexp", description => "contains regexp" },
|
||||
{ name => "notregexp", description => "does not contain regexp" },
|
||||
{ name => "lessthan", description => "is less than" },
|
||||
{ name => "greaterthan", description => "is greater than" },
|
||||
{ name => "anywords", description => "contains any of the words" },
|
||||
{ name => "allwords", description => "contains all of the words" },
|
||||
{ name => "nowords", description => "contains none of the words" },
|
||||
{ name => "changedbefore", description => "changed before" },
|
||||
{ name => "changedafter", description => "changed after" },
|
||||
{ name => "changedfrom", description => "changed from" },
|
||||
{ name => "changedto", description => "changed to" },
|
||||
{ name => "changedby", description => "changed by" } ] %]
|
||||
|
||||
<p>
|
||||
<strong>
|
||||
<a name="chart" href="queryhelp.cgi#advancedquerying">
|
||||
Advanced Querying Using Boolean Charts</a>:
|
||||
</strong>
|
||||
</p>
|
||||
|
||||
[%# Whoever wrote the original version of boolean charts had a seriously twisted mind %]
|
||||
|
||||
[% jsmagic = "onclick=\"document.forms[0].action='query.cgi#chart'; document.forms[0].method='POST'; return 1;\"" %]
|
||||
|
||||
[% FOREACH chart = default.charts %]
|
||||
[% chartnum = loop.count - 1 %]
|
||||
<table>
|
||||
[% FOREACH row = chart %]
|
||||
[% rownum = loop.count - 1 %]
|
||||
<tr>
|
||||
[% FOREACH col = row %]
|
||||
[% colnum = loop.count - 1 %]
|
||||
<td>
|
||||
<select name="[% "field${chartnum}-${rownum}-${colnum}" %]">
|
||||
[% FOREACH field = fields %]
|
||||
<option value="[% field.name %]"
|
||||
[%- " selected" IF field.name == col.field %]>[% field.description %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
|
||||
<select name="[% "type${chartnum}-${rownum}-${colnum}" %]">
|
||||
[% FOREACH type = types %]
|
||||
<option value="[% type.name %]"
|
||||
[%- " selected" IF type.name == col.type %]>[% type.description %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
|
||||
<input name="[% "value${chartnum}-${rownum}-${colnum}" %]"
|
||||
value="[% col.value FILTER html %]">
|
||||
</td>
|
||||
|
||||
[% IF NOT col == row.last %]
|
||||
<td align="center">
|
||||
Or
|
||||
</td>
|
||||
[% ELSE %]
|
||||
<td>
|
||||
[% newor = colnum + 1 %]
|
||||
<input type="submit" value="Or"
|
||||
name="cmd-add[% "${chartnum}-${rownum}-${newor}" %]" [% $jsmagic %]>
|
||||
</td>
|
||||
[% END %]
|
||||
|
||||
[% END %]
|
||||
</tr>
|
||||
|
||||
[% IF NOT row == chart.last %]
|
||||
<tr>
|
||||
<td>And</td>
|
||||
</tr>
|
||||
[% ELSE %]
|
||||
<tr>
|
||||
<td>
|
||||
[% newand = rownum + 1; newchart = chartnum + 1 %]
|
||||
<input type="submit" value="And"
|
||||
name="cmd-add[% "${chartnum}-${newand}-0" %]"[% $jsmagic %]>
|
||||
|
||||
<input type="submit" value="Add another boolean chart"
|
||||
name="cmd-add[% newchart %]-0-0" [% $jsmagic %]>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
|
||||
[% END %]
|
||||
</table>
|
||||
<hr>
|
||||
[% END %]
|
||||
|
||||
<p>Give me a <a href="queryhelp.cgi">clue</a> about how to use this form.</p>
|
||||
|
||||
</FORM>
|
||||
|
||||
[% INCLUDE global/footer %]
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Block for SELECT fields #%]
|
||||
[%############################################################################%]
|
||||
|
||||
[% BLOCK select %]
|
||||
<td align="left">
|
||||
<select name="[% sel.name %]" multiple size="[% sel.size %]">
|
||||
[% FOREACH name = ${sel.name} %]
|
||||
<option value="[% name FILTER html %]"
|
||||
[% " selected" IF lsearch(default.${sel.name}, name) != -1 %]>
|
||||
[% name FILTER html %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</td>
|
||||
[% END %]
|
|
@ -0,0 +1,869 @@
|
|||
<!-- 1.0@bugzilla.org -->
|
||||
[%# 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): Chris Lahey <clahey@ximian.com> [javascript fixes]
|
||||
# Christian Reis <kiko@async.com.br> [javascript rewrite]
|
||||
# Gervase Markham <gerv@gerv.net>
|
||||
#%]
|
||||
|
||||
[% INCLUDE global/header
|
||||
title = "Search for bugs"
|
||||
extra = " onLoad=\"selectProduct(document.forms['queryform']);\""
|
||||
%]
|
||||
|
||||
[%# Note: use Template comments and not JS ones here, to avoid bloating
|
||||
what we actually send to the browser %]
|
||||
|
||||
<script language="JavaScript" type="text/javascript"> <!--
|
||||
|
||||
var first_load = true; [%# is this the first time we load the page? %]
|
||||
var last_sel = new Array(); [%# caches last selection %]
|
||||
|
||||
var cpts = new Array();
|
||||
var vers = new Array();
|
||||
[% IF Param('usetargetmilestone') %]
|
||||
var tms = new Array();
|
||||
[% END %]
|
||||
|
||||
[%# Create three arrays of components, versions and target milestones, indexed
|
||||
# numerically according to the product they refer to. #%]
|
||||
|
||||
[% n = 0 %]
|
||||
[% FOREACH p = product %]
|
||||
cpts[[% n %]] = [
|
||||
[%- FOREACH item = componentsbyproduct.$p %]'[% item FILTER js %]', [%- END -%]];
|
||||
vers[[% n %]] = [
|
||||
[%- FOREACH item = versionsbyproduct.$p -%]'[% item FILTER js %]', [%- END -%]];
|
||||
[% IF Param('usetargetmilestone') %]
|
||||
tms[[% n %]] = [
|
||||
[%- FOREACH item = milestonesbyproduct.$p %]'[% item FILTER js %]', [%- END -%]];
|
||||
[% END %]
|
||||
[% n = n+1 %]
|
||||
[% END %]
|
||||
|
||||
[%# updateSelect(array, sel, target, merging)
|
||||
#
|
||||
# Adds to the target select object all elements in array that
|
||||
# correspond to the elements selected in source.
|
||||
# - array should be a array of arrays, indexed by number. the
|
||||
# array should contain the elements that correspond to that
|
||||
# product.
|
||||
# - sel is a list of selected items, either whole or a diff
|
||||
# depending on merging.
|
||||
# - target should be the target select object.
|
||||
# - merging (boolean) determines if we are mergine in a diff or
|
||||
# substituting the whole selection. a diff is used to optimize adding
|
||||
# selections.
|
||||
#
|
||||
# Example (compsel is a select form control)
|
||||
#
|
||||
# var components = Array();
|
||||
# components[1] = [ 'ComponentA', 'ComponentB' ];
|
||||
# components[2] = [ 'ComponentC', 'ComponentD' ];
|
||||
# source = [ 2 ];
|
||||
# updateSelect(components, source, compsel, 0, 0);
|
||||
#
|
||||
# would clear compsel and add 'ComponentC' and 'ComponentD' to it.
|
||||
#
|
||||
%]
|
||||
|
||||
function updateSelect(array, sel, target, merging) {
|
||||
|
||||
var i, item;
|
||||
|
||||
[%# If we have no versions/components/milestones %]
|
||||
if (array.length < 1) {
|
||||
target.options.length = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (merging) {
|
||||
[%# array merging/sorting in the case of multiple selections %]
|
||||
[%# merge in the current options with the first selection %]
|
||||
item = merge_arrays(array[sel[0]], target.options, 1);
|
||||
|
||||
[%# merge the rest of the selection with the results %]
|
||||
for (i = 1 ; i < sel.length ; i++) {
|
||||
item = merge_arrays(array[sel[i]], item, 0);
|
||||
}
|
||||
} else if ( sel.length > 1 ) {
|
||||
[%# here we micro-optimize for two arrays to avoid merging with a
|
||||
null array %]
|
||||
item = merge_arrays(array[sel[0]],array[sel[1]], 0);
|
||||
|
||||
[%# merge the arrays. not very good for multiple selections. %]
|
||||
for (i = 2; i < sel.length; i++) {
|
||||
item = merge_arrays(item, array[sel[i]], 0);
|
||||
}
|
||||
} else { [%# single item in selection, just get me the list %]
|
||||
item = array[sel[0]];
|
||||
}
|
||||
|
||||
[%# clear select %]
|
||||
target.options.length = 0;
|
||||
|
||||
[%# load elements of list into select %]
|
||||
for (i = 0; i < item.length; i++) {
|
||||
target.options[i] = new Option(item[i], item[i]);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
[%# Returns elements in a that are not in b.
|
||||
# NOT A REAL DIFF: does not check the reverse.
|
||||
# - a,b: arrays of values to be compare. %]
|
||||
function fake_diff_array(a, b) {
|
||||
var newsel = new Array();
|
||||
var found = false;
|
||||
|
||||
[%# do a boring array diff to see who's new %]
|
||||
for (var ia in a) {
|
||||
for (var ib in b) {
|
||||
if (a[ia] == b[ib]) {
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
if (!found) {
|
||||
newsel[newsel.length] = a[ia];
|
||||
}
|
||||
found = false;
|
||||
}
|
||||
return newsel;
|
||||
}
|
||||
|
||||
[%# takes two arrays and sorts them by string, returning a new, sorted
|
||||
# array. the merge removes dupes, too.
|
||||
# - a, b: arrays to be merge.
|
||||
# - b_is_select: if true, then b is actually an optionitem and as
|
||||
# such we need to use item.value on it. %]
|
||||
function merge_arrays(a, b, b_is_select) {
|
||||
var pos_a = 0;
|
||||
var pos_b = 0;
|
||||
var ret = new Array();
|
||||
var bitem, aitem;
|
||||
|
||||
[%# iterate through both arrays and add the larger item to the return
|
||||
list. remove dupes, too. Use toLowerCase to provide
|
||||
case-insensitivity. %]
|
||||
while ((pos_a < a.length) && (pos_b < b.length)) {
|
||||
if (b_is_select) {
|
||||
bitem = b[pos_b].value;
|
||||
} else {
|
||||
bitem = b[pos_b];
|
||||
}
|
||||
aitem = a[pos_a];
|
||||
|
||||
[%# smaller item in list a %]
|
||||
if (aitem.toLowerCase() < bitem.toLowerCase()) {
|
||||
ret[ret.length] = aitem;
|
||||
pos_a++;
|
||||
} else {
|
||||
[%# smaller item in list b %]
|
||||
if (aitem.toLowerCase() > bitem.toLowerCase()) {
|
||||
ret[ret.length] = bitem;
|
||||
pos_b++;
|
||||
} else {
|
||||
[%# list contents are equal, inc both counters. %]
|
||||
ret[ret.length] = aitem;
|
||||
pos_a++;
|
||||
pos_b++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[%# catch leftovers here. these sections are ugly code-copying. %]
|
||||
if (pos_a < a.length) {
|
||||
for (; pos_a < a.length ; pos_a++) {
|
||||
ret[ret.length] = a[pos_a];
|
||||
}
|
||||
}
|
||||
|
||||
if (pos_b < b.length) {
|
||||
for (; pos_b < b.length; pos_b++) {
|
||||
if (b_is_select) {
|
||||
bitem = b[pos_b].value;
|
||||
} else {
|
||||
bitem = b[pos_b];
|
||||
}
|
||||
ret[ret.length] = bitem;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
[%# Returns an array of indexes or values from a select form control.
|
||||
# - control: select control from which to find selections
|
||||
# - findall: boolean, store all options when true or just the selected
|
||||
# indexes
|
||||
# - want_values: boolean; we store values when true and indexes when
|
||||
# false %]
|
||||
function getSelection(control, findall, want_values) {
|
||||
var ret = new Array();
|
||||
|
||||
if ((!findall) && (control.selectedIndex == -1)) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
for (var i=0; i<control.length; i++) {
|
||||
if (findall || control.options[i].selected) {
|
||||
ret[ret.length] = want_values ? control.options[i].value : i;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
[%# Selects items in control that have index defined in sel
|
||||
# - control: SELECT control to be restored
|
||||
# - selnames: array of indexes in select form control %]
|
||||
function restoreSelection(control, selnames) {
|
||||
[%# right. this sucks. but I see no way to avoid going through the
|
||||
# list and comparing to the contents of the control. %]
|
||||
for (var j=0; j < selnames.length; j++) {
|
||||
for (var i=0; i < control.options.length; i++) {
|
||||
if (control.options[i].value == selnames[j]) {
|
||||
control.options[i].selected = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[%# selectProduct reads the selection from f.product and updates
|
||||
# f.version, component and target_milestone accordingly.
|
||||
# - f: a form containing product, component, varsion and
|
||||
# target_milestone select boxes.
|
||||
# globals (3vil!):
|
||||
# - cpts, vers, tms: array of arrays, indexed by product name. the
|
||||
# subarrays contain a list of names to be fed to the respective
|
||||
# selectboxes. For bugzilla, these are generated with perl code
|
||||
# at page start.
|
||||
# - first_load: boolean, specifying if it is the first time we load
|
||||
# the query page.
|
||||
# - last_sel: saves our last selection list so we know what has
|
||||
# changed, and optimize for additions. %]
|
||||
function selectProduct(f) {
|
||||
[%# this is to avoid handling events that occur before the form
|
||||
itself is ready, which could happen in buggy browsers. %]
|
||||
if ((!f) || (!f.product)) {
|
||||
return;
|
||||
}
|
||||
|
||||
[%# if this is the first load and nothing is selected, no need to
|
||||
merge and sort all components; perl gives it to us sorted. %]
|
||||
if ((first_load) && (f.product.selectedIndex == -1)) {
|
||||
first_load = false;
|
||||
return;
|
||||
}
|
||||
|
||||
[%# turn first_load off. this is tricky, since it seems to be
|
||||
redundant with the above clause. It's not: if when we first load
|
||||
the page there is _one_ element selected, it won't fall into that
|
||||
clause, and first_load will remain 1. Then, if we unselect that
|
||||
item, selectProduct will be called but the clause will be valid
|
||||
(since selectedIndex == -1), and we will return - incorrectly -
|
||||
without merge/sorting. %]
|
||||
first_load = false;
|
||||
|
||||
[%# - sel keeps the array of products we are selected.
|
||||
- merging says if it is a full list or just a list of products that
|
||||
were added to the current selection. %]
|
||||
var merging = false;
|
||||
var sel = Array();
|
||||
|
||||
[%# if nothing selected, pick all %]
|
||||
var findall = f.product.selectedIndex == -1;
|
||||
sel = getSelection(f.product, findall, false);
|
||||
if (!findall) {
|
||||
[%# save sel for the next invocation of selectProduct() %]
|
||||
var tmp = sel;
|
||||
|
||||
[%# this is an optimization: if we have just added products to an
|
||||
existing selection, no need to clear the form controls and add
|
||||
everybody again; just merge the new ones with the existing
|
||||
options. %]
|
||||
if ((last_sel.length > 0) && (last_sel.length < sel.length)) {
|
||||
sel = fake_diff_array(sel, last_sel);
|
||||
merging = true;
|
||||
}
|
||||
last_sel = tmp;
|
||||
}
|
||||
[%# save original options selected %]
|
||||
var saved_cpts = getSelection(f.component, false, true);
|
||||
var saved_vers = getSelection(f.version, false, true);
|
||||
[% IF Param('usetargetmilestone') %]
|
||||
var saved_tms = getSelection(f.target_milestone, false, true);
|
||||
[% END %]
|
||||
|
||||
[%# do the actual fill/update, reselect originally selected options %]
|
||||
updateSelect(cpts, sel, f.component, merging);
|
||||
restoreSelection(f.component, saved_cpts);
|
||||
updateSelect(vers, sel, f.version, merging);
|
||||
restoreSelection(f.version, saved_vers);
|
||||
[% IF Param('usetargetmilestone') %]
|
||||
updateSelect(tms, sel, f.target_milestone, merging);
|
||||
restoreSelection(f.target_milestone, saved_tms);
|
||||
[% END %]
|
||||
}
|
||||
|
||||
// -->
|
||||
</script>
|
||||
|
||||
[% query_variants = [
|
||||
{ value => "allwordssubstr", description => "contains all of the words/strings" },
|
||||
{ value => "anywordssubstr", description => "contains any of the words/strings" },
|
||||
{ value => "substring", description => "contains the string" },
|
||||
{ value => "casesubstring", description => "contains the string (exact case)" },
|
||||
{ value => "allwords", description => "contains all of the words" },
|
||||
{ value => "anywords", description => "contains any of the words" },
|
||||
{ value => "regexp", description => "matches the regexp" },
|
||||
{ value => "notregexp", description => "doesn’t match the regexp" } ] %]
|
||||
|
||||
[%# The decent help requires Javascript %]
|
||||
<script> <!--
|
||||
document.write("<p><a href='query.cgi?help=1'>Give me help</a> with this form (reloads page.)</p>");
|
||||
// -->
|
||||
</script>
|
||||
<noscript>
|
||||
<p>
|
||||
<a href="queryhelp.cgi">Give me help</a> with this form.
|
||||
</p>
|
||||
</noscript>
|
||||
|
||||
<form method="get" action="buglist.cgi" name="queryform">
|
||||
|
||||
[%# *** Summary *** %]
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th align="right">Summary:</th>
|
||||
<td>
|
||||
<select name="short_desc_type">
|
||||
[% FOREACH qv = query_variants %]
|
||||
<option value="[% qv.value %]"
|
||||
[% " selected" IF default.short_desc_type.0 == qv.value %]>[% qv.description %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<input name="short_desc" size="40" value="[% default.short_desc.0 FILTER html %]">
|
||||
</td>
|
||||
<td>
|
||||
<input type="submit" value="Search">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
[%# *** Product Component Version Target *** %]
|
||||
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<table>
|
||||
<tr valign="bottom">
|
||||
<th align="left">Product:</th>
|
||||
<th align="left"><a href="describecomponents.cgi">Component</a>:</th>
|
||||
<th align="left">Version:</th>
|
||||
|
||||
[% IF (Param("usetargetmilestone")) %]
|
||||
<th align="left">Target:</th>
|
||||
[% END %]
|
||||
</tr>
|
||||
|
||||
<tr valign="top">
|
||||
|
||||
[%# Can't use the select block here because of onChange and the fact that
|
||||
'component' is a toolkit reserved word - we use 'component_' instead. %]
|
||||
<td align="left">
|
||||
<select name="product" multiple size="5" onChange="selectProduct(this.form);">
|
||||
[% FOREACH p = product %]
|
||||
<option value="[% p FILTER html %]"
|
||||
[% " selected" IF lsearch(default.product, p) != -1 %]>
|
||||
[% p FILTER html %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</td>
|
||||
|
||||
<td align="left">
|
||||
<select name="component" multiple size="5">
|
||||
[% FOREACH c = component_ %]
|
||||
<option value="[% c FILTER html %]"
|
||||
[% " selected" IF lsearch(default.component, c) != -1 %]>
|
||||
[% c FILTER html %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</td>
|
||||
|
||||
[% PROCESS select sel = { name => 'version', size => 5 } %]
|
||||
|
||||
[% IF Param('usetargetmilestone') && target_milestone.size > 0 %]
|
||||
[% PROCESS select sel = { name => 'target_milestone', size => 5 } %]
|
||||
[% END %]
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
[%# *** Comment URL Whiteboard Keywords *** %]
|
||||
|
||||
[% FOREACH field = [
|
||||
{ name => "long_desc", description => "A comment" },
|
||||
{ name => "bug_file_loc", description => "The URL" },
|
||||
{ name => "status_whiteboard", description => "Whiteboard" } ] %]
|
||||
|
||||
[% UNLESS field.name == 'status_whiteboard' AND NOT Param('usestatuswhiteboard') %]
|
||||
<tr>
|
||||
<th align="right">[% field.description %]:</th>
|
||||
<td>
|
||||
<select name="[% field.name %]_type">
|
||||
[% FOREACH qv = query_variants %]
|
||||
[% type = "${field.name}_type" %]
|
||||
<option value="[% qv.value %]"
|
||||
[% " selected" IF default.$type.0 == qv.value %]>[% qv.description %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</td>
|
||||
<td><input name="[% field.name %]" size="40" value="
|
||||
[% default.${field.name}.0 FILTER html %]">
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
[% END %]
|
||||
[% END %]
|
||||
|
||||
[% IF have_keywords %]
|
||||
<tr>
|
||||
<th align="right"><a href="describekeywords.cgi">Keywords</a>:</th>
|
||||
<td>
|
||||
<select name="keywords_type">
|
||||
[% FOREACH qv = [
|
||||
{ name => "anywords", description => "contains any of the keywords" },
|
||||
{ name => "allwords", description => "contains all of the keywords" },
|
||||
{ name => "nowords", description => "contains none of the keywords" } ] %]
|
||||
|
||||
<option value="[% qv.name %]"
|
||||
[% " selected" IF default.keywords_type.0 == qv.name %]>
|
||||
[% qv.description %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<input name="keywords" size="40" value="[% default.keywords.0 FILTER html %]">
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
[%# *** Status Resolution Severity Priority Hardware OS *** %]
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th align="left"><a href="queryhelp.cgi#status">Status</a>:</th>
|
||||
<th align="left"><a href="queryhelp.cgi#resolution">Resolution</a>:</th>
|
||||
<th align="left"><a href="queryhelp.cgi#severity">Severity</a>:</th>
|
||||
<th align="left"><a href="queryhelp.cgi#priority">Priority</a>:</th>
|
||||
<th align="left"><a href="queryhelp.cgi#platform">Hardware</a>:</th>
|
||||
<th align="left"><a href="queryhelp.cgi#opsys">OS</a>:</th>
|
||||
</tr>
|
||||
|
||||
<tr valign="top">
|
||||
[% PROCESS select sel = { name => 'bug_status', size => 7 } %]
|
||||
[% PROCESS select sel = { name => 'resolution', size => 7 } %]
|
||||
[% PROCESS select sel = { name => 'bug_severity', size => 7 } %]
|
||||
[% PROCESS select sel = { name => 'priority', size => 7 } %]
|
||||
[% PROCESS select sel = { name => 'rep_platform', size => 7 } %]
|
||||
[% PROCESS select sel = { name => 'op_sys', size => 7 } %]
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
|
||||
[%# *** Email Numbering Votes *** %]
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<fieldset>
|
||||
<legend>
|
||||
<strong>
|
||||
<a href="queryhelp.cgi#peopleinvolved">Email</a> and Numbering
|
||||
</strong>
|
||||
</legend>
|
||||
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
[% FOREACH n = [1, 2] %]
|
||||
<td>
|
||||
|
||||
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td>
|
||||
Any of:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="checkbox" name="emailassigned_to[% n %]"
|
||||
id="emailassigned_to[% n %]" value="1"
|
||||
[% " checked" IF default.emailassigned_to.$n %]>
|
||||
<label for="emailassigned_to[% n %]">
|
||||
bug owner
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="checkbox" name="emailreporter[% n %]"
|
||||
id="emailreporter[% n %]" value="1"
|
||||
[% " checked" IF default.emailreporter.$n %]>
|
||||
<label for="emailreporter[% n %]">
|
||||
reporter
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
[% IF Param('useqacontact') %]
|
||||
<tr>
|
||||
<td>
|
||||
<input type="checkbox" name="emailqa_contact[% n %]"
|
||||
id="emailqa_contact[% n %]" value="1"
|
||||
[% " checked" IF default.emailqa_contact.$n %]>
|
||||
<label for="emailqa_contact[% n %]">
|
||||
QA contact
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
<tr>
|
||||
<td>
|
||||
<input type="checkbox" name="emailcc[% n %]"
|
||||
id="emailcc[% n %]" value="1"
|
||||
[% " checked" IF default.emailcc.$n %]>
|
||||
<label for="emailcc[% n %]">
|
||||
CC list member
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="checkbox" name="emaillongdesc[% n %]"
|
||||
id="emaillongdesc[% n %]" value="1"
|
||||
[% " checked" IF default.emaillongdesc.$n %]>
|
||||
<label for="emaillongdesc[% n %]">
|
||||
commenter
|
||||
</label>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<select name="emailtype[% n %]">
|
||||
[% FOREACH qv = [
|
||||
{ name => "substring", description => "contains" },
|
||||
{ name => "exact", description => "is" },
|
||||
{ name => "regexp", description => "matches regexp" },
|
||||
{ name => "notregexp", description => "doesn’t match regexp" } ] %]
|
||||
|
||||
<option value="[% qv.name %]"
|
||||
[% " selected" IF default.emailtype.$n == qv.name %]>[% qv.description %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input name="email[% n %]" size="20" value="[% default.email.$n FILTER html %]">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
</td>
|
||||
[% END %]
|
||||
</tr>
|
||||
</table>
|
||||
<hr>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<select name="bugidtype">
|
||||
<option value="include"[% " selected" IF default.bugidtype.0 == "include" %]>Only include</option>
|
||||
<option value="exclude"[% " selected" IF default.bugidtype.0 == "exclude" %]>Exclude</option>
|
||||
</select>
|
||||
bugs numbered:
|
||||
</td>
|
||||
<td>
|
||||
<input type="text" name="bug_id" value="[% default.bug_id.0 FILTER html %]" size="20">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>(comma-separated list)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="right">
|
||||
Only bugs with at least:
|
||||
</td>
|
||||
<td>
|
||||
<input name="votes" size="3" value="[% default.votes.0 FILTER html %]"> votes
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
</fieldset>
|
||||
</td>
|
||||
|
||||
[%# *** Bug Changes *** %]
|
||||
|
||||
<td valign="top">
|
||||
<fieldset>
|
||||
<legend><strong>Bug Changes</strong></legend>
|
||||
|
||||
|
||||
<dl>
|
||||
<dt>Only bugs changed in the last </dt>
|
||||
<dd><input name=changedin size=3 value="[% default.changedin.0 FILTER html %]"> days</dd>
|
||||
</dl>
|
||||
|
||||
<dl>
|
||||
<dt>Only bugs where any of the fields</dt>
|
||||
<dd>
|
||||
<select name="chfield" multiple size="4">
|
||||
[% FOREACH field = chfield %]
|
||||
<option value="[% field FILTER html %]"
|
||||
[% " selected" IF lsearch(default.chfield, field) != -1 %]>
|
||||
[% field FILTER html %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</dd>
|
||||
|
||||
<dt>were changed between</dt>
|
||||
<dd>
|
||||
<input name="chfieldfrom" size="10" value="[% default.chfieldfrom.0 FILTER html %]">
|
||||
and <input name="chfieldto" size="10" value="[% default.chfieldto.0 FILTER html %]">
|
||||
<br>(YYYY-MM-DD)
|
||||
</dd>
|
||||
<dt>to this value: (optional)</dt>
|
||||
<dd>
|
||||
<input name="chfieldvalue" size="20" value="[% default.chfieldvalue.0 FILTER html %]">
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
[%# *** Action Selection *** %]
|
||||
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
|
||||
[% IF NOT userid %]
|
||||
<input type="hidden" name="cmdtype" value="doit">
|
||||
[% ELSE %]
|
||||
<br>
|
||||
<input type="radio" name="cmdtype" value="doit" checked> Run this query
|
||||
<br>
|
||||
|
||||
[% IF namedqueries.size > 0 %]
|
||||
<p>
|
||||
<table cellspacing="0" cellpadding="0">
|
||||
<tr>
|
||||
<td>
|
||||
<input type="radio" name="cmdtype" value="editnamed">
|
||||
Load my remembered query:
|
||||
</td>
|
||||
<td rowspan="3">
|
||||
<select name="namedcmd">
|
||||
[% FOREACH query = namedqueries %]
|
||||
<option value="[% query FILTER html %]">[% query FILTER html %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="radio" name="cmdtype" value="runnamed">
|
||||
Run my remembered query:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="radio" name="cmdtype" value="forgetnamed">
|
||||
Forget my remembered query:
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</p>
|
||||
[% END %]
|
||||
|
||||
<input type="radio" name="cmdtype" value="asdefault">
|
||||
Remember this as my default query
|
||||
<br>
|
||||
<input type="radio" name="cmdtype" value="asnamed">
|
||||
Remember this query, and name it:
|
||||
<input type="text" name="newqueryname">
|
||||
<br> <input type="checkbox" name="tofooter" value="1">
|
||||
and put it in my page footer
|
||||
<br>
|
||||
[% END %]
|
||||
<br>
|
||||
<div>
|
||||
Sort results by:
|
||||
<select name="order">
|
||||
[% FOREACH order = orders %]
|
||||
<option value="[% order FILTER html %]"
|
||||
[% " selected" IF default.order.0 == order %]>[% order FILTER html %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
|
||||
<input type="submit" value="Search">
|
||||
[% IF userdefaultquery %]
|
||||
<p>
|
||||
<a href="query.cgi?nukedefaultquery=1">
|
||||
Set my default query back to the system default</a>
|
||||
</p>
|
||||
[% END %]
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
[%# *** Boolean Charts *** %]
|
||||
|
||||
<hr>
|
||||
|
||||
[% types = [
|
||||
{ name => "noop", description => "---" },
|
||||
{ name => "equals", description => "is equal to" },
|
||||
{ name => "notequals", description => "is not equal to" },
|
||||
{ name => "substring", description => "contains the string" },
|
||||
{ name => "casesubstring", description => "contains the string (exact case)" },
|
||||
{ name => "notsubstring", description => "does not contain the string" },
|
||||
{ name => "allwordssubstr", description => "contains all of the strings" },
|
||||
{ name => "anywordssubstr", description => "contains any of the strings" },
|
||||
{ name => "regexp", description => "contains regexp" },
|
||||
{ name => "notregexp", description => "does not contain regexp" },
|
||||
{ name => "lessthan", description => "is less than" },
|
||||
{ name => "greaterthan", description => "is greater than" },
|
||||
{ name => "anywords", description => "contains any of the words" },
|
||||
{ name => "allwords", description => "contains all of the words" },
|
||||
{ name => "nowords", description => "contains none of the words" },
|
||||
{ name => "changedbefore", description => "changed before" },
|
||||
{ name => "changedafter", description => "changed after" },
|
||||
{ name => "changedfrom", description => "changed from" },
|
||||
{ name => "changedto", description => "changed to" },
|
||||
{ name => "changedby", description => "changed by" } ] %]
|
||||
|
||||
<p>
|
||||
<strong>
|
||||
<a name="chart" href="queryhelp.cgi#advancedquerying">
|
||||
Advanced Querying Using Boolean Charts</a>:
|
||||
</strong>
|
||||
</p>
|
||||
|
||||
[%# Whoever wrote the original version of boolean charts had a seriously twisted mind %]
|
||||
|
||||
[% jsmagic = "onclick=\"document.forms[0].action='query.cgi#chart'; document.forms[0].method='POST'; return 1;\"" %]
|
||||
|
||||
[% FOREACH chart = default.charts %]
|
||||
[% chartnum = loop.count - 1 %]
|
||||
<table>
|
||||
[% FOREACH row = chart %]
|
||||
[% rownum = loop.count - 1 %]
|
||||
<tr>
|
||||
[% FOREACH col = row %]
|
||||
[% colnum = loop.count - 1 %]
|
||||
<td>
|
||||
<select name="[% "field${chartnum}-${rownum}-${colnum}" %]">
|
||||
[% FOREACH field = fields %]
|
||||
<option value="[% field.name %]"
|
||||
[%- " selected" IF field.name == col.field %]>[% field.description %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
|
||||
<select name="[% "type${chartnum}-${rownum}-${colnum}" %]">
|
||||
[% FOREACH type = types %]
|
||||
<option value="[% type.name %]"
|
||||
[%- " selected" IF type.name == col.type %]>[% type.description %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
|
||||
<input name="[% "value${chartnum}-${rownum}-${colnum}" %]"
|
||||
value="[% col.value FILTER html %]">
|
||||
</td>
|
||||
|
||||
[% IF NOT col == row.last %]
|
||||
<td align="center">
|
||||
Or
|
||||
</td>
|
||||
[% ELSE %]
|
||||
<td>
|
||||
[% newor = colnum + 1 %]
|
||||
<input type="submit" value="Or"
|
||||
name="cmd-add[% "${chartnum}-${rownum}-${newor}" %]" [% $jsmagic %]>
|
||||
</td>
|
||||
[% END %]
|
||||
|
||||
[% END %]
|
||||
</tr>
|
||||
|
||||
[% IF NOT row == chart.last %]
|
||||
<tr>
|
||||
<td>And</td>
|
||||
</tr>
|
||||
[% ELSE %]
|
||||
<tr>
|
||||
<td>
|
||||
[% newand = rownum + 1; newchart = chartnum + 1 %]
|
||||
<input type="submit" value="And"
|
||||
name="cmd-add[% "${chartnum}-${newand}-0" %]"[% $jsmagic %]>
|
||||
|
||||
<input type="submit" value="Add another boolean chart"
|
||||
name="cmd-add[% newchart %]-0-0" [% $jsmagic %]>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
[% END %]
|
||||
|
||||
[% END %]
|
||||
</table>
|
||||
<hr>
|
||||
[% END %]
|
||||
|
||||
<p>Give me a <a href="queryhelp.cgi">clue</a> about how to use this form.</p>
|
||||
|
||||
</FORM>
|
||||
|
||||
[% INCLUDE global/footer %]
|
||||
|
||||
[%############################################################################%]
|
||||
[%# Block for SELECT fields #%]
|
||||
[%############################################################################%]
|
||||
|
||||
[% BLOCK select %]
|
||||
<td align="left">
|
||||
<select name="[% sel.name %]" multiple size="[% sel.size %]">
|
||||
[% FOREACH name = ${sel.name} %]
|
||||
<option value="[% name FILTER html %]"
|
||||
[% " selected" IF lsearch(default.${sel.name}, name) != -1 %]>
|
||||
[% name FILTER html %]</option>
|
||||
[% END %]
|
||||
</select>
|
||||
</td>
|
||||
[% END %]
|
|
@ -0,0 +1,123 @@
|
|||
[% template_version = "1.0@bugzilla.org" %]
|
||||
[%# -*- mode: sgml -*- %]
|
||||
[%# 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): Jacob Steenhagen <jake@acutex.net>
|
||||
# Scott Collins <scc@mozilla.org>
|
||||
#%]
|
||||
<?xml version="1.0"?>
|
||||
<!-- [% template_version %] -->
|
||||
<?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
|
||||
<?xml-stylesheet href="[% Param('urlbase') %]css/panel.css" type="text/css"?>
|
||||
<window
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
xmlns:html="http://www.w3.org/1999/xhtml"
|
||||
orient="vertical"
|
||||
onload="document.getElementById('query-field').addEventListener('keypress', initial_keypress_handler, true)">
|
||||
|
||||
// Load QuickSearch libraries
|
||||
<script type="text/javascript" language="JavaScript" src="localconfig.js"/>
|
||||
<script type="text/javascript" language="JavaScript" src="quicksearch.js"/>
|
||||
|
||||
<script type="text/javascript" language="JavaScript">
|
||||
|
||||
// Tell QuickSearch that the source of this is the sidebar
|
||||
var sidebar = 1;
|
||||
|
||||
function load_relative_url( aRelativeURL ) {
|
||||
aRelativeURL = '[% Param('urlbase') %]' + aRelativeURL;
|
||||
_content.location = aRelativeURL;
|
||||
}
|
||||
|
||||
function initial_keypress_handler( aEvent ) {
|
||||
this.removeAttribute("class");
|
||||
this.addEventListener("keypress", normal_keypress_handler, true);
|
||||
this.removeEventListener("keypress", initial_keypress_handler, true);
|
||||
}
|
||||
|
||||
function normal_keypress_handler( aEvent ) {
|
||||
if ( aEvent.keyCode == 13 )
|
||||
QuickSearch(this.value);
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<textbox id="query-field" class="descriptive-content" value="enter query" onfocus="this.setSelectionRange(0,this.value.length)"/>
|
||||
|
||||
<separator class="groove"/>
|
||||
|
||||
<box autostretch="never" valign="top">
|
||||
<box orient="vertical" flex="1">
|
||||
<text class="text-link" onclick="load_relative_url('query.cgi')" value="new query"/>
|
||||
<text class="text-link" onclick="load_relative_url('reports.cgi')" value="reports"/>
|
||||
<text class="text-link" onclick="load_relative_url('enter_bug.cgi')" value="new bug"/>
|
||||
<separator class="thin"/>
|
||||
|
||||
[% IF username %]
|
||||
<text class="text-link" onclick="load_relative_url('userprefs.cgi')" value="edit prefs"/>
|
||||
[% END %]
|
||||
[% IF UserInGroup('tweakparams') %]
|
||||
<text class="text-link" onclick="load_relative_url('editparams.cgi')" value="edit params"/>
|
||||
[% END %]
|
||||
[% IF UserInGroup('editusers') || blessgroupset %]
|
||||
<text class="text-link" onclick="load_relative_url('editusers.cgi')" value="edit users"/>
|
||||
[% END %]
|
||||
[% IF UserInGroup('editcomponents') %]
|
||||
<text class="text-link" onclick="load_relative_url('editcomponents.cgi')" value="edit components"/>
|
||||
[% END %]
|
||||
[% IF UserInGroup('creategroups') %]
|
||||
<text class="text-link" onclick="load_relative_url('editgroups.cgi')" value="edit groups"/>
|
||||
[% END %]
|
||||
[% IF UserInGroup('editkeywords') %]
|
||||
<text class="text-link" onclick="load_relative_url('editkeywords.cgi')" value="edit keywords"/>
|
||||
[% END %]
|
||||
[% IF UserInGroup('tweakparams') %]
|
||||
<text class="text-link" onclick="load_relative_url('sanitycheck.cgi')" value="sanity check"/>
|
||||
[% END %]
|
||||
[% IF username %]
|
||||
<text class="text-link" onclick="load_relative_url('relogin.cgi')" value="logout [% username FILTER html %]"/>
|
||||
<separator class="thin"/>
|
||||
[% END %]
|
||||
|
||||
[% IF mybugsurl %]
|
||||
<text class="text-link" onclick="load_relative_url('[% mybugsurl FILTER html %]')" value="my bugs"/>
|
||||
[% END %]
|
||||
[% IF anyvotesallowed && username %]
|
||||
<text class="text-link" onclick="load_relative_url('votes.cgi?action=show_user')" value="my votes"/>
|
||||
[% END %]
|
||||
|
||||
[% FOREACH name = namedqueries %]
|
||||
<text class="text-link" onclick="load_relative_url('buglist.cgi?cmdtype=runnamed&namedcmd=[% name FILTER uri %]')" value="[% name FILTER html %]"/>
|
||||
[% END %]
|
||||
|
||||
[% IF NOT username %]
|
||||
<text class="text-link" onclick="load_relative_url('createaccount.cgi')" value="new user"/>
|
||||
<text class="text-link" onclick="load_relative_url('query.cgi?GoAheadAndLogIn=1')" value="log in"/>
|
||||
[% END %]
|
||||
|
||||
</box>
|
||||
</box>
|
||||
|
||||
<spring flex="1"/>
|
||||
<box orient="horizontal">
|
||||
<spring flex="1"/>
|
||||
<html align="right">
|
||||
<html:a class="text-link" href="[% Param('urlbase') %]sidebar.cgi">reload</html:a>
|
||||
</html>
|
||||
</box>
|
||||
</window>
|
Загрузка…
Ссылка в новой задаче