Commit af90c6f5 authored by Per Cederqvist's avatar Per Cederqvist
Browse files

Imported Bugzilla 2.2.

parent 56d649fe
......@@ -224,7 +224,11 @@ sub PasswordForLogin {
my ($login) = (@_);
SendSQL("select cryptpassword from profiles where login_name = " .
SqlQuote($login));
return FetchOneColumn();
my $result = FetchOneColumn();
if (!defined $result) {
$result = "";
}
return $result;
}
sub confirm_login {
......@@ -253,7 +257,6 @@ sub confirm_login {
exit;
}
my $realcryptpwd = PasswordForLogin($::FORM{"Bugzilla_login"});
my $enteredcryptpwd = crypt($enteredpwd, substr($realcryptpwd, 0, 2));
if (defined $::FORM{"PleaseMailAPassword"}) {
my $realpwd;
......@@ -264,6 +267,7 @@ sub confirm_login {
SqlQuote($enteredlogin));
$realpwd = FetchOneColumn();
}
my $urlbase = Param("urlbase");
my $template = "From: bugzilla-daemon
To: %s
Subject: Your bugzilla password.
......@@ -274,7 +278,7 @@ To use the wonders of bugzilla, you can use the following:
Password: %s
To change your password, go to:
[Param urlbase]changepassword.cgi
${urlbase}changepassword.cgi
(Your bugzilla and CVS password, if any, are not currently synchronized.
Top hackers are working around the clock to fix this, as you read this.)
......@@ -294,7 +298,8 @@ To use the wonders of bugzilla, you can use the following:
print "and enter your password in the form there.\n";
exit;
}
my $enteredcryptpwd = crypt($enteredpwd, substr($realcryptpwd, 0, 2));
if ($realcryptpwd eq "" || $enteredcryptpwd ne $realcryptpwd) {
print "Content-type: text/html\n\n";
print "<H1>Login failed.</H1>\n";
......@@ -332,6 +337,9 @@ To use the wonders of bugzilla, you can use the following:
$::COOKIE{"Bugzilla_logincookie"} .
" and profiles.userid = logincookies.userid");
$loginok = FetchOneColumn();
if (!defined $loginok) {
$loginok = 0;
}
}
if ($loginok ne "1") {
......
......@@ -10,6 +10,142 @@ query the CVS tree. For example,
will tell you what has been changed in the last week.
2/8/99 Added FreeBSD to the list of OS's. Feed this to MySQL:
alter table bugs change column op_sys op_sys enum("All", "Windows 3.1", "Windows 95", "Windows 98", "Windows NT", "Mac System 7", "Mac System 7.5", "Mac System 7.6.1", "Mac System 8.0", "Mac System 8.5", "AIX", "BSDI", "HP-UX", "IRIX", "Linux", "FreeBSD", "OSF/1", "Solaris", "SunOS", "OS/2", "other") not null;
2/4/99 Added a new column "description" to the components table, and added
links to a new page which will use this to describe the components of a
given product. Feed this to MySQL:
alter table components add column description mediumtext not null;
2/3/99 Added a new column "initialqacontact" to the components table that gives
an initial QA contact field. It may be empty if you wish the initial qa
contact to be empty. If you're not using the QA contact field, you don't need
to add this column, but you might as well be safe and add it anyway:
alter table components add column initialqacontact tinytext not null;
2/2/99 Added a new column "milestoneurl" to the products table that gives a URL
which is to describe the currently defined milestones for a product. If you
don't use target milestone, you might be able to get away without adding this
column, but you might as well be safe and add it anyway:
alter table products add column milestoneurl tinytext not null;
1/29/99 Whoops; had a mispelled op_sys. It was "Mac System 7.1.6"; it should
be "Mac System 7.6.1". It turns out I had no bugs with this value set, so I
could just do the below simple command. If you have bugs with this value, you
may need to do something more complicated.
alter table bugs change column op_sys op_sys enum("All", "Windows 3.1", "Windows 95", "Windows 98", "Windows NT", "Mac System 7", "Mac System 7.5", "Mac System 7.6.1", "Mac System 8.0", "Mac System 8.5", "AIX", "BSDI", "HP-UX", "IRIX", "Linux", "OSF/1", "Solaris", "SunOS", "OS/2", "other") not null;
1/20/99 Added new fields: Target Milestone, QA Contact, and Status Whiteboard.
These fields are all optional in the UI; there are parameters to turn them on.
However, whether or not you use them, the fields need to be in the DB. There
is some code that needs them, even if you don't.
To update your DB to have these fields, send the following to MySQL:
alter table bugs add column target_milestone varchar(20) not null,
add column qa_contact mediumint not null,
add column status_whiteboard mediumtext not null,
add index (target_milestone), add index (qa_contact);
1/18/99 You can now query by CC. To make this perform reasonably, the CC table
needs some indices. The following MySQL does the necessary stuff:
alter table cc add index (bug_id), add index (who);
1/15/99 The op_sys field can now be queried by (and more easily tweaked).
To make this perform reasonably, it needs an index. The following MySQL
command will create the necessary index:
alter table bugs add index (op_sys);
12/2/98 The op_sys and rep_platform fields have been tweaked. op_sys
is now an enum, rather than having the legal values all hard-coded in
perl. rep_platform now no longer allows a value of "X-Windows".
Here's how I ported to the new world. This ought to work for you too.
Actually, it's probably overkill. I had a lot of illegal values for op_sys
in my tables, from importing bugs from strange places. If you haven't done
anything funky, then much of the below will be a no-op.
First, send the following commands to MySQL to make sure all your values for
rep_platform and op_sys are legal in the new world..
update bugs set rep_platform="Sun" where rep_platform="X-Windows" and op_sys like "Solaris%";
update bugs set rep_platform="SGI" where rep_platform="X-Windows" and op_sys = "IRIX";
update bugs set rep_platform="SGI" where rep_platform="X-Windows" and op_sys = "HP-UX";
update bugs set rep_platform="DEC" where rep_platform="X-Windows" and op_sys = "OSF/1";
update bugs set rep_platform="PC" where rep_platform="X-Windows" and op_sys = "Linux";
update bugs set rep_platform="other" where rep_platform="X-Windows";
update bugs set rep_platform="other" where rep_platform="";
update bugs set op_sys="Mac System 7" where op_sys="System 7";
update bugs set op_sys="Mac System 7.5" where op_sys="System 7.5";
update bugs set op_sys="Mac System 8.0" where op_sys="8.0";
update bugs set op_sys="OSF/1" where op_sys="Digital Unix 4.0";
update bugs set op_sys="IRIX" where op_sys like "IRIX %";
update bugs set op_sys="HP-UX" where op_sys like "HP-UX %";
update bugs set op_sys="Windows NT" where op_sys like "NT %";
update bugs set op_sys="OSF/1" where op_sys like "OSF/1 %";
update bugs set op_sys="Solaris" where op_sys like "Solaris %";
update bugs set op_sys="SunOS" where op_sys like "SunOS%";
update bugs set op_sys="other" where op_sys = "Motif";
update bugs set op_sys="other" where op_sys = "Other";
Next, send the following commands to make sure you now have only legal
entries in your table. If either of the queries do not come up empty, then
you have to do more stuff like the above.
select bug_id,op_sys,rep_platform from bugs where rep_platform not regexp "^(All|DEC|HP|Macintosh|PC|SGI|Sun|X-Windows|Other)$";
select bug_id,op_sys,rep_platform from bugs where op_sys not regexp "^(All|Windows 3.1|Windows 95|Windows 98|Windows NT|Mac System 7|Mac System 7.5|Mac System 7.1.6|Mac System 8.0|AIX|BSDI|HP-UX|IRIX|Linux|OSF/1|Solaris|SunOS|other)$";
Finally, once that's all clear, alter the table to make enforce the new legal
entries:
alter table bugs change column op_sys op_sys enum("All", "Windows 3.1", "Windows 95", "Windows 98", "Windows NT", "Mac System 7", "Mac System 7.5", "Mac System 7.1.6", "Mac System 8.0", "AIX", "BSDI", "HP-UX", "IRIX", "Linux", "OSF/1", "Solaris", "SunOS", "other") not null, change column rep_platform rep_platform enum("All", "DEC", "HP", "Macintosh", "PC", "SGI", "Sun", "Other");
11/20/98 Added searching of CC field. To better support this, added
some indexes to the CC table. You probably want to execute the following
mysql commands:
alter table cc add index (bug_id);
alter table cc add index (who);
10/27/98 security check for legal products in place. bug charts are not
available as an option if collectstats.pl has never been run. all products
get daily stats collected now. README updated: Chart::Base is listed as
a requirement, instructions for using collectstats.pl included as
an optional step. also got silly and added optional quips to bug
reports.
10/17/98 modified README installation instructions slightly.
10/7/98 Added a new table called "products". Right now, this is used
only to have a description for each product, and that description is
only used when initially adding a new bug. Anyway, you *must* create
the new table (which you can do by running the new makeproducttable.sh
script). If you just leave it empty, things will work much as they
did before, or you can add descriptions for some or all of your
products.
9/15/98 Everything has been ported to Perl. NO MORE TCL. This
......
/1x1.gif/1.1/Sat Sep 19 06:08:00 1998/-kb/
/CGI.pl/1.2/Sat Sep 19 06:08:00 1998//
/CHANGES/1.4/Sat Sep 19 06:08:00 1998//
/README/1.7/Sat Sep 19 06:08:00 1998//
/ant.jpg/1.2/Sat Sep 19 06:08:02 1998/-kb/
/bug_form.pl/1.1/Sat Sep 19 06:08:02 1998//
/bug_status.html/1.1/Sat Sep 19 06:08:02 1998//
/buglist.cgi/1.8/Sat Sep 19 06:08:02 1998//
/changepassword.cgi/1.3/Sat Sep 19 06:08:03 1998//
/colchange.cgi/1.4/Sat Sep 19 06:08:03 1998//
/defparams.pl/1.3/Sat Sep 19 06:08:03 1998//
/doclosebug.cgi/1.1/Sat Sep 19 06:08:03 1998//
/doeditparams.cgi/1.2/Sat Sep 19 06:08:03 1998//
/edit_desc.cgi/1.1/Sat Sep 19 06:08:03 1998//
/editparams.cgi/1.4/Sat Sep 19 06:08:03 1998//
/enter_bug.cgi/1.6/Sat Sep 19 06:08:03 1998//
/globals.pl/1.6/Sat Sep 19 06:08:03 1998//
/help.html/1.1/Sat Sep 19 06:08:03 1998//
/how_to_mail.html/1.1/Sat Sep 19 06:08:03 1998//
/index.html/1.2/Sat Sep 19 06:08:03 1998//
/long_list.cgi/1.4/Sat Sep 19 06:08:04 1998//
/makeactivitytable.sh/1.1/Sat Sep 19 06:08:04 1998//
/makebugtable.sh/1.1/Sat Sep 19 06:08:04 1998//
/makecctable.sh/1.1/Sat Sep 19 06:08:04 1998//
/makecomponenttable.sh/1.9/Sat Sep 19 06:08:04 1998//
/makelogincookiestable.sh/1.1/Sat Sep 19 06:08:04 1998//
/makeprofilestable.sh/1.2/Sat Sep 19 06:08:04 1998//
/makeversiontable.sh/1.4/Sat Sep 19 06:08:04 1998//
/new_comment.cgi/1.2/Sat Sep 19 06:08:04 1998//
/newquip.html/1.2/Sat Sep 19 06:08:04 1998//
/post_bug.cgi/1.2/Sat Sep 19 06:08:04 1998//
/process_bug.cgi/1.6/Sat Sep 19 06:08:05 1998//
/processmail/1.9/Sat Sep 19 06:08:05 1998//
/query.cgi/1.8/Sat Sep 19 06:08:05 1998//
/relogin.cgi/1.3/Sat Sep 19 06:08:05 1998//
/sanitycheck.cgi/1.2/Sat Sep 19 06:08:05 1998//
/show_activity.cgi/1.2/Sat Sep 19 06:08:05 1998//
/show_bug.cgi/1.2/Sat Sep 19 06:08:05 1998//
/whineatnews.pl/1.1/Sat Sep 19 06:08:05 1998//
/1x1.gif/1.1/Wed Feb 10 22:11:47 1999/-kb/
/CGI.pl/1.6/Wed Feb 10 22:11:47 1999//
/CHANGES/1.16/Wed Feb 10 22:11:47 1999//
/README/1.12/Wed Feb 10 22:11:47 1999//
/ant.jpg/1.2/Wed Feb 10 22:11:47 1999/-kb/
/backdoor.cgi/1.6/Wed Feb 10 22:11:48 1999//
/bug_form.pl/1.8/Wed Feb 10 22:11:48 1999//
/bug_status.html/1.3/Wed Feb 10 22:11:48 1999//
/buglist.cgi/1.23/Wed Feb 10 22:11:48 1999//
/changepassword.cgi/1.6/Wed Feb 10 22:11:48 1999//
/colchange.cgi/1.7/Wed Feb 10 22:11:48 1999//
/collectstats.pl/1.3/Wed Feb 10 22:11:48 1999//
/defparams.pl/1.5/Wed Feb 10 22:11:48 1999//
/describecomponents.cgi/1.1/Wed Feb 10 22:11:48 1999//
/doeditowners.cgi/1.3/Wed Feb 10 22:11:48 1999//
/doeditparams.cgi/1.5/Wed Feb 10 22:11:48 1999//
/editowners.cgi/1.3/Wed Feb 10 22:11:48 1999//
/editparams.cgi/1.7/Wed Feb 10 22:11:48 1999//
/enter_bug.cgi/1.14/Wed Feb 10 22:11:48 1999//
/help.html/1.1/Wed Feb 10 22:11:48 1999//
/helpemailquery.html/1.1/Wed Feb 10 22:11:48 1999//
/how_to_mail.html/1.1/Wed Feb 10 22:11:49 1999//
/index.html/1.3/Wed Feb 10 22:11:49 1999//
/long_list.cgi/1.5/Wed Feb 10 22:11:49 1999//
/makeactivitytable.sh/1.1/Wed Feb 10 22:11:49 1999//
/makebugtable.sh/1.8/Wed Feb 10 22:11:49 1999//
/makecctable.sh/1.2/Wed Feb 10 22:11:49 1999//
/makecomponenttable.sh/1.38/Wed Feb 10 22:11:49 1999//
/makelogincookiestable.sh/1.1/Wed Feb 10 22:11:49 1999//
/makeproducttable.sh/1.8/Wed Feb 10 22:11:49 1999//
/makeprofilestable.sh/1.2/Wed Feb 10 22:11:49 1999//
/makeversiontable.sh/1.10/Wed Feb 10 22:11:49 1999//
/new_comment.cgi/1.2/Wed Feb 10 22:11:49 1999//
/newquip.html/1.2/Wed Feb 10 22:11:49 1999//
/notargetmilestone.html/1.1/Wed Feb 10 22:11:49 1999//
/post_bug.cgi/1.5/Wed Feb 10 22:11:49 1999//
/process_bug.cgi/1.13/Wed Feb 10 22:11:49 1999//
/processmail/1.11/Wed Feb 10 22:11:49 1999//
/query.cgi/1.23/Wed Feb 10 22:11:50 1999//
/relogin.cgi/1.5/Wed Feb 10 22:11:50 1999//
/reports.cgi/1.10/Wed Feb 10 22:11:50 1999//
/sanitycheck.cgi/1.4/Wed Feb 10 22:11:50 1999//
/show_activity.cgi/1.2/Wed Feb 10 22:11:50 1999//
/show_bug.cgi/1.5/Wed Feb 10 22:11:50 1999//
/whineatnews.pl/1.1/Wed Feb 10 22:11:50 1999//
/globals.pl/1.14/Wed Feb 10 22:11:51 1999//
D
......@@ -24,9 +24,12 @@ this document!)
First, you need some other things:
1) MySQL database server.
2) Perl5.004 or greater, including MySQL support and the Date::Format
package from CPAN.
2) Perl5.004 or greater, including MySQL support, and modules
Date::Format and Chart::Base available from your nearest
CPAN server. See http://www.perl.com/CPAN.
ftp://ftp.cpan.org/pub/CPAN/authors/id/GBARR/TimeDate-1.08.tar.gz
ftp://ftp.cpan.org/pub/CPAN/authors/id/DBONNER/Chart-0.99.tar.gz
ftp://ftp.cpan.org/pub/CPAN/authors/id/LDS/GD-1.18.tar.gz
3) Some kind of HTTP server so you could use CGI scripts
Earlier versions of Bugzilla required TCL. THIS IS NO LONGER TRUE.
......@@ -53,17 +56,20 @@ You have a freedom of choice here - Apache, Netscape or any other
server on UNIX would do. The only thing - to make configuration easier
you'd better run HTTP daemon on the same machine that you run MySQL
server on. Make sure that you can access 'bugs' database with user
id you're running the daemon with.
id you're running the daemon with.
globals.pl: $::db = Mysql->Connect("localhost", "bugs", "nobody", "")
2. TWEAKING THE TOOLS
In globals.pl, the database connect call uses a mysql account
name "bugs" (third argument to Mysql->Connect) to access the
bugs database. You may have to hack the code to use "nobody"
or whatever your HTTP server is running as.
Now you should have all necessary tools to be able to run Bugzilla
and see why the wouldn't work for you right now.
First of all you have to change "#!/usr/bonsaitools" to wherever
you've installed your binaries in all executable scripts in Bugzilla
directories.
2. Tweaking the Tools
All scripts look in /usr/bonsaitools/bin for perl. Make
the appropriate links or modify the paths in each script.
Make sure the directory containing the binaries is writable by the
web server. Bugzilla keeps some temporary files here.
......@@ -107,3 +113,31 @@ It's a good idea to set up a daily cronjob that does
This causes email that gets sent to anyone who has a NEW bug that
hasn't been touched for several days. For more info, see the
whinedays and whinemail parameters.
6. Modifying your running system
Bugzilla optimizes database lookups by storing all relatively static
information in the versioncache file, located in the data/
subdirectory under your installation directory (we said before it
needs to be writable, right?!)
If you make a change to the structural data in your database (the
versions table for example), or to the "constants" encoded in
defparams.pl, you will need to remove the cached content from the data
directory (by doing a "rm data/versioncache"), or your changes won't
show up!
That file gets automatically regenerated whenever it's more than an
hour old, so Bugzilla will eventually notice your changes by itself,
but generally you want it to notice right away, so that you can test
things.
7. Optional: Bug Graphs
Place collectstats.pl in your crontab once/day to take a snapshot
of the number of open, assigned and reopened bugs for every
product. The tool will create a data/mining directory and append
the count to a file named for the product. After at least two points
of data are available, you can view a graph from the Bug Reports page.
#!/usr/bonsaitools/bin/perl -w
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public License
# Version 1.0 (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>
# Provides a silly 'back-door' mechanism to let me automatically insert
# bugs from the netscape bugsystem. Other installations of Bugzilla probably
# don't need to worry about this file any.
use diagnostics;
use strict;
require "CGI.pl";
# Shut up misguided -w warnings about "used only once":
use vars %::versions;
ConnectToDatabase();
print "Content-type: text/plain\n\n";
# while (my ($key,$value) = each %ENV) {
# print "$key=$value\n";
# }
my $host = $ENV{'REMOTE_ADDR'};
SendSQL("select passwd from backdoor where host = '$host'");
my $passwd = FetchOneColumn();
if (!defined $passwd || !defined $::FORM{'passwd'} ||
$passwd ne crypt($::FORM{'passwd'}, substr($passwd, 0, 2))) {
print "Who are you?\n";
print "Env:\n";
while (my ($key,$value) = each %ENV) {
print "$key=$value\n";
}
print "\nForm:\n";
while (my ($key,$value) = each %::FORM) {
print "$key=$value\n";
}
exit;
}
my $prod = $::FORM{'product'};
my $comp = $::FORM{'component'};
my $version = $::FORM{'version'};
GetVersionTable();
sub Punt {
my ($label, $value) = (@_);
my $maintainer = Param("maintainer");
print "I don't know how to move into Bugzilla a bug with a $label of $value.
If you really do need to do this, speak to $maintainer and maybe he
can teach me.";
exit;
}
# Do remapping of things from BugSplat world to Bugzilla.
if ($prod eq "Communicator") {
$prod = "Mozilla";
$version = "other";
}
# Validate fields, and whine about things that we apparently couldn't remap
# into something legal.
if (!defined $::components{$prod}) {
Punt("product", $prod);
}
if (lsearch($::components{$prod}, $comp) < 0) {
Punt("component", $comp);
}
if (lsearch($::versions{$prod}, $version) < 0) {
$version = "other";
if (lsearch($::versions{$prod}, $version) < 0) {
Punt("version", $version);
}
}
$::FORM{'product'} = $prod;
$::FORM{'component'} = $comp;
$::FORM{'version'} = $version;
$::FORM{'long_desc'} =
"(This bug imported from BugSplat, Netscape's internal bugsystem. It
was known there as bug #$::FORM{'bug_id'}
http://scopus.netscape.com/bugsplat/show_bug.cgi?id=$::FORM{'bug_id'}
Imported into Bugzilla on " . time2str("%D %H:%M", time()) . ")
" . $::FORM{'long_desc'};
$::FORM{'reporter'} =
DBNameToIdAndCheck("$::FORM{'reporter'}\@netscape.com", 1);
$::FORM{'assigned_to'} =
DBNameToIdAndCheck("$::FORM{'assigned_to'}\@netscape.com", 1);
if ($::FORM{'qa_contact'} ne "") {
$::FORM{'qa_contact'} =
DBNameToIdAndCheck("$::FORM{'qa_contact'}\@netscape.com", 1);
} else {
$::FORM{'qa_contact'} = 0;
}
my @list = ('reporter', 'assigned_to', 'product', 'version', 'rep_platform',
'op_sys', 'bug_status', 'bug_severity', 'priority', 'component',
'short_desc', 'long_desc', 'creation_ts', 'delta_ts',
'bug_file_loc', 'qa_contact');
my @vallist;
foreach my $i (@list) {
push @vallist, SqlQuote($::FORM{$i});
}
my $query = "insert into bugs (" .
join(',', @list) .
") values (" .
join(',', @vallist) .
")";
SendSQL($query);
SendSQL("select LAST_INSERT_ID()");
my $zillaid = FetchOneColumn();
foreach my $cc (split(/,/, $::FORM{'cc'})) {
if ($cc ne "") {
my $cid = DBNameToIdAndCheck("$cc\@netscape.com", 1);
SendSQL("insert into cc (bug_id, who) values ($zillaid, $cid)");
}
}
print "Created bugzilla bug $zillaid\n";
system("./processmail $zillaid < /dev/null > /dev/null 2> /dev/null &");
......@@ -37,6 +37,9 @@ select
reporter,
bug_file_loc,
short_desc,
target_milestone,
qa_contact,
status_whiteboard,
date_format(creation_ts,'Y-m-d')
from bugs
where bug_id = $::FORM{'id'}";
......@@ -49,7 +52,8 @@ if (@row = FetchSQLData()) {
foreach my $field ("bug_id", "product", "version", "rep_platform",
"op_sys", "bug_status", "resolution", "priority",
"bug_severity", "component", "assigned_to", "reporter",
"bug_file_loc", "short_desc", "creation_ts") {
"bug_file_loc", "short_desc", "target_milestone",
"qa_contact", "status_whiteboard", "creation_ts") {
$bug{$field} = shift @row;
if (!defined $bug{$field}) {
$bug{$field} = "";
......@@ -118,8 +122,10 @@ print "
<TD><SELECT NAME=product>" .
make_options(\@::legal_product, $bug{'product'}) .
"</SELECT></TD>
<TD ALIGN=RIGHT><B>OS:</B></TD><TD>$bug{'op_sys'}</TD>
<TD ALIGN=RIGHT><B>Reporter:</B></TD><TD>$bug{'reporter'}</TD>
<TD ALIGN=RIGHT><B>OS:</B></TD>
<TD><SELECT NAME=op_sys>" .
make_options(\@::legal_opsys, $bug{'op_sys'}) .
"</SELECT><TD ALIGN=RIGHT><B>Reporter:</B></TD><TD>$bug{'reporter'}</TD>
</TR><TR>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.html\">Status:</A></B></TD>
<TD>$bug{'bug_status'}</TD>
......@@ -132,13 +138,52 @@ print "
<TD>$bug{'resolution'}</TD>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.html#severity\">Severity:</A></B></TD>
<TD><SELECT NAME=bug_severity>$sev_popup</SELECT></TD>
<TD ALIGN=RIGHT><B>Component:</B></TD>
<TD ALIGN=RIGHT><B><A HREF=\"describecomponents.cgi?product=" .
url_quote($bug{'product'}) . "\">Component:</A></B></TD>
<TD><SELECT NAME=component>$component_popup</SELECT></TD>
</TR><TR>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.html#assigned_to\">Assigned&nbsp;To:
</A></B></TD>
<TD>$bug{'assigned_to'}</TD>
</TR><TR>
<TD>$bug{'assigned_to'}</TD>";
if (Param("usetargetmilestone")) {
my $url = "";
if (defined $::milestoneurl{$bug{'product'}}) {
$url = $::milestoneurl{$bug{'product'}};
}
if ($url eq "") {
$url = "notargetmilestone.html";
}
if ($bug{'target_milestone'} eq "") {
$bug{'target_milestone'} = " ";
}
push(@::legal_target_milestone, " ");
print "
<TD ALIGN=RIGHT><A href=\"$url\"><B>Target Milestone:</B></A></TD>
<TD><SELECT NAME=target_milestone>" .
make_options(\@::legal_target_milestone,
$bug{'target_milestone'}) .
"</SELECT></TD>";
}
print "
</TR>";
if (Param("useqacontact")) {
my $name = $bug{'qa_contact'} > 0 ? DBID_to_name($bug{'qa_contact'}) : "";
print "
<TR>
<TD ALIGN=\"RIGHT\"><B>QA Contact:</B>
<TD COLSPAN=6>
<INPUT NAME=qa_contact VALUE=\"" .
value_quote($name) .
"\" SIZE=60></
</TR>";
}
print "
<TR>
<TD ALIGN=\"RIGHT\">$URL
<TD COLSPAN=6>
<INPUT NAME=bug_file_loc VALUE=\"$bug{'bug_file_loc'}\" SIZE=60></TD>
......@@ -148,7 +193,21 @@ print "
<INPUT NAME=short_desc VALUE=\"" .
value_quote($bug{'short_desc'}) .
"\" SIZE=60></TD>
</TR>
</TR>";
if (Param("usestatuswhiteboard")) {
print "
<TR>
<TD ALIGN=\"RIGHT\"><B>Status Whiteboard:</B>
<TD COLSPAN=6>
<INPUT NAME=status_whiteboard VALUE=\"" .
value_quote($bug{'status_whiteboard'}) .
"\" SIZE=60></
</TR>";
}
print "
</TABLE>
<br>
<B>Additional Comments:</B>
......@@ -237,3 +296,5 @@ print "
navigation_header();
print "</BODY>\n";
1;
......@@ -159,19 +159,34 @@ Most bugs should have area set to <B>CODE</B>. Legal values include:
<LI> l10n <i>(localization)</i>
</UL>