Bug 129442 - make html of a default installation (mostly) HTML 4.01

transitional compliant
Original patch by chema@ximian.com, modified/extended by
bbaetz@student.usyd.edu.au
r=gerv, justdave
This commit is contained in:
bbaetz%student.usyd.edu.au 2002-04-15 02:48:17 +00:00
Родитель f747112b8d
Коммит ab1068ae37
23 изменённых файлов: 46 добавлений и 2422 удалений

Просмотреть файл

@ -1,4 +1,4 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<!--
@ -24,7 +24,11 @@
Contributor(s): Terry Weissman <terry@mozilla.org>
-->
<head>
<TITLE>A Bug's Life Cycle</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<h1 ALIGN=CENTER>A Bug's Life Cycle</h1>
@ -197,6 +201,6 @@ status field appropriately.
<hr>
<!-- hhmts start -->
Last modified: Thu Aug 23 03:04:27 2000
Last modified: Sun Apr 14 12:51:23 EST 2002
<!-- hhmts end -->
</body> </html>

Просмотреть файл

@ -1,391 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content=
"text/html;charset=iso-8859-1">
<title>Bug Writing Guidelines</title>
</head>
<body>
<center>
<h1>Bug Writing Guidelines</h1>
</center>
<h3>Why You Should Read This</h3>
<blockquote>
<p>Simply put, the more effectively you report a bug, the more
likely an engineer will actually fix it.</p>
<p>These guidelines are a general
tutorial to teach novice and intermediate bug reporters how to compose effective bug reports. Not every sentence may precisely apply to
your software project.</p>
</blockquote>
<h3>How to Write a Useful Bug Report</h3>
<blockquote>
<p>Useful bug reports are ones that get bugs fixed. A useful bug
report normally has two qualities:</p>
<ol>
<li><b>Reproducible.</b> If an engineer can't see the bug herself to prove that it exists, she'll probably stamp your bug report "WORKSFORME" or "INVALID" and move on to the next bug. Every detail you can provide helps.<br>
<br>
</li>
<li><b>Specific.</b> The quicker the engineer can isolate the bug
to a specific area, the more likely she'll expediently fix it.
(If a programmer or tester has to decypher a bug, they may spend
more time cursing the submitter than solving the problem.)
<br>
<br>
[ <a href="#tips" name="Anchor">Tell Me More</a> ]
</li>
</ol>
<p>Let's say the application you're testing is a web browser. You
crash at foo.com, and want to write up a bug report:</p>
<blockquote>
<p><b>BAD:</b> "My browser crashed. I think I was on www.foo.com. I play golf with Bill Gates, so you better fix this problem, or I'll report you to him. By the way, your Back icon looks like a squashed rodent. UGGGLY. And my grandmother's home page is all messed up in your browser. Thx 4 UR help."
</p>
<p>
<b>GOOD:</b> "I crashed each time I went to www.foo.com, using
the 2002-02-25 build on a Windows 2000 system. I also
rebooted into Linux, and reproduced this problem using the 2002-02-24
Linux build.
</p>
<p>
It again crashed each time upon drawing the Foo banner at the top
of the page. I broke apart the page, and discovered that the
following image link will crash the application reproducibly,
unless you remove the "border=0" attribute:
</p>
<p>
<tt>&lt;IMG SRC="http://www.foo.com/images/topics/topicfoos.gif"
width="34" height="44" border="0" alt="News"&gt;</tt>
</p>
</blockquote>
</blockquote>
<h3>How to Enter your Useful Bug Report into Bugzilla:</h3>
<blockquote>
<p>Before you enter your bug, use Bugzilla's
<a href="query.cgi">search page</a> to determine whether the defect you've discovered is a known, already-reported bug. If your bug is the 37th duplicate of a known issue, you're more likely to annoy the engineer. (Annoyed
engineers fix fewer bugs.)
</p>
<p>
Next, be sure to reproduce your bug using a recent
build. Engineers tend to be most interested in problems affecting
the code base that they're actively working on. After all, the bug you're reporting
may already be fixed.
</p>
<p>
If you've discovered a new bug using a current build, report it in
Bugzilla:
</p>
<ol>
<li>From your Bugzilla main page, choose
"<a href="enter_bug.cgi">Enter a new bug</a>".</li>
<li>Select the product that you've found a bug in.</li>
<li>Enter your e-mail address, password, and press the "Login"
button. (If you don't yet have a password, leave the password field empty,
and press the "E-mail me a password" button instead.
You'll quickly receive an e-mail message with your password.)</li>
</ol>
<p>Now, fill out the form. Here's what it all means:</p>
<p><b>Where did you find the bug?</b></p>
<blockquote>
<p><b>Product: In which product did you find the bug?</b><br>
You just specified this on the last page, so you can't edit it here.</p>
<p><b>Version: In which product version did you find the
bug?</b><br>
(If applicable)</p>
<p><b>Component: In which component does the bug exist?</b><br>
Bugzilla requires that you select a component to enter a bug. (Not sure which to choose?
Click on the Component link. You'll see a description of each component, to help you make the best choice.)</p>
<p><b>OS: On which Operating System (OS) did you find this bug?</b>
(e.g. Linux, Windows 2000, Mac OS 9.)<br>
If you know the bug happens on all OSs, choose 'All'. Otherwise,
select the OS that you found the bug on, or "Other" if your OS
isn't listed.</p>
</blockquote>
<p><b>How important is the bug?</b></p>
<blockquote>
<p><b>Severity: How damaging is the bug?</b><br>
This item defaults to 'normal'. If you're not sure what severity your bug deserves, click on the Severity link.
You'll see a description of each severity rating. <br>
</p>
</blockquote>
<p><b>Who will be following up on the bug?</b></p>
<blockquote>
<p><b>Assigned To: Which engineer should be responsible for fixing
this bug?</b><br>
Bugzilla will automatically assign the bug to a default engineer
upon submitting a bug report. If you'd prefer to directly assign the bug to
someone else, enter their e-mail address into this field. (To see the list of
default engineers for each component, click on the Component
link.)</p>
<p><b>Cc: Who else should receive e-mail updates on changes to this
bug?</b><br>
List the full e-mail addresses of other individuals who should
receive an e-mail update upon every change to the bug report. You
can enter as many e-mail addresses as you'd like, separated by spaces or commas, as long as those
people have Bugzilla accounts.</p>
</blockquote>
<p><b>What else can you tell the engineer about the bug?</b></p>
<blockquote>
<p><b>Summary:</b> <b>How would you describe the bug, in
approximately 60 or fewer characters?</b><br>
A good summary should <b>quickly and uniquely identify a bug
report</b>. Otherwise, an engineer cannot meaningfully identify
your bug by its summary, and will often fail to pay attention to
your bug report when skimming through a 10 page bug list.<br>
<br>
A useful summary might be
"<tt>PCMCIA install fails on Tosh Tecra 780DVD w/ 3c589C</tt>".
"<tt>Software fails</tt>" or "<tt>install problem</tt>" would be
examples of a bad summary.<br>
<br>
[ <a href="#summary">Tell Me More</a> ]<br>
<br>
<b>Description: </b><br>
Please provide a detailed problem report in this field.
Your bug's recipients will most likely expect the following information:</p>
<blockquote>
<p><b>Overview Description:</b> More detailed expansion of
summary.</p>
<blockquote>
<pre>
Drag-selecting any page crashes Mac builds in NSGetFactory
</pre>
</blockquote>
<p><b>Steps to Reproduce:</b> Minimized, easy-to-follow steps that will
trigger the bug. Include any special setup steps.</p>
<blockquote>
<pre>
1) View any web page. (I used the default sample page,
resource:/res/samples/test0.html)
2) Drag-select the page. (Specifically, while holding down
the mouse button, drag the mouse pointer downwards from any
point in the browser's content region to the bottom of the
browser's content region.)
</pre>
</blockquote>
<b>Actual Results:</b> What the application did after performing
the above steps.
<blockquote>
<pre>
The application crashed. Stack crawl appended below from MacsBug.
</pre>
</blockquote>
<p><b>Expected Results:</b> What the application should have done,
were the bug not present.</p>
<blockquote>
<pre>
The window should scroll downwards. Scrolled content should be selected.
(Or, at least, the application should not crash.)
</pre>
</blockquote>
<p><b>Build Date &amp; Platform:</b> Date and platform of the build
that you first encountered the bug in.</p>
<blockquote>
<pre>
Build 2002-03-15 on Mac OS 9.0
</pre>
</blockquote>
<p><b>Additional Builds and Platforms:</b> Whether or not the bug
takes place on other platforms (or browsers, if applicable).</p>
<blockquote>
<pre>
- Also Occurs On
Mozilla (2002-03-15 build on Windows NT 4.0)
- Doesn't Occur On
Mozilla (2002-03-15 build on Red Hat Linux; feature not supported)
Internet Explorer 5.0 (shipping build on Windows NT 4.0)
Netscape Communicator 4.5 (shipping build on Mac OS 9.0)
</pre>
</blockquote>
<p><b>Additional Information:</b> Any other debugging information.
For crashing bugs:</p>
<ul>
<li><b>Win32:</b> if you receive a Dr. Watson error, please note
the type of the crash, and the module that the application crashed
in. (e.g. access violation in apprunner.exe)</li>
<li><b>Mac OS:</b> if you're running MacsBug, please provide the
results of a <b>how</b> and an <b>sc</b>:</li>
</ul>
<blockquote>
<pre>
*** MACSBUG STACK CRAWL OF CRASH (Mac OS)
Calling chain using A6/R1 links
Back chain ISA Caller
00000000 PPC 0BA85E74
03AEFD80 PPC 0B742248
03AEFD30 PPC 0B50FDDC NSGetFactory+027FC
PowerPC unmapped memory exception at 0B512BD0 NSGetFactory+055F0
</pre>
</blockquote>
</blockquote>
</blockquote>
<p>You're done!<br>
<br>
After double-checking your entries for any possible errors, press
the "Commit" button, and your bug report will now be in the
Bugzilla database.<br>
</p>
</blockquote>
<hr>
<h3>More Information on Writing Good Bugs</h3>
<blockquote>
<p><b><a name="tips"></a> 1. General Tips for a Useful Bug
Report</b>
</p>
<blockquote>
<p>
<b>Use an explicit structure, so your bug reports are easy to
skim.</b> Bug report users often need immediate access to specific
sections of your bug. If your Bugzilla installation supports the
Bugzilla Helper, use it.
</p>
<p>
<b>Avoid cuteness if it costs clarity.</b> Nobody will be laughing
at your funny bug title at 3:00 AM when they can't remember how to
find your bug.
</p>
<p>
<b>One bug per report.</b> Completely different people typically
fix, verify, and prioritize different bugs. If you mix a handful of
bugs into a single report, the right people probably won't discover
your bugs in a timely fashion, or at all. Certain bugs are also
more important than others. It's impossible to prioritize a bug
report when it contains four different issues, all of differing
importance.
</p>
<p>
<b>No bug is too trivial to report.</b> Unless you're reading the
source code, you can't see actual software bugs, like a dangling
pointer -- you'll see their visible manifestations, such as the
segfault when the application finally crashes. Severe software
problems can manifest themselves in superficially trivial ways.
File them anyway.<br>
</blockquote>
<p><b><a name="summary"></a>2. How and Why to Write Good Bug Summaries</b>
</p>
<blockquote>
<p><b>You want to make a good first impression on the bug
recipient.</b> Just like a New York Times headline guides readers
towards a relevant article from dozens of choices, will your bug summary
suggest that your bug report is worth reading from dozens or hundreds of
choices?
</p>
<p>
Conversely, a vague bug summary like <tt>install problem</tt> forces anyone
reviewing installation bugs to waste time opening up your bug to
determine whether it matters.
</p>
<p>
<b>Your bug will often be searched by its summary.</b> Just as
you'd find web pages with Google by searching by keywords through
intuition, so will other people locate your bugs. Descriptive bug
summaries are naturally keyword-rich, and easier to find.
</p>
<p>
For example, you'll find a bug titled "<tt>Dragging icons from List View to
gnome-terminal doesn't paste path</tt>" if you search on "List",
"terminal", or "path". Those search keywords wouldn't have found a
bug titled "<tt>Dragging icons
doesn't paste</tt>".
</p>
<p>
Ask yourself, "Would someone understand my bug from just this
summary?" If so, you've written a fine summary.
</p>
<p><b>Don't write titles like these:</b></p>
<ol>
<li>"Can't install" - Why can't you install? What happens when you
try to install?</li>
<li>"Severe Performance Problems" - ...and they occur when you do
what?</li>
<li>"back button does not work" - Ever? At all?</li>
</ol>
<p><b>Good bug titles:</b></p>
<ol>
<li>"1.0 upgrade installation fails if Mozilla M18 package present"
- Explains problem and the context.</li>
<li>"RPM 4 installer crashes if launched on Red Hat 6.2 (RPM 3)
system" - Explains what happens, and the context.</li>
</ol>
</blockquote>
</blockquote>
<p>(Written and maintained by
<a href="http://www.prometheus-music.com/eli">Eli Goldberg</a>. Claudius
Gayle, Gervase Markham, Peter Mock, Chris Pratt, Tom Schutter and Chris Yeh also
contributed significant changes. Constructive
<a href="mailto:eli@prometheus-music.com">suggestions</a> welcome.)</p>
</body>
</html>

Просмотреть файл

@ -1,153 +0,0 @@
<HTML><head>
<!--
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) 2000 Netscape Communications Corporation. All
Rights Reserved.
Contributor(s): Terry Weissman <terry@mozilla.org>
-->
<title>Understanding the UNCONFIRMED state, and other recent changes</title>
</head>
<body>
<h1>Understanding the UNCONFIRMED state, and other recent changes</h1>
[This document is aimed primarily at people who have used Bugzilla
before the UNCONFIRMED state was implemented. It might be helpful for
newer users as well.]
<p>
New bugs in some products will now show up in a new state,
UNCONFIRMED. This means that we have nobody has confirmed that the
bug is real. Very busy engineers will probably generally ignore
UNCONFIRMED that have been assigned to them, until they have been
confirmed in one way or another. (Engineers with more time will
hopefully glance over their UNCONFIRMED bugs regularly.)
<p>
The <a href="bug_status.html">page describing bug fields</a> has been
updated to include UNCONFIRMED.
<p>
There are two basic ways that a bug can become confirmed (and enter
the NEW) state.
<ul>
<li> A user with the appropriate permissions (see below for more on
permissions) decides that the bug is a valid one, and confirms
it. We hope to gather a small army of responsible volunteers
to regularly go through bugs for us.
<li> The bug gathers a certain number of votes. <B>Any</B> valid Bugzilla user may vote for
bugs (each user gets a certain number of bugs); any UNCONFIRMED bug which
gets enough votes becomes automatically confirmed, and enters the NEW state.
</ul>
One implication of this is that it is worth your time to search the
bug system for duplicates of your bug to vote on them, before
submitting your own bug. If we can spread around knowledge of this
fact, it ought to help cut down the number of duplicate bugs in the
system.
<h2>Permissions.</h2>
Users now have a certain set of permissions. To see your permissions,
check out the
<a href="userprefs.cgi?bank=permissions">user preferences</a> page.
<p>
If you have the "Can confirm a bug" permission, then you will be able
to move UNCONFIRMED bugs into the NEW state.
<p>
If you have the "Can edit all aspects of any bug" permission, then you
can tweak anything about any bug. If not, you may only edit those
bugs that you have submitted, or that you have assigned to you (or
qa-assigned to you). However, anyone may add a comment to any bug.
<p>
Some people (initially, the initial owners and initial qa-contacts for
components in the system) have the ability to give the above two
permissions to other people. So, if you really feel that you ought to
have one of these permissions, a good person to ask (via private
email, please!) is the person who is assigned a relevant bug.
<h2>Other details.</h2>
An initial stab was taken to decide who would be given which of the
above permissions. This was determined by some simple heurstics of
who was assigned bugs, and who the default owners of bugs were, and a
look at people who seem to have submitted several bugs that appear to
have been interesting and valid. Inevitably, we have failed to give
someone the permissions they deserve. Please don't take it
personally; just bear with us as we shake out the new system.
<p>
People with one of the two bits above can easily confirm their own
bugs, so bugs they submit will actually start out in the NEW state.
They can override this when submitting a bug.
<p>
People can ACCEPT or RESOLVE a bug assigned to them, even if they
aren't allowed to confirm it. However, the system remembers, and if
the bug gets REOPENED or reassigned to someone else, it will revert
back to the UNCONFIRMED state. If the bug has ever been confirmed,
then REOPENing or reassigning will cause it to go to the NEW or
REOPENED state.
<p>
Note that only some products support the UNCONFIRMED state. In other
products, all new bugs will automatically start in the NEW state.
<h2>Things still to be done.</h2>
There probably ought to be a way to get a bug back into the
UNCONFIRMED state, but there isn't yet.
<p>
If a person has submitted several bugs that get confirmed, then this
is probably a person who understands the system well, and deserves the
"Can confirm a bug" permission. This kind of person should be
detected and promoted automatically.
<p>
There should also be a way to automatically promote people to get the
"Can edit all aspects of any bug" permission.
<p>
The "enter a new bug" page needs to be revamped with easy ways for new
people to educate themselves on the benefit of searching for a bug
like the one they're about to submit and voting on it, rather than
adding a new useless duplicate.
<hr>
<!-- hhmts start -->
Last modified: Wed Feb 16 21:04:56 2000
<!-- hhmts end -->
</body> </html>

Просмотреть файл

@ -347,7 +347,7 @@ DefParam("mostfreqthreshold",
DefParam("mybugstemplate",
"This is the URL to use to bring up a simple 'all of my bugs' list for a user. %userid% will get replaced with the login name of a user.",
"t",
"buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=%userid%&emailtype1=exact&emailassigned_to1=1&emailreporter1=1");
"buglist.cgi?bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;email1=%userid%&amp;emailtype1=exact&amp;emailassigned_to1=1&amp;emailreporter1=1");

Просмотреть файл

@ -1051,7 +1051,7 @@ sub quoteUrls {
my $num = $4;
$item = value_quote($item); # Not really necessary, since we know
# there's no special chars in it.
$item = qq{<A HREF="attachment.cgi?id=$num&action=view">$item</A>};
$item = qq{<a href="attachment.cgi?id=$num&amp;action=view">$item</a>};
$things[$count++] = $item;
}
while ($text =~ s/\*\*\* This bug has been marked as a duplicate of (\d+) \*\*\*/"##$count##"/ei) {

Просмотреть файл

@ -1,66 +0,0 @@
<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):
Contributor(s): Terry Weissman <terry@mozilla.org>
-->
<TITLE>Clue</TITLE>
<H1>A Clue</H1>
This form will allow you to call up a subset of the bug list.
You should be able to add the URL of the resulting list to
your bookmark file in order to preserve queries.
<p>
The way the query works, if you have nothing checked in a box,
then all values for that field are legal, for example if you checked nothing
in any of the boxes, you would get the entire bug list.
<p>
The default value of this form should correspond roughly to a "personal"
bug list.
<HR>
<H2>Running queries not supported by the pretty boxes</H2>
There is a hacky way to do some searches that aren't supported by the
form. The buglist script will build queries based on the URL, so
you can add other criteria.
<P>
For example, if you wanted to see all bugs reported against the X platform
and assigned to jwz, you could ask for all bugs assign to jwz, then
edit the URL in the "Location" box, adding the clause "&rep_platform=X-Windows"
to the URL.
<P>
Here is a list of some of the field names you could use for additional
unsupported searches ...
<PRE>
version
rep_platform
op_sys
reporter area
bug_file_loc
short_desc
</PRE>
<HR>
<H1>Browser Notes</H1>
<P>Bugzilla uses several non-standard Netscape extentions, but this does not seem
to case any problem with other browsers. The lynx browser does work, but lynx
seems to cache results of a .cgi. You'll sometimes need to press CONTROL-R to reload
the screen to see an update.
</html>

Просмотреть файл

@ -1,36 +0,0 @@
<html> <head>
<title>Help on searching by email address.</title>
</head>
<body>
<h1>Help on searching by email address.</h1>
This used to be simpler, but not very powerful. Now it's really
powerful and useful, but it may not be obvious how to use it...
<p>
To search for bugs associated with an email address:
<ul>
<li> Type a portion of an email address into the text field.
<li> Select which fields of the bug you expect that address to be in
the bugs you're looking for.
</ul>
<p>
You can look for up to two different email addresses; if you specify
both, then only bugs which match both will show up. This is useful to
find bugs that were, for example, created by Ralph and assigned to
Fred.
<p>
You can also use the drop down menus to specify whether you want to
match addresses by doing a substring match, by using regular
expressions, or by exactly matching a fully specified email address.
</body> </html>

Просмотреть файл

@ -1,83 +0,0 @@
<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):
Contributor(s): Terry Weissman <terry@mozilla.org>
-->
<TITLE>How to Mail to bugzilla</TITLE>
<H1>THIS DOESN'T WORK RIGHT NOW. Coming someday.</H1>
Mailing to "bugzilla" will be piped through a script which examines
your message, stripping out control lines, and passing the rest of the
message in as the description of a new bug. The control lines look like: <P>
<PRE>
@FIELD-LABEL VALUE
LABEL Legal Values
Priority critical major normal minor trivial
Type BUG RFE
Product Cheddar
Platform PC X-Windows Macintosh All
Area CODE JAVA TEST BUILD UI PERF
Version version 2.0b1 2.0b2 2.0b2 2.0b4 2.1a0 2.1a1 2.1b0 2.1b1 2.1b2
OS Windows 3.1 Windows 95 Windows NT System 7 System 7.5
AIX BSDI HP-UX IRIX Linux OSF/1 Solaris SunOS other
Summary -anything-
URL -anything-
Assign someone in eng
and
@description
This tells the bug parse to stop looking for control lines,
allowing the bug description to contain lines which start with @
</PRE>
There are default values for all these fields. If you don't specify a
Summary, the subject of the mail message is used. <P>
If you specify an illegal value, the default value is used, the
bug is assigned to you, and the answerback message will describe
the error. <P>
After the bug is posted, you will get mail verifying the posting
and informing you of the bug number if you wish to fix any
mistakes made by the auto-processor. <P>
EXAMPLE: <P>
<PRE>
% Mail bugzilla
Subject: WinFE crashes with GPF when I pour beer on my keyboard
@priority critical
@platform PC
@assign troy
After the beer bash I emptied the rest of the keg onto my keyboard
and my sharp build of Navigator got a GPF.
.
</PRE>

Просмотреть файл

@ -1,10 +0,0 @@
<html> <head>
<title>No target milestones</title>
</head>
<body>
<h1>No target milestones.</h1>
No target milestones have been defined for this product. You can set
the Target Milestone field to things, but there is not currently any
agreed definition of what the milestones are.

Просмотреть файл

@ -1,144 +0,0 @@
<html>
<head>
<title>Bugzilla QuickSearch</title>
</head>
<body bgcolor="#ffffff">
<small>If you are already familiar with the original
<a href="query.cgi">Bugzilla Query Form</a>,
you may prefer <a href="quicksearchhack.html">this form</a>.
</small>
<p>
<script src="localconfig.js"></script>
<script src="quicksearch.js"></script>
<h1>Bugzilla QuickSearch</h1>
Type in one or more words (or word fragments) to search for:
<form name="f" action="show_bug.cgi" method="get"
onsubmit="QuickSearch(f.id.value); return false;">
<table>
<tr>
<td><input type="text" size="40" name="id"/></td>
<td align=left><input type="submit" value="Search"/></td>
<!-- <td><a href="javascript:QuickSearch_Help();">[Help]</a></td> -->
</tr>
</table>
</form>
<script>
<!--
document.forms['f'].id.focus();
//-->
</script>
<p>
<h2>Getting Started</h2>
<ul>
<li> This is <b>case-insensitive</b> search.
<ul>
<li> &nbsp;<tt>table</tt>&nbsp;, &nbsp;<tt>Table</tt>&nbsp;
and &nbsp;<tt>TABLE</tt>&nbsp; are all the same.
</ul>
<li> This is <b>all words as substrings</b> search.<br>
Therefore you should <b>use stems</b> to get better results:
<ul>
<li> Use <tt>localiz</tt> instead of <tt>localize</tt> or
<tt>localization</tt>.
<li> Use <tt>bookmark</tt> instead of <tt>bookmarks</tt> or
<tt>bookmarking</tt>.
</ul>
</ul>
<a name="features"/>
<h2>Features</h2>
<ul>
<li> Boolean operations: ``<tt>-foo</tt>''(NOT), ``<tt>foo bar</tt>''(AND),
``<tt>foo|bar</tt>''(OR).
<ul>
<li> <b>NOT</b>: Use &nbsp;<tt><b>-</b><i>foo</i></tt>&nbsp; to exclude bugs
with &nbsp;<tt><i>foo</i></tt>&nbsp; in the summary.
<li> <b>AND</b>: Space-separated words are treated as a conjunction.
<li> <b>OR</b>: Within a word, "|"-separated parts denote alternatives.
<li> Besides "|", a comma can be used to separate alternatives.
<li> OR has higher precedence than AND; AND is the top level operation
</ul>
<i>Example:</i> &nbsp;<tt>url,location bar,field -focus</tt>&nbsp;
means
<nobr>(<tt>url</tt> OR <tt>location</tt>) AND (<tt>bar</tt> OR <tt>field</tt>) AND (NOT <tt>focus</tt>)</nobr>
<p>
<li> Use &nbsp;<tt>+foo</tt>&nbsp; to search for bugs where the <b>summary</b> contains &nbsp;<tt>foo</tt>&nbsp; as a <b>substring</b>.<br>
Use &nbsp;<tt>#foo</tt>&nbsp; to search for bugs where the <b>summary</b> contains the <b>word</b> &nbsp;<tt>foo</tt>&nbsp;
<ul>
<li> &nbsp;<tt>+brow</tt>&nbsp; does not find all bugs in the &nbsp;<tt>Browser</tt>&nbsp; product
<li> &nbsp;<tt>#title</tt>&nbsp; does not find bugs bugs with &nbsp;<tt>titlebar</tt>&nbsp; or &nbsp;<tt>titled</tt>&nbsp;
</ul>
Phrases with special chars (space, comma, +, -, #, ...) can be <b>quoted</b>:
<ul>
<li> &nbsp;<tt>"lock icon"</tt>&nbsp;
</ul>
<p>
<li> <b>Open vs. Resolved Bugs</b>:<br>
By default, only open (i.e. unresolved) bugs are shown.
Use &nbsp;<tt>+DUP</tt>&nbsp; as first word in your query
to include duplicate bugs in your search,
&nbsp;<tt>FIXED</tt>&nbsp; to search for fixed bugs only,
or &nbsp;<tt>ALL</tt>&nbsp; to search all bugs,
regardless of status or resolution. Searching for duplicates is
recommended if you can't find an open bug directly.
<ul>
<li> &nbsp;<tt>+DUP,FIXED table border</tt>&nbsp;
<li> &nbsp;<tt>ALL mouse wheel</tt>&nbsp;
</ul>
<p>
<li> <b>Focus the Search with Products &amp; Components</b>:<br>
To search for bugs in product "Foo Bar" only, add
&nbsp;<tt>:foo</tt>&nbsp; or &nbsp;<tt>:bar</tt>&nbsp; or both
to your query.
You can do this with any substring of a
<a href="describecomponents.cgi">product or component</a>
to focus the search.
</ul>
<h2>More Tips</h2>
<ul>
<li> You can also use this tool to <b>lookup</b> a bug by its number.
<ul>
<li> &nbsp;<tt>12345</tt>&nbsp;
</ul>
<li> A comma-separated list of bug numbers gives you a list of these bugs.
<ul>
<li> &nbsp;<tt>12345,23456,34567</tt>&nbsp;
</ul>
</ul>
<p>
By default, the following fields are searched: Summary, Keywords, Product,
Component, Status Whiteboard. If a word looks like a part of a URL, that field
is included in the search, too.
<p>
<!--
<small>For further details, see
<a href="http://bugzilla.mozilla.org/show_bug.cgi?id=61561">Bug 61561</a> and
<a href="http://bugzilla.mozilla.org/show_bug.cgi?id=69793">Bug 69793</a>.
</small>
-->
<hr>
Use the powerful
<a href="query.cgi">Bugzilla Query Form</a>
for advanced queries.
</body>
</html>

Просмотреть файл

@ -1,31 +1,35 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Bugzilla QuickSearch (for Hackers)</title>
</head>
<body bgcolor="#ffffff">
<script src="localconfig.js"></script>
<script src="quicksearch.js"></script>
<script src="localconfig.js" type="text/javascript"></script>
<script src="quicksearch.js" type="text/javascript"></script>
<h1>Bugzilla QuickSearch (for Hackers)</h1>
<p>
Type in one or more words (or word fragments) to search for:
</p>
<form name="f" action="show_bug.cgi" method="get"
onsubmit="QuickSearch(f.id.value); return false;">
<table>
<tr>
<td><input type="text" size="40" name="id"/></td>
<td align=left><input type="submit" name="run" value="Search"/></td>
<td align=left><input type="button" name="load" value="Load Query"
onclick="LoadQuery(f.id.value);" />
<td><input type="text" size="40" name="id"></td>
<td align="left"><input type="submit" name="run" value="Search"></td>
<td align="left"><input type="button" name="load" value="Load Query"
onclick="LoadQuery(f.id.value);">
</td>
</tr>
</table>
</form>
<script>
<script type="text/javascript">
<!--
document.forms['f'].id.focus();
//-->
@ -37,6 +41,7 @@ words are separated by spaces.
By default, the following fields are relevant: Summary, Keywords,
Product, Component, Status Whiteboard. If a word looks like a part of a
URL, that field is included in the search, too.
</p>
<p>
The generic format for a ``word'' is
&nbsp;<tt>field1,...,fieldN:value1,...,valueM</tt>&nbsp;.
@ -50,12 +55,13 @@ If only &nbsp;<tt>value1,...,valueM</tt>&nbsp; is given,
the prefix (roughly) defaults to &nbsp;<tt>summary,keywords,product,component,statuswhiteboard:</tt>&nbsp; as noted above.
You can use &nbsp;<tt>-<i>word</i></tt>&nbsp; to express the logical negation
of &nbsp;<tt><i>word</i></tt>.&nbsp;
</p>
<p>
Here is a complete listing of available fields (the Shortcut column is just
for access speed):
<p>
</p>
<table border=1>
<table border="1">
<thead>
<tr>
<td><b>Searched by default</b></td>
@ -70,7 +76,7 @@ for access speed):
<tr>
<td>&nbsp;</td>
<td rowspan=2><tt><nobr>UNCO,NEW,...,CLOS,</nobr><br><nobr>FIX,DUP,...</nobr> <i><nobr>(as first word)</nobr></i></tt></td>
<td rowspan="2"><tt>UNCO,NEW,...,CLOS,<br>FIX,DUP,...<i>(as first word)</i></tt></td>
<td><tt>status</tt></td>
<td>&nbsp;</td>
<td><a href="bug_status.html">Status</a>
@ -148,7 +154,7 @@ for access speed):
<tr>
<td><i>yes</i></td>
<td rowspan=2><b>:</b><i>area</i></td>
<td rowspan="2"><b>:</b><i>area</i></td>
<td><tt>product</tt></td>
<td><tt>prod</tt></td>
<td>Product (enum)</td>
@ -241,8 +247,8 @@ for access speed):
<p>
Examples for some useful abbreviations:
<p>
<table border=1>
</p>
<table border="1">
<thead>
<tr>
<td><b>Syntax</b></td>
@ -292,7 +298,7 @@ Examples for some useful abbreviations:
</tr>
<tr>
<td><tt>blo,cri,maj</tt></td>
<td><i>severe bugs</td>
<td><i>severe bugs</i></td>
</tr>
<tr>
<td><tt>enh</tt></td>
@ -303,12 +309,12 @@ Examples for some useful abbreviations:
<td><b>priority:</b><i>level</i></td>
</tr>
<tr>
<td><tt>p1<tt></td>
<td><tt>p1</tt></td>
<td><i>very high-priority bugs</i></td>
</tr>
<tr>
<td><tt>p1-2</tt></td>
<td><i>high-priority bugs</td>
<td><i>high-priority bugs</i></td>
</tr>
<tr>
<td><b>@</b><i>owner</i></td>
@ -344,6 +350,7 @@ Examples for some useful abbreviations:
More information can be found in the
<a href="quicksearch.html#features">&quot;Features&quot;</a> section
on the <a href="quicksearch.html">introductory page</a>.
</p>
</body>
</html>

Просмотреть файл

@ -171,6 +171,7 @@ sub choose_product {
print <<FIN;
<center>
<h1>Welcome to the Bugzilla Query Kitchen</h1>
</center>
<form method=get action=reports.cgi>
<table border=1 cellpadding=5>
<tr>

Просмотреть файл

@ -1,58 +0,0 @@
<!-- 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 %]

Просмотреть файл

@ -33,9 +33,9 @@
<tr>
<td valign="top">
[% IF attachment.isobsolete %]
<strike><a href="attachment.cgi?id=[% attachment.attachid %]&action=view">[% attachment.description FILTER html %]</a></strike>
<strike><a href="attachment.cgi?id=[% attachment.attachid %]&amp;action=view">[% attachment.description FILTER html %]</a></strike>
[% ELSE %]
<a href="attachment.cgi?id=[% attachment.attachid %]&action=view">[% attachment.description FILTER html %]</a>
<a href="attachment.cgi?id=[% attachment.attachid %]&amp;action=view">[% attachment.description FILTER html %]</a>
[% END %]
</td>
@ -63,7 +63,7 @@
<td valign="top">
[% IF attachment.canedit %]
<a href="attachment.cgi?id=[% attachment.attachid %]&action=edit">Edit</a>
<a href="attachment.cgi?id=[% attachment.attachid %]&amp;action=edit">Edit</a>
[% ELSE %]
None
[% END %]
@ -73,10 +73,10 @@
<tr>
<td colspan="4">
<a href="attachment.cgi?bugid=[% bugid %]&action=enter">Create a New Attachment</a> (proposed patch, testcase, etc.)
<a href="attachment.cgi?bugid=[% bugid %]&amp;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>
<a href="attachment.cgi?bugid=[% bugid %]&amp;action=viewall">View All</a>
</td>
</tr>
</table>

Просмотреть файл

@ -63,7 +63,7 @@
<tr align="left">
<th colspan="[% splitheader ? 2 : 1 %]">
<a href="buglist.cgi?[% urlquerypart %]&order=bugs.bug_id">ID</a>
<a href="buglist.cgi?[% urlquerypart %]&amp;order=bugs.bug_id">ID</a>
</th>
[% IF splitheader %]
@ -96,7 +96,7 @@
[% BLOCK columnheader %]
<th colspan="[% splitheader ? 2 : 1 %]">
<a href="buglist.cgi?[% urlquerypart %]&order=
<a href="buglist.cgi?[% urlquerypart %]&amp;order=
[% column.name FILTER uri html %]
[% ",$order" FILTER uri html IF order %]">
[%- abbrev.$id.title || column.title -%]</a>

Просмотреть файл

@ -1,257 +0,0 @@
<!-- 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>&nbsp;</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>&nbsp;</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>&nbsp;</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 %]
&nbsp;&nbsp;&nbsp;&nbsp;
<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;">
&nbsp;&nbsp;&nbsp;&nbsp;
<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 %]

Просмотреть файл

@ -1,88 +0,0 @@
<!-- 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>
<!--
document.forms['f'].id.focus();
//-->
</script>
[% INCLUDE global/footer %]

Просмотреть файл

@ -1,73 +0,0 @@
<!-- 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 %]
</table>
[% IF caneditkeywords %]
<p>
<a href="editkeywords.cgi">Edit keywords</a>.
</p>
[% END %]
[% INCLUDE global/footer %]

Просмотреть файл

@ -82,15 +82,15 @@
Only email me reports of changes made by other people
<input type="checkbox" name="ExcludeSelf" value="on"
[% " checked" IF excludeself %]>
<br />
<br>
</td>
</tr>
</table>
<hr />
<b>Field/recipient specific options:</b>
<br />
<br />
<br>
<br>
<table width="100%" border="1">
@ -153,4 +153,4 @@
[% END %]
</table>
<br />
<br>

Просмотреть файл

@ -61,13 +61,13 @@
[% ELSE %]
<tr>
<td colspan="4">
<br />
<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 />
<br>
<br>
</td>
</tr>
[% END %]

Просмотреть файл

@ -1,858 +0,0 @@
<!-- 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&#8217;t match the regexp" } ] %]
<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&nbsp;comment" },
{ name => "bug_file_loc", description => "The&nbsp;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&#8217;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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<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 %] />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" value="Add another boolean chart"
name="cmd-add[% newchart %]-0-0" [% $jsmagic %] />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</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 %]

Просмотреть файл

@ -1,92 +0,0 @@
<!-- 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>" 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 %]
&nbsp;
[% END %]
</td>
<td>
[% IF change.added %]
[% change.added FILTER html %]
[% ELSE %]
&nbsp;
[% END %]
</td>
[% "</tr>" IF loop.index > 0 %]
[% END %]
</tr>
[% END %]
</table>
[% END %]

Просмотреть файл

@ -1,79 +0,0 @@
<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):
Contributor(s): Terry Weissman <terry@mozilla.org>
-->
<head>
<title>Bugzilla Voting</title>
</head>
<body>
<h1>Bugzilla Voting</h1>
<p>
Bugzilla has a "voting" feature. Each product allows users to have a
certain number of votes. (Some products may not allow any, which
means you can't vote on things in that product at all.) With your
vote, you indicate which bugs you think are the most important to be
fixed.
</p>
<p>
Depending on how the administrator has configured the relevant
product, you may be able to vote for the same bug more than one time.
But remember, you only have so many votes to use in total! So, you
can either vote a little for many bugs, or vote a lot for a few bugs.
</p>
<p>
To look at votes:
<ul>
<li> Go to the query page. Do a normal query, but enter 1 in the
"At least ___ votes" field. This will show you items that
match your query that have at least one vote.
</ul>
</p>
<p>
To vote for a bug:
<ul>
<li> Bring up the bug in question.
<li> Click on the "Vote for this bug" link that appears just above
the "Additional Comments" field. (If no such link appears,
then voting may not be allowed in this bug's product.)
<li> Indicate how many votes you want to give this bug. This page
also displays how many votes you've given to other bugs, so you
may rebalance your votes as necessary.
</ul>
You will automatically get email notifying you of any changes that
occur on bugs you vote for.
</p>
<p>
You may review your votes at any time by clicking on the "<a
href="votes.cgi?action=show_user">My Votes</a>" link in
the page footer.
</p>
</body>
</html>