зеркало из https://github.com/mozilla/pjs.git
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:
Родитель
f747112b8d
Коммит
ab1068ae37
|
@ -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><IMG SRC="http://www.foo.com/images/topics/topicfoos.gif"
|
||||
width="34" height="44" border="0" alt="News"></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 & 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&bug_status=ASSIGNED&bug_status=REOPENED&email1=%userid%&emailtype1=exact&emailassigned_to1=1&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&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> <tt>table</tt> , <tt>Table</tt>
|
||||
and <tt>TABLE</tt> 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 <tt><b>-</b><i>foo</i></tt> to exclude bugs
|
||||
with <tt><i>foo</i></tt> 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> <tt>url,location bar,field -focus</tt>
|
||||
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 <tt>+foo</tt> to search for bugs where the <b>summary</b> contains <tt>foo</tt> as a <b>substring</b>.<br>
|
||||
Use <tt>#foo</tt> to search for bugs where the <b>summary</b> contains the <b>word</b> <tt>foo</tt>
|
||||
<ul>
|
||||
<li> <tt>+brow</tt> does not find all bugs in the <tt>Browser</tt> product
|
||||
<li> <tt>#title</tt> does not find bugs bugs with <tt>titlebar</tt> or <tt>titled</tt>
|
||||
</ul>
|
||||
Phrases with special chars (space, comma, +, -, #, ...) can be <b>quoted</b>:
|
||||
<ul>
|
||||
<li> <tt>"lock icon"</tt>
|
||||
</ul>
|
||||
<p>
|
||||
<li> <b>Open vs. Resolved Bugs</b>:<br>
|
||||
By default, only open (i.e. unresolved) bugs are shown.
|
||||
Use <tt>+DUP</tt> as first word in your query
|
||||
to include duplicate bugs in your search,
|
||||
<tt>FIXED</tt> to search for fixed bugs only,
|
||||
or <tt>ALL</tt> 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> <tt>+DUP,FIXED table border</tt>
|
||||
<li> <tt>ALL mouse wheel</tt>
|
||||
</ul>
|
||||
<p>
|
||||
<li> <b>Focus the Search with Products & Components</b>:<br>
|
||||
To search for bugs in product "Foo Bar" only, add
|
||||
<tt>:foo</tt> or <tt>:bar</tt> 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> <tt>12345</tt>
|
||||
</ul>
|
||||
<li> A comma-separated list of bug numbers gives you a list of these bugs.
|
||||
<ul>
|
||||
<li> <tt>12345,23456,34567</tt>
|
||||
</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
|
||||
<tt>field1,...,fieldN:value1,...,valueM</tt> .
|
||||
|
@ -50,12 +55,13 @@ If only <tt>value1,...,valueM</tt> is given,
|
|||
the prefix (roughly) defaults to <tt>summary,keywords,product,component,statuswhiteboard:</tt> as noted above.
|
||||
You can use <tt>-<i>word</i></tt> to express the logical negation
|
||||
of <tt><i>word</i></tt>.
|
||||
</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> </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> </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">"Features"</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 %]&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 %]&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 %]&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 %]&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 %]&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 %]&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 %]&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> </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 %]
|
|
@ -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’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 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 %]
|
|
@ -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 %]
|
||||
|
||||
[% END %]
|
||||
</td>
|
||||
<td>
|
||||
[% IF change.added %]
|
||||
[% change.added FILTER html %]
|
||||
[% ELSE %]
|
||||
|
||||
[% 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>
|
Загрузка…
Ссылка в новой задаче