Compare commits

..

22 Commits

Author SHA1 Message Date
matty%chariot.net.au
b78e6d461e Remove DB taint mode as we're not doing that anymore.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@114039 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-08 15:56:33 +00:00
matty%chariot.net.au
ce454c602f Use general template handling code.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@114038 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-08 15:55:17 +00:00
matty%chariot.net.au
267d636c89 Some use-once error fixes.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@114036 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-08 15:44:59 +00:00
matty%chariot.net.au
e0014c1596 Merging branch to trunk. Attempting to not break anything.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@114027 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-08 14:42:57 +00:00
(no author)
8902c753f2 This commit was manufactured by cvs2svn to create branch 'CUST_RES_BRANCH'.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@113994 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-08 03:31:11 +00:00
matty%chariot.net.au
0f65b3a56f Fix typo in error message.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@113411 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-01 08:51:57 +00:00
matty%chariot.net.au
d982e79440 Whack licenses on templates. XHTML fixes.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@107959 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-13 15:26:17 +00:00
matty%chariot.net.au
357a2ad29f Style tweaks. Move to using NULL for no resolution as opposed to ID 0. Fix an apparently broken buglist.cgi when searching for no resolution.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@107958 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-13 15:10:15 +00:00
matty%chariot.net.au
57d69ee3e7 Fix creation of resolutions.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@107957 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-13 10:52:59 +00:00
justdave%syndicomm.com
683cdd4de9 fix perl path and flags
patch by MattyT


git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@106679 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-30 09:02:34 +00:00
jake%acutex.net
bec5bfcc85 More of MattyT's love: bug fixes, style tweaks, checks on changing restype, make moving work
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@106545 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-29 14:29:29 +00:00
jake%acutex.net
e5ed4f6307 add sortkeys, style fixes, minor tweaks
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@106178 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 17:38:43 +00:00
justdave%syndicomm.com
665e1eba65 Patch on behalf of MattyT: miscellaneous fixes
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@106164 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 10:34:29 +00:00
justdave%syndicomm.com
ef80035915 oops, missed a brace fixing a merge conflict
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@106163 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 10:26:43 +00:00
justdave%syndicomm.com
0fd14fe43a Merge with trunk. Minor conflicts with CGI.pl, buglist.cgi, and
globals.pl, resolved without much difficulty though (they were obvious
things)


git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@106160 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 09:36:00 +00:00
justdave%syndicomm.com
3d60c72346 Bringing in all patches to trunk since the branch was split off. No conflicts yet. (yay!)
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@105897 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-21 04:31:56 +00:00
justdave%syndicomm.com
135c23162e checking in for Matty: replacing bug_status.html with unhardcoded bug_status.cgi, and making all cgis pass tests
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@105885 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 18:08:52 +00:00
justdave%syndicomm.com
f150a1b542 Fixing a stupid typo (patch by MattyT)
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@105764 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 09:17:07 +00:00
jake%acutex.net
4819081b77 Really backing out this time.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@105635 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 18:14:26 +00:00
jake%acutex.net
8f7cc65c1d Backing out changes. This file is now identical on both the HEAD and CUST_RES_BRANCH.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@105634 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 18:11:18 +00:00
jake%acutex.net
28778bc828 Custom Resolutions
This branch is NOT PART OF BUILD.


git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@105633 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 17:57:58 +00:00
(no author)
343a813ccf This commit was manufactured by cvs2svn to create branch 'CUST_RES_BRANCH'.
git-svn-id: svn://10.0.0.236/branches/CUST_RES_BRANCH@105515 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-16 18:42:06 +00:00
260 changed files with 19933 additions and 24485 deletions

View File

@@ -29,6 +29,24 @@ use strict;
package Attachment;
# Use the template toolkit (http://www.template-toolkit.org/) to generate
# the user interface (HTML pages and mail messages) using templates in the
# "templates/" subdirectory.
use Template;
# This is the global template object that gets used one or more times by
# the script when it needs to process a template and return the results.
# Configuration parameters can be specified here that apply to all templates
# processed in this file.
my $template = Template->new(
{
# Colon-separated list of directories containing templates.
INCLUDE_PATH => 'template/custom:template/default' ,
# Allow templates to be specified with relative paths.
RELATIVE => 1
}
);
# This module requires that its caller have said "require CGI.pl" to import
# relevant functions from that script and its companion globals.pl.
@@ -36,28 +54,24 @@ package Attachment;
# Functions
############################################################################
sub query
sub list
{
# Retrieves and returns an array of attachment records for a given bug.
# This data should be given to attachment/list.atml in an
# "attachments" variable.
# Displays a table of attachments for a given bug along with links for
# viewing, editing, or making requests for each attachment.
my ($bugid) = @_;
my $in_editbugs = &::UserInGroup("editbugs");
# Retrieve a list of attachments for this bug and write them into an array
# of hashes in which each hash represents a single attachment.
&::SendSQL("
SELECT attach_id, creation_ts, mimetype, description, ispatch,
isobsolete, submitter_id
SELECT attach_id, creation_ts, mimetype, description, ispatch, isobsolete
FROM attachments WHERE bug_id = $bugid ORDER BY attach_id
");
my @attachments = ();
while (&::MoreSQLData()) {
my %a;
my $submitter_id;
($a{'attachid'}, $a{'date'}, $a{'contenttype'}, $a{'description'},
$a{'ispatch'}, $a{'isobsolete'}, $submitter_id) = &::FetchSQLData();
($a{'attachid'}, $a{'date'}, $a{'contenttype'}, $a{'description'}, $a{'ispatch'}, $a{'isobsolete'}) = &::FetchSQLData();
# Format the attachment's creation/modification date into a standard
# format (YYYY-MM-DD HH:MM)
@@ -82,16 +96,19 @@ sub query
$a{'statuses'} = \@statuses;
&::PopGlobalSQLState();
# We will display the edit link if the user can edit the attachment;
# ie the are the submitter, or they have canedit.
# Also show the link if the user is not logged in - in that cae,
# They'll be prompted later
$a{'canedit'} = ($::userid == 0 || $submitter_id == $::userid ||
$in_editbugs);
push @attachments, \%a;
}
return \@attachments;
}
1;
my $vars =
{
'bugid' => $bugid ,
'attachments' => \@attachments ,
'Param' => \&::Param , # for retrieving global parameters
'PerformSubsts' => \&::PerformSubsts # for processing global parameters
};
$template->process("attachment/list.atml", $vars)
|| &::DisplayError("Template process failed: " . $template->error())
&& exit;
}

View File

@@ -34,7 +34,7 @@ use CGI::Carp qw(fatalsToBrowser);
my %ok_field;
for my $key (qw (bug_id product version rep_platform op_sys bug_status
resolution priority bug_severity component assigned_to
resolution_id priority bug_severity component assigned_to
reporter bug_file_loc short_desc target_milestone
qa_contact status_whiteboard creation_ts groupset
delta_ts votes whoid usergroupset comment query error) ){
@@ -106,51 +106,25 @@ sub initBug {
if (!$usergroupset) { $usergroupset = '0' }
$self->{'usergroupset'} = $usergroupset;
# Check to see if we can see this bug
if (!&::CanSeeBug($bug_id, $user_id, $usergroupset)) {
# Permission denied to see bug
$self->{'bug_id'} = $old_bug_id;
$self->{'error'} = "PermissionDenied";
return $self;
}
my $query = "";
if ($::driver eq 'mysql') {
$query = "
my $query = "
select
bugs.bug_id, product, version, rep_platform, op_sys, bug_status,
resolution, priority, bug_severity, component, assigned_to, reporter,
resolution_id, priority, bug_severity, component, assigned_to, reporter,
bug_file_loc, short_desc, target_milestone, qa_contact,
status_whiteboard, date_format(creation_ts,'%Y-%m-%d %H:%i'),
groupset, delta_ts, sum(votes.count)
from bugs left join votes using(bug_id)
where bugs.bug_id = $bug_id
group by bugs.bug_id";
} elsif ($::driver eq 'Pg') {
$query = "
select
bugs.bug_id, product, version, rep_platform, op_sys, bug_status,
resolution, priority, bug_severity, component, assigned_to, reporter,
bug_file_loc, short_desc, target_milestone, qa_contact,
status_whiteboard, creation_ts,
groupset, delta_ts, sum(votes.count)
from bugs left join votes using(bug_id)
where bugs.bug_id = $bug_id
and (bugs.groupset & int8($usergroupset)) = bugs.groupset
group by bugs.bug_id, product, version, rep_platform, op_sys, bug_status,
resolution, priority, bug_severity, component, assigned_to, reporter,
bug_file_loc, short_desc, target_milestone, qa_contact, status_whiteboard,
creation_ts, groupset, delta_ts";
}
&::SendSQL($query);
&::SendSQL(&::SelectVisible($query, $user_id, $usergroupset));
my @row;
if (@row = &::FetchSQLData()) {
my $count = 0;
my %fields;
foreach my $field ("bug_id", "product", "version", "rep_platform",
"op_sys", "bug_status", "resolution", "priority",
"op_sys", "bug_status", "resolution_id", "priority",
"bug_severity", "component", "assigned_to", "reporter",
"bug_file_loc", "short_desc", "target_milestone",
"qa_contact", "status_whiteboard", "creation_ts",
@@ -274,10 +248,10 @@ sub emitXML {
$xml .= "<bug>\n";
foreach my $field ("bug_id", "bug_status", "product",
foreach my $field ("bug_id", "urlbase", "bug_status", "product",
"priority", "version", "rep_platform", "assigned_to", "delta_ts",
"component", "reporter", "target_milestone", "bug_severity",
"creation_ts", "qa_contact", "op_sys", "resolution", "bug_file_loc",
"creation_ts", "qa_contact", "op_sys", "resolution_id", "bug_file_loc",
"short_desc", "keywords", "status_whiteboard") {
if ($self->{$field}) {
$xml .= " <$field>" . QuoteXMLChars($self->{$field}) . "</$field>\n";
@@ -351,7 +325,7 @@ sub XML_Header {
my ($urlbase, $version, $maintainer, $exporter) = (@_);
my $xml;
$xml = "<?xml version=\"1.0\" standalone=\"yes\"?>\n";
$xml = "<?xml version=\"1.0\" standalone=\"no\"?>\n";
$xml .= "<!DOCTYPE bugzilla SYSTEM \"$urlbase";
if (! ($urlbase =~ /.+\/$/)) {
$xml .= "/";
@@ -379,7 +353,7 @@ sub UserInGroup {
return 0;
}
&::ConnectToDatabase();
&::SendSQL("select (group_bit & int8($self->{'usergroupset'})) != 0 from groups where name = "
&::SendSQL("select (bit & $self->{'usergroupset'}) != 0 from groups where name = "
. &::SqlQuote($groupname));
my $bit = &::FetchOneColumn();
if ($bit) {
@@ -463,18 +437,14 @@ sub Collision {
my $self = shift();
my $write = "WRITE"; # Might want to make a param to control
# whether we do LOW_PRIORITY ...
if ($::driver eq 'mysql') {
&::SendSQL("LOCK TABLES bugs $write, bugs_activity $write, cc $write, " .
"cc AS selectVisible_cc $write, " .
"profiles $write, dependencies $write, votes $write, " .
"keywords $write, longdescs $write, fielddefs $write, " .
"keyworddefs READ, groups READ, attachments READ, products READ");
}
&::SendSQL("LOCK TABLES bugs $write, bugs_activity $write, cc $write, " .
"cc AS selectVisible_cc $write, " .
"profiles $write, dependencies $write, votes $write, " .
"keywords $write, longdescs $write, fielddefs $write, " .
"keyworddefs READ, groups READ, attachments READ, products READ");
&::SendSQL("SELECT delta_ts FROM bugs where bug_id=$self->{'bug_id'}");
my $delta_ts = &::FetchOneColumn();
if ($::driver eq 'mysql') {
&::SendSQL("unlock tables");
}
&::SendSQL("unlock tables");
if ($self->{'delta_ts'} ne $delta_ts) {
return 1;
}

File diff suppressed because it is too large Load Diff

View File

@@ -30,82 +30,13 @@ use strict;
# Bundle the functions in this file together into the "Token" package.
package Token;
use Date::Format;
# This module requires that its caller have said "require CGI.pl" to import
# relevant functions from that script and its companion globals.pl.
################################################################################
# Constants
################################################################################
# The maximum number of days a token will remain valid.
my $maxtokenage = 3;
################################################################################
# Functions
################################################################################
sub IssueEmailChangeToken {
my ($userid, $old_email, $new_email) = @_;
my $token_ts = time();
my $issuedate = time2str("%Y-%m-%d %H:%M", $token_ts);
# Generate a unique token and insert it into the tokens table.
# We have to lock the tokens table before generating the token,
# since the database must be queried for token uniqueness.
&::SendSQL("LOCK TABLES tokens WRITE");
my $token = GenerateUniqueToken();
my $quotedtoken = &::SqlQuote($token);
my $quoted_emails = &::SqlQuote($old_email . ":" . $new_email);
&::SendSQL("INSERT INTO tokens ( userid , issuedate , token ,
tokentype , eventdata )
VALUES ( $userid , '$issuedate' , $quotedtoken ,
'emailold' , $quoted_emails )");
my $newtoken = GenerateUniqueToken();
$quotedtoken = &::SqlQuote($newtoken);
&::SendSQL("INSERT INTO tokens ( userid , issuedate , token ,
tokentype , eventdata )
VALUES ( $userid , '$issuedate' , $quotedtoken ,
'emailnew' , $quoted_emails )");
&::SendSQL("UNLOCK TABLES");
# Mail the user the token along with instructions for using it.
my $template = $::template;
my $vars = $::vars;
$vars->{'oldemailaddress'} = $old_email . &::Param('emailsuffix');
$vars->{'newemailaddress'} = $new_email . &::Param('emailsuffix');
$vars->{'max_token_age'} = $maxtokenage;
$vars->{'token_ts'} = $token_ts;
$vars->{'token'} = $token;
$vars->{'emailaddress'} = $old_email . &::Param('emailsuffix');
my $message;
$template->process("account/email/change-old.txt.tmpl", $vars, \$message)
|| &::ThrowTemplateError($template->error());
open SENDMAIL, "|/usr/lib/sendmail -t -i";
print SENDMAIL $message;
close SENDMAIL;
$vars->{'token'} = $newtoken;
$vars->{'emailaddress'} = $new_email . &::Param('emailsuffix');
$message = "";
$template->process("account/email/change-new.txt.tmpl", $vars, \$message)
|| &::ThrowTemplateError($template->error());
open SENDMAIL, "|/usr/lib/sendmail -t -i";
print SENDMAIL $message;
close SENDMAIL;
}
sub IssuePasswordToken {
# Generates a random token, adds it to the tokens table, and sends it
# to the user with instructions for using it to change their password.
@@ -117,51 +48,20 @@ sub IssuePasswordToken {
&::SendSQL("SELECT userid FROM profiles WHERE login_name = $quotedloginname");
my ($userid) = &::FetchSQLData();
my $token_ts = time();
my $issuedate = time2str("%Y-%m-%d %H:%M", $token_ts);
# Generate a unique token and insert it into the tokens table.
# We have to lock the tokens table before generating the token,
# since the database must be queried for token uniqueness.
&::SendSQL("LOCK TABLE tokens WRITE") if $::driver eq 'mysql';
&::SendSQL("LOCK TABLES tokens WRITE");
my $token = GenerateUniqueToken();
my $quotedtoken = &::SqlQuote($token);
my $quotedipaddr = &::SqlQuote($::ENV{'REMOTE_ADDR'});
&::SendSQL("INSERT INTO tokens ( userid , issuedate , token , tokentype , eventdata )
VALUES ( $userid , '$issuedate' , $quotedtoken , 'password' , $quotedipaddr )");
&::SendSQL("UNLOCK TABLES") if $::driver eq 'mysql';
VALUES ( $userid , NOW() , $quotedtoken , 'password' , $quotedipaddr )");
&::SendSQL("UNLOCK TABLES");
# Mail the user the token along with instructions for using it.
my $template = $::template;
my $vars = $::vars;
MailPasswordToken($loginname, $token);
$vars->{'token'} = $token;
$vars->{'emailaddress'} = $loginname . &::Param('emailsuffix');
$vars->{'max_token_age'} = $maxtokenage;
$vars->{'token_ts'} = $token_ts;
my $message = "";
$template->process("account/password/forgotten-password.txt.tmpl",
$vars, \$message)
|| &::ThrowTemplateError($template->error());
open SENDMAIL, "|/usr/lib/sendmail -t -i";
print SENDMAIL $message;
close SENDMAIL;
}
sub CleanTokenTable {
&::SendSQL("LOCK TABLES tokens WRITE") if $::driver eq 'mysql';
if ($::driver eq 'mysql') {
&::SendSQL("DELETE FROM tokens WHERE TO_DAYS(NOW()) - TO_DAYS(issuedate) >= " . $maxtokenage);
} elsif ($::driver eq 'Pg') {
&::SendSQL("DELETE FROM tokens WHERE now() - issuedate >= '$maxtokenage days'");
}
&::SendSQL("UNLOCK TABLES") if $::driver eq 'mysql';
}
@@ -191,6 +91,34 @@ sub GenerateUniqueToken {
}
sub MailPasswordToken {
# Emails a password token to a user along with instructions for its use.
# Called exclusively from &IssuePasswordToken.
my ($emailaddress, $token) = @_;
my $urlbase = &::Param("urlbase");
my $emailsuffix = &::Param('emailsuffix');
$token = &::url_quote($token);
open SENDMAIL, "|/usr/lib/sendmail -ti";
print SENDMAIL qq|From: bugzilla-daemon
To: $emailaddress$emailsuffix
Subject: Bugzilla Change Password Request
You or someone impersonating you has requested to change your Bugzilla
password. To change your password, visit the following link:
${urlbase}token.cgi?a=cfmpw&t=$token
If you are not the person who made this request, or you wish to cancel
this request, visit the following link:
${urlbase}token.cgi?a=cxlpw&t=$token
|;
close SENDMAIL;
}
sub Cancel {
# Cancels a previously issued token and notifies the system administrator.
@@ -215,59 +143,42 @@ sub Cancel {
# Format the user's real name and email address into a single string.
my $username = $realname ? $realname . " <" . $loginname . ">" : $loginname;
my $template = $::template;
my $vars = $::vars;
$vars->{'emailaddress'} = $username;
$vars->{'maintainer'} = $maintainer;
$vars->{'remoteaddress'} = $::ENV{'REMOTE_ADDR'};
$vars->{'token'} = $token;
$vars->{'tokentype'} = $tokentype;
$vars->{'issuedate'} = $issuedate;
$vars->{'eventdata'} = $eventdata;
$vars->{'cancelaction'} = $cancelaction;
# Notify the user via email about the cancellation.
open SENDMAIL, "|/usr/lib/sendmail -ti";
print SENDMAIL qq|From: bugzilla-daemon
To: $username
Subject: "$tokentype" token cancelled
my $message;
$template->process("account/cancel-token.txt.tmpl", $vars, \$message)
|| &::ThrowTemplateError($template->error());
A token was cancelled from $::ENV{'REMOTE_ADDR'}. This is either
an honest mistake or the result of a malicious hack attempt.
Take a look at the information below and forward this email
to $maintainer if you suspect foul play.
open SENDMAIL, "|/usr/lib/sendmail -t -i";
print SENDMAIL $message;
Token: $token
Token Type: $tokentype
User: $username
Issue Date: $issuedate
Event Data: $eventdata
Cancelled Because: $cancelaction
|;
close SENDMAIL;
# Delete the token from the database.
&::SendSQL("LOCK TABLE tokens WRITE") if $::driver eq 'mysql';
&::SendSQL("LOCK TABLES tokens WRITE");
&::SendSQL("DELETE FROM tokens WHERE token = $quotedtoken");
&::SendSQL("UNLOCK TABLES") if $::driver eq 'mysql';
&::SendSQL("UNLOCK TABLES");
}
sub HasPasswordToken {
# Returns a password token if the user has one.
# Returns a password token if the user has one. Otherwise returns 0 (false).
my ($userid) = @_;
&::SendSQL("SELECT token FROM tokens
WHERE userid = $userid AND tokentype = 'password' LIMIT 1");
&::SendSQL("SELECT token FROM tokens WHERE userid = $userid LIMIT 1");
my ($token) = &::FetchSQLData();
return $token;
}
sub HasEmailChangeToken {
# Returns an email change token if the user has one.
my ($userid) = @_;
&::SendSQL("SELECT token FROM tokens
WHERE userid = $userid
AND tokentype = 'emailnew'
OR tokentype = 'emailold' LIMIT 1");
my ($token) = &::FetchSQLData();
return $token;
}
1;

View File

@@ -0,0 +1,581 @@
#!/usr/bonsaitools/bin/perl -wT
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# 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 Terry Weissman.
# Portions created by Terry Weissman are
# Copyright (C) 2000 Terry Weissman. All
# Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
# Matthew Tuck <matty@chariot.net.au>
# Myk Melez <myk@mozilla.org>
# Make it harder for us to do dangerous things in Perl.
use diagnostics;
use strict;
use lib ".";
use vars qw(
$template
$vars
);
# Include the Bugzilla CGI and general utility library.
require "CGI.pl";
################################################################################
# Some constants callers might want to use
################################################################################
$::tryagain = 'Please press <b>Back</b> and try again.';
$::wentwrong = 'Something went wrong.';
################################################################################
# The following must be set up by the caller.
################################################################################
# What we're editing eg ('resolution', 'Resolution', 'resolutions').
($::valuetype, $::valuetypeicap, $::valuetypeplural) = ();
# What group you have to be in to edit these.
$::grouprestrict = undef;
# The name of the CGI calling the editor.
$::thiscgi = undef;
# The name of the table that stores what we're editing.
$::tablename = undef;
# The name of the table that has references to what we're editing.
# This currently doesn't support multiple references.
$::bugsreftablename = undef;
# The full field name of the field that has references to what we're editing,
# eg 'bugs.resolution_id'.
$::bugsreffieldref = undef;
# The maximum number of characters allowed in the name of what we're editing.
# Get this information from the schema.
$::maxnamesize = undef;
# Whether to use sortkeys.
$::usesortkeys = undef;
################################################################################
# The following may be changed by the caller.
################################################################################
# Whether we can delete this thing when it is referred to in the DB.
$::candeleterefsref = sub ($) { return 0; };
# If so, a subroutine to do it.
$::deleterefsref = sub ($) { die 'Shouldn\'t be here! (admineditor.pl/deleterefsref)'; };
# This allows us to add extra vars to the template, which is passed in as a hashref.
$::extravarsref = sub ($) {};
# "Rest" allows us to extend the code in this file to handle extra things, called
# "the rest".
# These check extra errors and warnings.
$::extraerrorsref = sub ($) {};
$::extrawarningsref = sub ($) { return (); };
# This takes the rest, and does anything necessary for use in SQL, eg
# SqlQuoting strings.
$::preparerestforsqlref = sub ($) {};
# This is the default rest.
%::defaultrest = ();
################################################################################
# Begin admin editor code
################################################################################
sub ValidateName ($) {
my ($fieldsref) = @_;
my $name = $::FORM{name};
my $id = $$fieldsref{id};
if (!defined($name)) {
ThatDoesntValidate("name");
exit;
}
$name = trim($name);
if ($name eq "") {
DisplayError("You must enter a non-blank name for the $::valuetype. $::tryagain");
exit;
}
if ($name =~ /[\s,]/) {
DisplayError("You may not use commas or whitespace in a $::valuetype name. $::tryagain");
exit;
}
if ($::maxnamesize < length($name)) {
DisplayError("Names can't have more than $::maxnamesize characters. $::tryagain");
exit;
}
my $sqlcondition;
my $sqlname = SqlQuote($name);
if (defined $id) {
$sqlcondition = "name = $sqlname AND id != $id";
}
else {
$sqlcondition = "name = $sqlname";
}
if (RecordExists($::tablename, $sqlcondition)) {
DisplayError("The $::valuetype $name already exists. $::tryagain");
exit;
}
$$fieldsref{name} = $name;
}
sub ValidateDesc ($) {
my ($fieldsref) = @_;
my $description = $::FORM{description};
if (!defined($description)) {
ThatDoesntValidate("description");
exit;
}
$description = trim($description);
if ($description eq "") {
DisplayError("You must enter a non-blank description of the $::valuetype. $::tryagain");
exit;
}
$$fieldsref{description} = $description;
}
sub ValidateID ($) {
my ($fieldsref) = @_;
$::FORM{id} = trim($::FORM{id});
if (detaint_natural($::FORM{id})) {
$$fieldsref{id} = $::FORM{id};
}
else {
ThatDoesntValidate("id");
exit;
}
}
sub ValidateIsActive ($) {
my ($fieldsref) = @_;
if (!defined $::FORM{isactive}) {
$$fieldsref{isactive} = 0;
}
elsif ($::FORM{isactive} eq "1") {
$$fieldsref{isactive} = 1;
}
else {
ThatDoesntValidate("isactive");
exit;
}
}
sub ValidateSortKey ($) {
my ($fieldsref) = @_;
$::FORM{sortkey} = trim($::FORM{sortkey});
if (detaint_natural($::FORM{sortkey})) {
$$fieldsref{sortkey} = $::FORM{sortkey};
}
else {
ThatDoesntValidate('sortkey');
exit;
}
}
sub CheckWarnings (%) {
my (%fields) = @_;
my @warnings = &$::extrawarningsref(%fields);
if (@warnings && !$::FORM{reallychange}) {
$vars->{warnings} = @warnings;
EmitTemplate("admin/$::valuetypeplural/warnings.atml");
exit;
}
}
sub EmitTemplate($) {
my ($templatename) = @_;
# Return the appropriate HTTP response headers.
print "Content-type: text/html\n\n";
# Generate and return the UI (HTML page) from the appropriate template.
$template->process($templatename, $vars)
|| DisplayError("Template process failed: " . $template->error())
&& exit;
}
sub ExtraFields() {
my %defaults = %::defaultrest;
return keys %defaults;
}
################################################################################
# Main Body Execution
################################################################################
sub AdminEditor() {
# Preliminary checks.
confirm_login();
unless (UserInGroup($::grouprestrict)) {
DisplayError("Sorry, you aren't a member of the $::grouprestrict group. " .
"And so, you aren't allowed to add, modify or delete $::valuetypeplural.",
"Not allowed");
exit;
}
$vars->{'thiscgi'} = $::thiscgi;
$vars->{'valuetype'} = $::valuetype;
$vars->{'valuetypeicap'} = $::valuetypeicap;
$vars->{'maxnamesize'} = $::maxnamesize;
$vars->{'usesortkeys'} = $::usesortkeys;
&$::extravarsref($vars);
# All calls to this script should contain an "action" variable whose value
# determines what the user wants to do. The code below checks the value of
# that variable and runs the appropriate code.
# Determine whether to use the action specified by the user or the default.
my $action = $::FORM{'action'} || 'list';
my %fields;
if ($action eq "list") {
ListScreen("");
}
elsif ($action eq "add") {
CreateScreen();
}
elsif ($action eq "new") {
ValidateName(\%fields);
ValidateDesc(\%fields);
ValidateSortKey(\%fields) if ($::usesortkeys);
&$::extraerrorsref(\%fields);
CheckWarnings(%fields);
InsertNew(%fields);
}
elsif ($action eq "edit") {
ValidateID(\%fields);
EditScreen(%fields);
}
elsif ($action eq "update") {
ValidateID(\%fields);
ValidateName(\%fields);
ValidateDesc(\%fields);
ValidateIsActive(\%fields);
ValidateSortKey(\%fields) if ($::usesortkeys);
&$::extraerrorsref(\%fields);
CheckWarnings(%fields);
UpdateExisting(%fields);
}
elsif ($action eq "delete") {
ValidateID(\%fields);
DeleteExisting(%fields);
}
else {
print "Content-type: text/html\n\n";
ThatDoesntValidate("action");
}
}
################################################################################
# The Actions
################################################################################
# Screen to present values to user to determine what to do.
# Next action would be CreateScreen, EditScreen or DeleteExisting.
sub ListScreen ($) {
my ($message) = (@_);
my $ordering = $::usesortkeys
? "$::tablename.sortkey, $::tablename.name"
: "$::tablename.name";
SendSQL("SELECT $::tablename.id, $::tablename.name, " .
"$::tablename.description, $::tablename.isactive, " .
"COUNT($::bugsreffieldref) " .
"FROM $::tablename LEFT JOIN $::bugsreftablename ON " .
"$::tablename.id = $::bugsreffieldref " .
"GROUP BY $::tablename.id " .
"ORDER BY $ordering");
my @values;
while (MoreSQLData()) {
my ($id, $name, $description, $isactive, $bugcount) =
FetchSQLData();
$bugcount ||= 0;
push( @values, { 'id' => $id, 'name' => $name, 'description' => $description,
'isactive' => $isactive, 'bugcount' => $bugcount } );
}
# Define the variables and functions that will be passed to the UI template.
$vars->{'values'} = \@values;
$vars->{'message'} = $message;
# Generate the template.
EmitTemplate("admin/$::valuetypeplural/list.atml");
}
# Screen to create a new value.
# Next action would be InsertNew.
sub CreateScreen() {
$vars->{name} = '';
$vars->{description} = '';
$vars->{sortkey} = 0;
# Defaults for the rest
%$vars = ( %$vars, %::defaultrest );
# Generate the template.
EmitTemplate("admin/$::valuetypeplural/create.atml");
}
# Add value entered on the creation screen.
sub InsertNew(%) {
my (%fields) = @_;
my $htmlname = html_quote($fields{name});
my $sqlname = SqlQuote($fields{name});
my $sqldescription = SqlQuote($fields{description});
# Pick an unused number. Be sure to recycle numbers that may have been
# deleted in the past. This code is potentially slow, but it happens
# rarely enough.
SendSQL("SELECT id FROM $::tablename ORDER BY id");
my $newid = 1;
while (MoreSQLData()) {
my $oldid = FetchOneColumn();
detaint_natural($oldid) || die "Failed to detaint next seqnum.";
if ($oldid > $newid) {
last;
}
$newid = $oldid + 1;
}
# Do proper conversion for inclusion in SQL
$fields{id} = $newid;
$fields{name} = $sqlname;
$fields{description} = SqlQuote($fields{description});
&$::preparerestforsqlref(\%fields);
# Add the new record.
my $fieldnames = join(', ', keys(%fields));
my $fieldvalues = join(', ', values(%fields));
SendSQL("INSERT INTO $::tablename ($fieldnames) VALUES ($fieldvalues)");
# Make versioncache flush
unlink "data/versioncache";
# Display list with message.
ListScreen( "$::valuetypeicap $htmlname added." );
}
# Screen to edit existing value.
# Next action would be UpdateExisting.
sub EditScreen (%) {
my (%fields) = @_;
my $id = $fields{id};
my %defaults = %::defaultrest;
my @fieldnames = ('name', 'description', 'isactive', keys %defaults);
@fieldnames = (@fieldnames, 'sortkey') if ($::usesortkeys);
my $fieldnames = join(', ', @fieldnames);
# get data of record
SendSQL("SELECT $fieldnames FROM $::tablename WHERE id = $id");
if (!MoreSQLData()) {
DisplayError("$::wentwrong I can't find the $::valuetype ID $id.");
exit;
}
my @data = FetchSQLData();
my $bugcount = GetCount( $::bugsreftablename, "$::bugsreffieldref = $id" );
# Define the variables and functions that will be passed to the UI template.
$vars->{'id'} = $id;
$vars->{'bugcount'} = $bugcount;
foreach my $fieldname (@fieldnames) {
my $datum = shift @data;
$vars->{$fieldname} = $datum;
}
# Generate the template.
EmitTemplate("admin/$::valuetypeplural/edit.atml");
}
# Update the value edited on the edit screen.
sub UpdateExisting (%) {
my (%fields) = @_;
my $id = $fields{id};
my $htmlname = html_quote($fields{name});
my $sqlname = SqlQuote($fields{name});
# Do proper conversion for inclusion in SQL
delete $fields{id};
$fields{name} = $sqlname;
$fields{description} = SqlQuote($fields{description});
&$::preparerestforsqlref(\%fields);
# Generate the SET SQL
my $assignments = GenerateUpdateSQL(%fields);
# Send the SQL
SendSQL("UPDATE $::tablename SET $assignments WHERE id = $id");
# Make versioncache flush
unlink "data/versioncache";
# Display list with message.
ListScreen( "$::valuetypeicap $htmlname updated." );
}
# Delete the value selected on the list screen.
sub DeleteExisting (%) {
my (%fields) = @_;
my $id = $fields{id};
SendSQL("SELECT name FROM $::tablename WHERE id = $id");
if (!MoreSQLData()) {
DisplayError("$::wentwrong That $::valuetype does not exist!");
exit;
}
my $name = FetchOneColumn();
my $htmlname = html_quote($name);
my $bugcount = GetCount($::bugsreftablename, "$::bugsreffieldref = $id");
if (!$::FORM{reallydelete} or !(&$::candeleterefsref($id))) {
if (0 < $bugcount) {
if (&$::candeleterefsref($id)) {
$vars->{id} = $id;
$vars->{name} = $name;
$vars->{bugcount} = $bugcount;
EmitTemplate("admin/$::valuetypeplural/confirmdelete.atml");
exit;
}
else {
DisplayError("There are $bugcount bug(s) which have " .
"the $::valuetype $htmlname. You " .
"can't delete the $::valuetype while " .
"it is on one or more bugs.");
exit;
}
}
}
if ($bugcount > 0) {
&$::deleterefsref($id);
}
SendSQL("DELETE FROM $::tablename WHERE id = $id");
# Make versioncache flush
unlink "data/versioncache";
# Display list with message.
ListScreen( "$::valuetypeicap $htmlname deleted." );
}
1;

View File

@@ -31,17 +31,41 @@ use strict;
use lib qw(.);
use vars qw(
$template
$vars
);
# Include the Bugzilla CGI and general utility library.
require "CGI.pl";
# Establish a connection to the database backend.
ConnectToDatabase();
# Use the template toolkit (http://www.template-toolkit.org/) to generate
# the user interface (HTML pages and mail messages) using templates in the
# "template/" subdirectory.
use Template;
# Create the global template object that processes templates and specify
# configuration parameters that apply to all templates processed in this script.
my $template = Template->new(
{
# Colon-separated list of directories containing templates.
INCLUDE_PATH => "template/custom:template/default" ,
# Allow templates to be specified with relative paths.
RELATIVE => 1
}
);
# Define the global variables and functions that will be passed to the UI
# template. Individual functions add their own values to this hash before
# sending them to the templates they process.
my $vars =
{
# Function for retrieving global parameters.
'Param' => \&Param ,
# Function for processing global parameters that contain references
# to other global parameters.
'PerformSubsts' => \&PerformSubsts
};
# Check whether or not the user is logged in and, if so, set the $::userid
# and $::usergroupset variables.
quietly_check_login();
@@ -77,7 +101,6 @@ elsif ($action eq "insert")
{
confirm_login();
ValidateBugID($::FORM{'bugid'});
ValidateComment($::FORM{'comment'});
validateFilename();
validateData();
validateDescription();
@@ -88,17 +111,16 @@ elsif ($action eq "insert")
}
elsif ($action eq "edit")
{
quietly_check_login();
validateID();
validateCanEdit($::FORM{'id'});
edit();
}
elsif ($action eq "update")
{
confirm_login();
ValidateComment($::FORM{'comment'});
UserInGroup("editbugs")
|| DisplayError("You are not authorized to edit attachments.")
&& exit;
validateID();
validateCanEdit($::FORM{'id'});
validateDescription();
validateIsPatch();
validateContentType() unless $::FORM{'ispatch'};
@@ -137,28 +159,6 @@ sub validateID
ValidateBugID($bugid);
}
sub validateCanEdit
{
my ($attach_id) = (@_);
# If the user is not logged in, claim that they can edit. This allows
# the edit scrren to be displayed to people who aren't logged in.
# People not logged in can't actually commit changes, because that code
# calls confirm_login, not quietly_check_login, before calling this sub
return if $::userid == 0;
# People in editbugs can edit all attachments
return if UserInGroup("editbugs");
# Bug 97729 - the submitter can edit their attachments
SendSQL("SELECT attach_id FROM attachments WHERE " .
"attach_id = $attach_id AND submitter_id = $::userid");
FetchSQLData()
|| DisplayError("You are not authorised to edit attachment #$attach_id")
&& exit;
}
sub validateDescription
{
$::FORM{'description'}
@@ -302,6 +302,15 @@ sub validateFilename
sub validateObsolete
{
# When a user creates an attachment, they can request that one or more
# existing attachments be made obsolete. This function makes sure they
# are authorized to make changes to attachments and that the IDs of the
# attachments they selected for obsoletion are all valid.
UserInGroup("editbugs")
|| DisplayError("You must be authorized to make changes to attachments
to make attachments obsolete when creating a new attachment.")
&& exit;
# Make sure the attachment id is valid and the user has permissions to view
# the bug to which it is attached.
foreach my $attachid (@{$::MFORM{'obsolete'}}) {
@@ -320,6 +329,9 @@ sub validateObsolete
my ($bugid, $isobsolete, $description) = FetchSQLData();
# Make sure the user is authorized to access this attachment's bug.
ValidateBugID($bugid);
if ($bugid != $::FORM{'bugid'})
{
$description = html_quote($description);
@@ -335,9 +347,6 @@ sub validateObsolete
DisplayError("Attachment #$attachid ($description) is already obsolete.");
exit;
}
# Check that the user can modify this attachment
validateCanEdit($attachid);
}
}
@@ -416,8 +425,9 @@ sub viewall
print "Content-Type: text/html\n\n";
# Generate and return the UI (HTML page) from the appropriate template.
$template->process("attachment/show-multiple.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
$template->process("attachment/viewall.atml", $vars)
|| DisplayError("Template process failed: " . $template->error())
&& exit;
}
@@ -425,16 +435,12 @@ sub enter
{
# Display a form for entering a new attachment.
# Retrieve the attachments the user can edit from the database and write
# them into an array of hashes where each hash represents one attachment.
my $canEdit = "";
if (!UserInGroup("editbugs")) {
$canEdit = "AND submitter_id = $::userid";
}
# Retrieve the attachments from the database and write them into an array
# of hashes where each hash represents one attachment.
SendSQL("SELECT attach_id, description
FROM attachments
WHERE bug_id = $::FORM{'bugid'}
AND isobsolete = 0 $canEdit
AND isobsolete = 0
ORDER BY attach_id");
my @attachments; # the attachments array
while ( MoreSQLData() ) {
@@ -458,8 +464,9 @@ sub enter
print "Content-Type: text/html\n\n";
# Generate and return the UI (HTML page) from the appropriate template.
$template->process("attachment/create.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
$template->process("attachment/enter.atml", $vars)
|| DisplayError("Template process failed: " . $template->error())
&& exit;
}
@@ -525,17 +532,17 @@ sub insert
print "Content-Type: text/html\n\n";
# Generate and return the UI (HTML page) from the appropriate template.
$template->process("attachment/created.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
$template->process("attachment/created.atml", $vars)
|| DisplayError("Template process failed: " . $template->error())
&& exit;
}
sub edit
{
# Edit an attachment record. Users with "editbugs" privileges, (or the
# original attachment's submitter) can edit the attachment's description,
# content type, ispatch and isobsolete flags, and statuses, and they can
# also submit a comment that appears in the bug.
# Edit an attachment record. Users with "editbugs" privileges can edit the
# attachment's description, content type, ispatch and isobsolete flags, and
# statuses, and they can also submit a comment that appears in the bug.
# Users cannot edit the content of the attachment itself.
# Retrieve the attachment from the database.
@@ -600,12 +607,13 @@ sub edit
print "Content-Type: text/html\n\n";
# Generate and return the UI (HTML page) from the appropriate template.
$template->process("attachment/edit.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
$template->process("attachment/edit.atml", $vars)
|| DisplayError("Template process failed: " . $template->error())
&& exit;
}
sub update
sub update
{
# Update an attachment record.
@@ -616,10 +624,8 @@ sub update
&& exit;
# Lock database tables in preparation for updating the attachment.
if ($::driver eq 'mysql') {
SendSQL("LOCK TABLES attachments WRITE , attachstatuses WRITE ,
attachstatusdefs READ , fielddefs READ , bugs_activity WRITE");
}
SendSQL("LOCK TABLES attachments WRITE , attachstatuses WRITE ,
attachstatusdefs READ , fielddefs READ , bugs_activity WRITE");
# Get a copy of the attachment record before we make changes
# so we can record those changes in the activity table.
@@ -710,9 +716,7 @@ sub update
}
# Unlock all database tables now that we are finished updating the database.
if ($::driver eq 'mysql') {
SendSQL("UNLOCK TABLES");
}
SendSQL("UNLOCK TABLES");
# If this installation has enabled the request manager, let the manager know
# an attachment was updated so it can check for requests on that attachment
@@ -787,6 +791,8 @@ sub update
print "Content-Type: text/html\n\n";
# Generate and return the UI (HTML page) from the appropriate template.
$template->process("attachment/updated.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
$template->process("attachment/updated.atml", $vars)
|| DisplayError("Template process failed: " . $template->error())
&& exit;
}

View File

@@ -0,0 +1,79 @@
<html> <head>
<title>The "boolean chart" section of the query page</title>
</head>
<body>
<h1>The "boolean chart" section of the query page</h1>
("Boolean chart" is a terrible term; anyone got a better one I can use
instead?)
<p>
The Bugzilla query page is designed to be reasonably easy to use.
But, with such ease of use always comes some lack of power. The
"boolean chart" section is designed to let you do very powerful
queries, but it's not the easiest thing to learn (or explain).
<p>
So.
<p>
The boolean chart starts with a single "term". A term is a
combination of two pulldown menus and a text field.
You choose items from the menus, specifying "what kind of thing
am I searching for" and "what kind of matching do I want", and type in
a value on the text field, specifying "what should it match".
<p>
The real fun starts when you click on the "Or" or "And" buttons. If
you bonk on the "Or" button, then you get a second term to the right
of the first one. You can then configure that term, and the result of
the query will be anything that matches either of the terms.
<p>
Or, you can bonk the "And" button, and get a new term below the
original one, and now the result of the query will be anything that
matches both of the terms.
<p>
And you can keep clicking "And" and "Or", and get a page with tons of
terms. "Or" has higher precedence than "And". (In other words, you
can think of each line of "Or" stuff as having parenthesis around it.)
<p>
The most subtle thing is this "Add another boolean chart" button.
This is almost the same thing as the "And" button. The difference is
if you use one of the fields where several items can be associated
with a single bug. This includes "Comments", "CC", and all the
"changed [something]" entries. Now, if you have multiple terms that
all talk about one of these fields, it's ambiguous whether they are
allowed to be talking about different instances of that field. So,
to let you have it both ways, they always mean the same instance,
unless the terms appear on different charts.
<p>
For example: if you search for "priority changed to P5" and
"priority changed by person@addr", it will only find bugs where the
given person at some time changed the priority to P5. However, if
what you really want is to find all bugs where the milestone was
changed at some time by the person, and someone (possibly someone
else) at some time changed the milestone to P5, then you would put
the two terms in two different charts.
<p>
Clear as mud? Please, I beg you, rewrite this document to make
everything crystal clear, and send the improved version to <a
href="mailto:tara@tequilarista.org">Tara</a>.
<hr>
<!-- hhmts start -->
Last modified: Wed Aug 16 16:06:36 2000
<!-- hhmts end -->
</body> </html>

View File

@@ -28,351 +28,622 @@ use RelationSet;
# Use the Attachment module to display attachments for the bug.
use Attachment;
sub show_bug {
# Shut up misguided -w warnings about "used only once". For some reason,
# "use vars" chokes on me when I try it here.
sub bug_form_pl_sillyness {
my $zz;
$zz = %::FORM;
$zz = %::proddesc;
$zz = %::prodmaxvotes;
$zz = @::enterable_products;
$zz = @::settable_resolution;
$zz = $::unconfirmedstate;
$zz = $::milestoneurl;
$zz = $::template;
$zz = $::vars;
$zz = @::legal_priority;
$zz = @::legal_platform;
$zz = @::legal_severity;
$zz = @::legal_bug_status;
$zz = @::target_milestone;
$zz = @::components;
$zz = @::legal_keywords;
$zz = @::versions;
$zz = @::legal_opsys;
# Shut up misguided -w warnings about "used only once". For some reason,
# "use vars" chokes on me when I try it here.
sub bug_form_pl_sillyness {
my $zz;
$zz = %::FORM;
$zz = %::components;
$zz = %::proddesc;
$zz = %::prodmaxvotes;
$zz = %::versions;
$zz = @::legal_keywords;
$zz = @::legal_opsys;
$zz = @::legal_platform;
$zz = @::legal_priority;
$zz = @::settable_normal_resolution;
$zz = @::settable_dupe_resolution;
$zz = @::settable_moved_resolution;
$zz = @::legal_severity;
$zz = %::target_milestone;
}
my $loginok = quietly_check_login();
my $id = $::FORM{'id'};
my $query = "
select
bugs.bug_id,
product,
version,
rep_platform,
op_sys,
bug_status,
resolution_id,
priority,
bug_severity,
component,
assigned_to,
reporter,
bug_file_loc,
short_desc,
target_milestone,
qa_contact,
status_whiteboard,
date_format(creation_ts,'%Y-%m-%d %H:%i'),
groupset,
delta_ts,
sum(votes.count)
from bugs left join votes using(bug_id)
where bugs.bug_id = $id
group by bugs.bug_id";
SendSQL($query);
my %bug;
my @row;
@row = FetchSQLData();
my $count = 0;
foreach my $field ("bug_id", "product", "version", "rep_platform",
"op_sys", "bug_status", "resolution_id", "priority",
"bug_severity", "component", "assigned_to", "reporter",
"bug_file_loc", "short_desc", "target_milestone",
"qa_contact", "status_whiteboard", "creation_ts",
"groupset", "delta_ts", "votes") {
$bug{$field} = shift @row;
if (!defined $bug{$field}) {
$bug{$field} = "";
}
$count++;
}
# Use templates
my $template = $::template;
my $vars = $::vars;
$vars->{'GetBugLink'} = \&GetBugLink;
$vars->{'quoteUrls'} = \&quoteUrls,
$vars->{'lsearch'} = \&lsearch,
$vars->{'header_done'} = (@_),
$bug{'resolution'} = ResolutionIDToName($bug{'resolution_id'});
quietly_check_login();
my $assignedtoid = $bug{'assigned_to'};
my $reporterid = $bug{'reporter'};
my $qacontactid = $bug{'qa_contact'};
my $id = $::FORM{'id'};
if (!defined($id)) {
$template->process("bug/choose.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
exit;
$bug{'assigned_to_email'} = DBID_to_name($assignedtoid);
$bug{'assigned_to'} = DBID_to_real_or_loginname($bug{'assigned_to'});
$bug{'reporter'} = DBID_to_real_or_loginname($bug{'reporter'});
print qq{<FORM NAME="changeform" METHOD="POST" ACTION="process_bug.cgi">\n};
# foreach my $i (sort(keys(%bug))) {
# my $q = value_quote($bug{$i});
# print qq{<INPUT TYPE="HIDDEN" NAME="orig-$i" VALUE="$q">\n};
# }
$bug{'long_desc'} = GetLongDescriptionAsHTML($id);
my $longdesclength = length($bug{'long_desc'});
GetVersionTable();
#
# These should be read from the database ...
#
my $platform_popup = make_options(\@::legal_platform, $bug{'rep_platform'});
my $priority_popup = make_options(\@::legal_priority, $bug{'priority'});
my $sev_popup = make_options(\@::legal_severity, $bug{'bug_severity'});
my $component_popup = make_options($::components{$bug{'product'}},
$bug{'component'});
my $ccSet = new RelationSet;
$ccSet->mergeFromDB("select who from cc where bug_id=$id");
my @ccList = $ccSet->toArrayOfStrings();
my $cc_element = "<INPUT TYPE=HIDDEN NAME=cc VALUE=\"\">";
if (scalar(@ccList) > 0) {
$cc_element = "<SELECT NAME=cc MULTIPLE SIZE=5>\n";
foreach my $ccName ( @ccList ) {
$cc_element .= "<OPTION VALUE=\"$ccName\">$ccName\n";
}
$cc_element .= "</SELECT><BR>\n" .
"<INPUT TYPE=CHECKBOX NAME=removecc>Remove selected CCs<br>\n";
}
my $URL = value_quote($bug{'bug_file_loc'});
if (defined $URL && $URL ne "none" && $URL ne "NULL" && $URL ne "") {
$URL = "<B><A HREF=\"$URL\">URL:</A></B>";
} else {
$URL = "<B>URL:</B>";
}
#
# Make a list of products the user has access to
#
my (@prodlist, $product_popup);
foreach my $p (sort(keys %::versions)) {
if ($p eq $bug{'product'}) {
# if it's the product the bug is already in, it's ALWAYS in
# the popup, period, whether the user can see it or not, and
# regardless of the disallownew setting.
push(@prodlist, $p);
next;
}
my %user = %{$vars->{'user'}};
my %bug;
# Populate the bug hash with the info we get directly from the DB.
my $query = "
SELECT
bugs.bug_id,
product,
version,
rep_platform,
op_sys,
bug_status,
resolution,
priority,
bug_severity,
component,
assigned_to,
reporter,
bug_file_loc,
short_desc,
target_milestone,
qa_contact,
status_whiteboard, ";
if ($::driver eq 'mysql') {
$query .= "
date_format(creation_ts, '%Y-%m-%d %H:%i'),
groupset,
delta_ts, ";
} elsif ($::driver eq 'Pg') {
$query .= "
TO_CHAR(creation_ts, 'YYYY-MM-DD HH24:MI:SS'),
groupset,
TO_CHAR(delta_ts, 'YYYYMMDDHH24MISS'), ";
if (defined $::proddesc{$p} && $::proddesc{$p} eq '0') {
# Special hack. If we stuffed a "0" into proddesc, that means
# that disallownew was set for this bug, and so we don't want
# to allow people to specify that product here.
next;
}
$query .= "
SUM(votes.count)
FROM
bugs LEFT JOIN votes USING(bug_id)
WHERE
bugs.bug_id = $id
GROUP BY
bugs.bug_id,
product,
version,
rep_platform,
op_sys,
bug_status,
resolution,
priority,
bug_severity,
component,
assigned_to,
reporter,
bug_file_loc,
short_desc,
target_milestone,
qa_contact,
status_whiteboard,
creation_ts,
groupset,
delta_ts ";
SendSQL($query);
my $value;
my @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", "target_milestone",
"qa_contact", "status_whiteboard", "creation_ts",
"groupset", "delta_ts", "votes")
if(Param("usebuggroupsentry")
&& GroupExists($p)
&& !UserInGroup($p))
{
$value = shift(@row);
$bug{$field} = defined($value) ? $value : "";
# If we're using bug groups to restrict entry on products, and
# this product has a bug group, and the user is not in that
# group, we don't want to include that product in this list.
next;
}
push(@prodlist, $p);
}
# General arrays of info about the database state
GetVersionTable();
# If the user has access to multiple products, display a popup, otherwise
# display the current product.
# Fiddle the product list.
my $seen_curr_prod;
my @prodlist;
foreach my $product (@::enterable_products) {
if ($product eq $bug{'product'}) {
# if it's the product the bug is already in, it's ALWAYS in
# the popup, period, whether the user can see it or not, and
# regardless of the disallownew setting.
$seen_curr_prod = 1;
push(@prodlist, $product);
next;
}
if (1 < @prodlist) {
$product_popup = "<SELECT NAME=product>" .
make_options(\@prodlist, $bug{'product'}) .
"</SELECT>";
}
else {
$product_popup = $bug{'product'} .
"<INPUT TYPE=\"HIDDEN\" NAME=\"product\" VALUE=\"$bug{'product'}\">";
}
if (Param("usebuggroupsentry")
&& GroupExists($product)
&& !UserInGroup($product))
{
# If we're using bug groups to restrict entry on products, and
# this product has a bug group, and the user is not in that
# group, we don't want to include that product in this list.
next;
}
print "
<INPUT TYPE=HIDDEN NAME=\"delta_ts\" VALUE=\"$bug{'delta_ts'}\">
<INPUT TYPE=HIDDEN NAME=\"longdesclength\" VALUE=\"$longdesclength\">
<INPUT TYPE=HIDDEN NAME=\"id\" VALUE=$id>
<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0><TR>
<TD ALIGN=RIGHT><B>Bug#:</B></TD><TD><A HREF=\"" . Param('urlbase') . "show_bug.cgi?id=$bug{'bug_id'}\">$bug{'bug_id'}</A></TD>
<TD>&nbsp;</TD>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.cgi#rep_platform\">Platform:</A></B></TD>
<TD><SELECT NAME=rep_platform>$platform_popup</SELECT></TD>
<TD>&nbsp;</TD>
<TD ALIGN=RIGHT><B>Reporter:</B></TD><TD>$bug{'reporter'}</TD>
</TR><TR>
<TD ALIGN=RIGHT><B>Product:</B></TD>
<TD>$product_popup</TD>
<TD>&nbsp;</TD>
<TD ALIGN=RIGHT><B>OS:</B></TD>
<TD><SELECT NAME=op_sys>" .
make_options(\@::legal_opsys, $bug{'op_sys'}) .
"</SELECT></TD>
<TD>&nbsp;</TD>
<TD ALIGN=RIGHT NOWRAP><b>Add CC:</b></TD>
<TD><INPUT NAME=newcc SIZE=30 VALUE=\"\"></TD>
</TR><TR>
<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>
<TD>&nbsp;</TD>
<TD ALIGN=RIGHT><B>Version:</B></TD>
<TD><SELECT NAME=version>" .
make_options($::versions{$bug{'product'}}, $bug{'version'}) .
"</SELECT></TD>
<TD>&nbsp;</TD>
<TD ROWSPAN=4 ALIGN=RIGHT VALIGN=TOP><B>CC:</B></TD>
<TD ROWSPAN=4 VALIGN=TOP> $cc_element </TD>
</TR><TR>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.cgi\">Status:</A></B></TD>
<TD>$bug{'bug_status'}</TD>
<TD>&nbsp;</TD>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.cgi#priority\">Priority:</A></B></TD>
<TD><SELECT NAME=priority>$priority_popup</SELECT></TD>
<TD>&nbsp;</TD>
</TR><TR>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.cgi\">Resolution:</A></B></TD>
<TD>$bug{'resolution'}</TD>
<TD>&nbsp;</TD>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.cgi#severity\">Severity:</A></B></TD>
<TD><SELECT NAME=bug_severity>$sev_popup</SELECT></TD>
<TD>&nbsp;</TD>
</TR><TR>
<TD ALIGN=RIGHT><B><A HREF=\"bug_status.cgi#assigned_to\">Assigned&nbsp;To:
</A></B></TD>
<TD>$bug{'assigned_to'}</TD>
<TD>&nbsp;</TD>";
push(@prodlist, $product);
if (Param("usetargetmilestone")) {
my $url = "";
if (defined $::milestoneurl{$bug{'product'}}) {
$url = $::milestoneurl{$bug{'product'}};
}
# The current product is part of the popup, even if new bugs are no longer
# allowed for that product
if (!$seen_curr_prod) {
push (@prodlist, $bug{'product'});
@prodlist = sort @prodlist;
if ($url eq "") {
$url = "notargetmilestone.html";
}
if ($bug{'target_milestone'} eq "") {
$bug{'target_milestone'} = " ";
}
print "
<TD ALIGN=RIGHT><A href=\"$url\"><B>Target Milestone:</B></A></TD>
<TD><SELECT NAME=target_milestone>" .
make_options($::target_milestone{$bug{'product'}},
$bug{'target_milestone'}) .
"</SELECT></TD>
<TD>&nbsp;</TD>";
} else { print "<TD></TD><TD></TD><TD>&nbsp;</TD>"; }
$vars->{'product'} = \@prodlist;
$vars->{'rep_platform'} = \@::legal_platform;
$vars->{'priority'} = \@::legal_priority;
$vars->{'bug_severity'} = \@::legal_severity;
$vars->{'op_sys'} = \@::legal_opsys;
$vars->{'bug_status'} = \@::legal_bug_status;
print "
</TR>";
# Hack - this array contains "" for some reason. See bug 106589.
shift @::settable_resolution;
$vars->{'resolution'} = \@::settable_resolution;
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=7>
<INPUT NAME=qa_contact VALUE=\"" .
value_quote($name) .
"\" SIZE=60></TD>
</TR>";
}
$vars->{'component_'} = $::components{$bug{'product'}};
$vars->{'version'} = $::versions{$bug{'product'}};
$vars->{'target_milestone'} = $::target_milestone{$bug{'product'}};
$bug{'milestoneurl'} = $::milestoneurl{$bug{'product'}} ||
"notargetmilestone.html";
$vars->{'use_votes'} = $::prodmaxvotes{$bug{'product'}};
print "
<TR>
<TD ALIGN=\"RIGHT\">$URL
<TD COLSPAN=7>
<INPUT NAME=bug_file_loc VALUE=\"" . value_quote($bug{'bug_file_loc'}) . "\" SIZE=60></TD>
</TR><TR>
<TD ALIGN=\"RIGHT\"><B>Summary:</B>
<TD COLSPAN=7>
<INPUT NAME=short_desc VALUE=\"" .
value_quote($bug{'short_desc'}) .
"\" SIZE=60></TD>
</TR>";
# Add additional, calculated fields to the bug hash
if (@::legal_keywords) {
$vars->{'use_keywords'} = 1;
if (Param("usestatuswhiteboard")) {
print "
<TR>
<TD ALIGN=\"RIGHT\"><B>Status Whiteboard:</B>
<TD COLSPAN=7>
<INPUT NAME=status_whiteboard VALUE=\"" .
value_quote($bug{'status_whiteboard'}) .
"\" SIZE=60></TD>
</TR>";
}
SendSQL("SELECT keyworddefs.name
FROM keyworddefs, keywords
WHERE keywords.bug_id = $id
AND keyworddefs.id = keywords.keywordid
ORDER BY keyworddefs.name");
my @keywords;
while (MoreSQLData()) {
push(@keywords, FetchOneColumn());
}
$bug{'keywords'} = \@keywords;
}
# Attachments
$bug{'attachments'} = Attachment::query($id);
# Dependencies
if (@::legal_keywords) {
SendSQL("SELECT keyworddefs.name
FROM keyworddefs, keywords
WHERE keywords.bug_id = $id AND keyworddefs.id = keywords.keywordid
ORDER BY keyworddefs.name");
my @list;
SendSQL("SELECT dependson FROM dependencies WHERE
blocked = $id ORDER BY dependson");
while (MoreSQLData()) {
my ($i) = FetchSQLData();
push(@list, FetchOneColumn());
}
my $value = value_quote(join(', ', @list));
print qq{
<TR>
<TD ALIGN=right><B><A HREF="describekeywords.cgi">Keywords:</A></B>
<TD COLSPAN=7><INPUT NAME="keywords" VALUE="$value" SIZE=60></TD>
</TR>
};
}
print "</TABLE>\n";
# Display attachments for this bug (if any).
&Attachment::list($id);
sub EmitDependList {
my ($desc, $myfield, $targetfield) = (@_);
print "<th align=right>$desc:</th><td>";
my @list;
SendSQL("select $targetfield from dependencies where
$myfield = $id order by $targetfield");
while (MoreSQLData()) {
my ($i) = (FetchSQLData());
push(@list, $i);
print GetBugLink($i, $i);
print " ";
}
print "</td><td><input name=$targetfield value=\"" .
join(',', @list) . "\"></td>\n";
}
$bug{'dependson'} = \@list;
if (Param("usedependencies")) {
print "<table><tr>\n";
EmitDependList("Bug $id depends on", "blocked", "dependson");
print qq{
<td rowspan=2><a href="showdependencytree.cgi?id=$id">Show dependency tree</a>
};
if (Param("webdotbase") ne "") {
print qq{
<br><a href="showdependencygraph.cgi?id=$id">Show dependency graph</a>
};
}
print "</td></tr><tr>";
EmitDependList("Bug $id blocks", "dependson", "blocked");
print "</tr></table>\n";
}
my @list2;
SendSQL("SELECT blocked FROM dependencies WHERE
dependson = $id ORDER BY blocked");
if ($::prodmaxvotes{$bug{'product'}}) {
print qq{
<table><tr>
<th><a href="votehelp.html">Votes:</a></th>
<td>
$bug{'votes'}&nbsp;&nbsp;&nbsp;
<a href="showvotes.cgi?bug_id=$id">Show votes for this bug</a>&nbsp;&nbsp;&nbsp;
<a href="showvotes.cgi?voteon=$id">Vote for this bug</a>
</td>
</tr></table>
};
}
print "
<br>
<B>Additional Comments:</B>
<BR>
<TEXTAREA WRAP=HARD NAME=comment ROWS=10 COLS=80></TEXTAREA><BR>";
if ($::usergroupset ne '0' || $bug{'groupset'} ne '0') {
SendSQL("select bit, name, description, (bit & $bug{'groupset'} != 0), " .
"(bit & $::usergroupset != 0) from groups where isbuggroup != 0 " .
# Include active groups as well as inactive groups to which
# the bug already belongs. This way the bug can be removed
# from an inactive group but can only be added to active ones.
"and ((isactive = 1 and (bit & $::usergroupset != 0)) or " .
"(bit & $bug{'groupset'} != 0)) " .
"order by description");
# We only print out a header bit for this section if there are any
# results.
my $groupFound = 0;
my $inAllGroups = 1;
while (MoreSQLData()) {
my ($i) = FetchSQLData();
push(@list2, $i);
my ($bit, $name, $description, $ison, $ingroup) = (FetchSQLData());
# For product groups, we only want to display the checkbox if either
# (1) The bit is already set, or
# (2) The user is in the group, but either:
# (a) The group is a product group for the current product, or
# (b) The group name isn't a product name
# This measns that all product groups will be skipped, but non-product
# bug groups will still be displayed.
if($ison || ($ingroup && (($name eq $bug{'product'}) ||
(!defined $::proddesc{$name})))) {
if(!$groupFound) {
print "<br><b>Only users in the selected groups can view this bug:</b><br>\n";
print "<font size=\"-1\">(Unchecking all boxes makes this a public bug.)</font><br><br>\n";
$groupFound = 1;
}
if(!$ingroup) {
$inAllGroups = 0;
}
# Modifying this to use checkboxes instead
my $checked = $ison ? " CHECKED" : "";
my $disabled = $ingroup ? "" : " DISABLED=\"disabled\"";
# indent these a bit
print "&nbsp;&nbsp;&nbsp;&nbsp;";
print "<input type=checkbox name=\"bit-$bit\" value=1$checked$disabled>\n";
print "$description<br>\n";
}
}
if (!$inAllGroups) {
print "<b>Only members of a group can change the visibility of a bug for that group</b><br>";
}
$bug{'blocked'} = \@list2;
# If the bug is restricted to a group, display checkboxes that allow
# the user to set whether or not the reporter, assignee, QA contact,
# and cc list can see the bug even if they are not members of all
# groups to which the bug is restricted.
if ( $bug{'groupset'} != 0 ) {
# Determine whether or not the bug is always accessible by the reporter,
# QA contact, and/or users on the cc: list.
SendSQL("SELECT reporter_accessible , assignee_accessible ,
qacontact_accessible , cclist_accessible
FROM bugs
WHERE bug_id = $id
");
my ($reporter_accessible, $assignee_accessible, $qacontact_accessible, $cclist_accessible) = FetchSQLData();
# Groups
my @groups;
if ($::usergroupset ne '0' || $bug{'groupset'} ne '0') {
my $bug_groupset = $bug{'groupset'};
if ($::driver eq 'mysql') {
SendSQL("select bit, name, description, (bit & $bug{'groupset'} != 0), " .
"(bit & $::usergroupset != 0) from groups where isbuggroup != 0 " .
# Include active groups as well as inactive groups to which
# the bug already belongs. This way the bug can be removed
# from an inactive group but can only be added to active ones.
"and ((isactive = 1 or (bit & $bug{'groupset'} != 0)) or " .
"(bit & $bug{'groupset'} != 0)) " .
"order by description");
} elsif ($::driver eq 'Pg') {
SendSQL("select group_bit, name, description, (group_bit & int8($bug{'groupset'}) != 0), " .
"(group_bit & int8($::usergroupset) != 0) from groups where isbuggroup != 0 " .
# Include active groups as well as inactive groups to which
# the bug already belongs. This way the bug can be removed
# from an inactive group but can only be added to active ones.
"and ((isactive = 1 or (group_bit & int8($bug{'groupset'}) != 0)) or " .
"(group_bit & int8($bug{'groupset'}) != 0)) " .
"order by description");
}
# Convert boolean data about which roles always have access to the bug
# into "checked" attributes for the HTML checkboxes by which users
# set and change these values.
my $reporter_checked = $reporter_accessible ? " checked" : "";
my $assignee_checked = $assignee_accessible ? " checked" : "";
my $qacontact_checked = $qacontact_accessible ? " checked" : "";
my $cclist_checked = $cclist_accessible ? " checked" : "";
$user{'inallgroups'} = 1;
# Display interface for changing the values.
print qq|
<p>
<b>But users in the roles selected below can always view this bug:</b><br>
<small>(Does not take effect unless the bug is restricted to at least one group.)</small>
</p>
while (MoreSQLData()) {
my ($bit, $name, $description, $ison, $ingroup) = FetchSQLData();
# For product groups, we only want to display the checkbox if either
# (1) The bit is already set, or
# (2) The user is in the group, but either:
# (a) The group is a product group for the current product, or
# (b) The group name isn't a product name
# This means that all product groups will be skipped, but
# non-product bug groups will still be displayed.
if($ison ||
($ingroup && (($name eq $bug{'product'}) ||
(!defined $::proddesc{$name}))))
{
$user{'inallgroups'} &= $ingroup;
<p>
<input type="checkbox" name="reporter_accessible" value="1" $reporter_checked>Reporter
<input type="checkbox" name="assignee_accessible" value="1" $assignee_checked>Assignee
<input type="checkbox" name="qacontact_accessible" value="1" $qacontact_checked>QA Contact
<input type="checkbox" name="cclist_accessible" value="1" $cclist_checked>CC List
</p>
|;
}
}
push (@groups, { "bit" => $bit,
"ison" => $ison,
"ingroup" => $ingroup,
"description" => $description });
print "<br>
<INPUT TYPE=radio NAME=knob VALUE=none CHECKED>
Leave as <b>$bug{'bug_status'} $bug{'resolution'}</b><br>";
# knum is which knob number we're generating, in javascript terms.
my $knum = 1;
my $status = $bug{'bug_status'};
# In the below, if the person hasn't logged in ($::userid == 0), then
# we treat them as if they can do anything. That's because we don't
# know why they haven't logged in; it may just be because they don't
# use cookies. Display everything as if they have all the permissions
# in the world; their permissions will get checked when they log in
# and actually try to make the change.
my $canedit = UserInGroup("editbugs") || ($::userid == 0);
my $canconfirm;
if ($status eq $::unconfirmedstate) {
$canconfirm = UserInGroup("canconfirm") || ($::userid == 0);
if ($canedit || $canconfirm) {
print "<INPUT TYPE=radio NAME=knob VALUE=confirm>";
print "Confirm bug (change status to <b>NEW</b>)<br>";
$knum++;
}
}
my $movers = Param("movers");
$movers =~ s/\s?,\s?/|/g;
$movers =~ s/@/\@/g;
if ($canedit || $::userid == $assignedtoid ||
$::userid == $reporterid || $::userid == $qacontactid) {
if (IsOpenedState($status)) {
if ($status ne "ASSIGNED") {
print "<INPUT TYPE=radio NAME=knob VALUE=accept>";
my $extra = "";
if ($status eq $::unconfirmedstate && ($canconfirm || $canedit)) {
$extra = "confirm bug, ";
}
print "Accept bug (${extra}change status to <b>ASSIGNED</b>)<br>";
$knum++;
}
if ($bug{'resolution'} ne "") {
print "<INPUT TYPE=radio NAME=knob VALUE=clearresolution>\n";
print "Clear the resolution (remove the current resolution of\n";
print "<b>$bug{'resolution'}</b>)<br>\n";
$knum++;
}
my $resolution_popup = make_options(\@::settable_normal_resolution,
$bug{'resolution'});
print "<INPUT TYPE=radio NAME=knob VALUE=resolve>
Resolve bug, changing <A HREF=\"bug_status.cgi\">resolution</A> to
<SELECT NAME=resolution
ONCHANGE=\"document.changeform.knob\[$knum\].checked=true\">
$resolution_popup</SELECT><br>\n";
$knum++;
print "<INPUT TYPE=radio NAME=knob VALUE=duplicate>
Resolve bug, mark it as ";
if (@::settable_dupe_resolution == 1) {
print $::settable_dupe_resolution[0] . " ";
} else {
my $resolution_popup = make_options(\@::settable_dupe_resolution);
print "<select name=\"dupe_resolution\" onchange=\"if (this.value != '') {document.changeform.knob\[$knum\].checked=true}\">" .
"$resolution_popup</select>";
}
# If the bug is restricted to a group, display checkboxes that allow
# the user to set whether or not the reporter
# and cc list can see the bug even if they are not members of all
# groups to which the bug is restricted.
if ($bug{'groupset'} != 0) {
$bug{'inagroup'} = 1;
print "of bug #
<INPUT NAME=dup_id SIZE=6 ONCHANGE=\"if (this.value != '') {document.changeform.knob\[$knum\].checked=true}\"><br>\n";
$knum++;
# Determine whether or not the bug is always accessible by the
# reporter, QA contact, and/or users on the cc: list.
SendSQL("SELECT reporter_accessible, cclist_accessible
FROM bugs
WHERE bug_id = $id
");
($bug{'reporter_accessible'},
$bug{'cclist_accessible'}) = FetchSQLData();
my $assign_element = "<INPUT NAME=\"assigned_to\" SIZE=32 ONCHANGE=\"if ((this.value != ".SqlQuote($bug{'assigned_to_email'}) .") && (this.value != '')) { document.changeform.knob\[$knum\].checked=true; }\" VALUE=\"$bug{'assigned_to_email'}\">";
print "<INPUT TYPE=radio NAME=knob VALUE=reassign>
<A HREF=\"bug_status.cgi#assigned_to\">Reassign</A> bug to
$assign_element
<br>\n";
if ($status eq $::unconfirmedstate && ($canconfirm || $canedit)) {
print "&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE=checkbox NAME=andconfirm> and confirm bug (change status to <b>NEW</b>)<BR>";
}
$knum++;
print "<INPUT TYPE=radio NAME=knob VALUE=reassignbycomponent>
Reassign bug to owner ";
if (Param("useqacontact")) { print "and QA contact "; }
print "of selected component<br>\n";
if ($status eq $::unconfirmedstate && ($canconfirm || $canedit)) {
print "&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE=checkbox NAME=compconfirm> and confirm bug (change status to <b>NEW</b>)<BR>";
}
$knum++;
} elsif ( Param("move-enabled") && lsearch(\@::settable_moved_resolution, $bug{'resolution'}) != -1) {
if ( (defined $::COOKIE{"Bugzilla_login"})
&& ($::COOKIE{"Bugzilla_login"} =~ /($movers)/) ){
print "<INPUT TYPE=radio NAME=knob VALUE=reopen> Reopen bug<br>\n";
$knum++;
if ($status eq "RESOLVED") {
print "<INPUT TYPE=radio NAME=knob VALUE=verify>
Mark bug as <b>VERIFIED</b><br>\n";
$knum++;
}
if ($status ne "CLOSED") {
print "<INPUT TYPE=radio NAME=knob VALUE=close>
Mark bug as <b>CLOSED</b><br>\n";
$knum++;
}
}
} else {
print "<INPUT TYPE=radio NAME=knob VALUE=reopen> Reopen bug<br>\n";
$knum++;
if ($status eq "RESOLVED") {
print "<INPUT TYPE=radio NAME=knob VALUE=verify>
Mark bug as <b>VERIFIED</b><br>\n";
$knum++;
}
if ($status ne "CLOSED") {
print "<INPUT TYPE=radio NAME=knob VALUE=close>
Mark bug as <b>CLOSED</b><br>\n";
$knum++;
}
}
$vars->{'groups'} = \@groups;
my $movers = Param("movers");
$user{'canmove'} = Param("move-enabled")
&& (defined $::COOKIE{"Bugzilla_login"})
&& ($::COOKIE{"Bugzilla_login"} =~ /\Q$movers\E/);
# User permissions
# In the below, if the person hasn't logged in ($::userid == 0), then
# we treat them as if they can do anything. That's because we don't
# know why they haven't logged in; it may just be because they don't
# use cookies. Display everything as if they have all the permissions
# in the world; their permissions will get checked when they log in
# and actually try to make the change.
$user{'canedit'} = $::userid == 0
|| $::userid == $bug{'reporter'}
|| $::userid == $bug{'qa_contact'}
|| $::userid == $bug{'assigned_to'}
|| UserInGroup("editbugs");
$user{'canconfirm'} = ($::userid == 0) || UserInGroup("canconfirm");
# Bug states
$bug{'isunconfirmed'} = ($bug{'bug_status'} eq $::unconfirmedstate);
$bug{'isopened'} = IsOpenedState($bug{'bug_status'});
# People involved with the bug
$bug{'assigned_to_email'} = DBID_to_name($bug{'assigned_to'});
$bug{'assigned_to'} = DBID_to_real_or_loginname($bug{'assigned_to'});
$bug{'reporter'} = DBID_to_real_or_loginname($bug{'reporter'});
$bug{'qa_contact'} = $bug{'qa_contact'} > 0 ?
DBID_to_name($bug{'qa_contact'}) : "";
my $ccset = new RelationSet;
$ccset->mergeFromDB("SELECT who FROM cc WHERE bug_id=$id");
my @cc = $ccset->toArrayOfStrings();
$bug{'cc'} = \@cc if $cc[0];
# Next bug in list (if there is one)
my @bug_list;
if ($::COOKIE{"BUGLIST"} && $id)
{
@bug_list = split(/:/, $::COOKIE{"BUGLIST"});
}
$vars->{'bug_list'} = \@bug_list;
$bug{'comments'} = GetComments($bug{'bug_id'});
# This is length in number of comments
$bug{'longdesclength'} = scalar(@{$bug{'comments'}});
# Add the bug and user hashes to the variables
$vars->{'bug'} = \%bug;
$vars->{'user'} = \%user;
# Generate and return the UI (HTML page) from the appropriate template.
$template->process("bug/edit.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
}
print "
<INPUT TYPE=\"submit\" VALUE=\"Commit\">
<INPUT TYPE=\"reset\" VALUE=\"Reset\">
<INPUT TYPE=\"hidden\" name=\"form_name\" VALUE=\"process_bug\">
<P>
<FONT size=\"+1\"><B>
<A HREF=\"show_activity.cgi?id=$id\">View Bug Activity</A>
&nbsp; | &nbsp;
<A HREF=\"long_list.cgi?buglist=$id\">Format For Printing</A>
</B></FONT>
";
if ( Param("move-enabled") && (defined $::COOKIE{"Bugzilla_login"}) && ($::COOKIE{"Bugzilla_login"} =~ /($movers)/) ){
print qq{&nbsp; <font size="+1"><B> | </B></font> &nbsp;
<input type="submit" name="action" value="} .
Param("move-button-text") . qq{">\n};
if (@::settable_moved_resolution == 1) {
print qq{<input type="hidden" name="move_resolution" value="$::settable_moved_resolution[0]">};
}
else {
my $resolution_popup = make_options(\@::settable_moved_resolution);
print qq{Resolution: <select name="move_resolution">$resolution_popup</select>};
}
}
print "<BR></FORM>";
print qq|
<table><tr><td align=left><B><a name="c0" href="#c0">Description:</a></B></td>
<td align=right width=100%>Opened: $bug{'creation_ts'}</td></tr></table>
<HR>
|;
print $bug{'long_desc'};
print "
<HR>\n";
# To add back option of editing the long description, insert after the above
# long_list.cgi line:
# <A HREF=\"edit_desc.cgi?id=$id\">Edit Long Description</A>
navigation_header();
PutFooter();
1;

View File

@@ -1,38 +1,43 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
#!/usr/bonsaitools/bin/perl -wT
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# 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>
# Matthew Tuck <matty@chariot.net.au>
<!--
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):
use diagnostics;
use strict;
use lib ".";
Contributor(s): Terry Weissman <terry@mozilla.org>
-->
require "CGI.pl";
<head>
<TITLE>A Bug's Life Cycle</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
# Silliness
my $silly = $::queryable_resolution;
<h1 ALIGN=CENTER>A Bug's Life Cycle</h1>
ConnectToDatabase();
GetVersionTable();
The <B>status</B> and <B>resolution</B> field define and track the
print "Content-type: text/html\n\n";
PutHeader("A Bug's Life Cycle");
print qq{The <B>status</B> and <B>resolution</B> field define and track the
life cycle of a bug.
<a name="status"></a>
@@ -96,29 +101,22 @@ certain status transitions are allowed.
</DL>
<TD>
<DL>
<DT><B>FIXED</B>
<DD> A fix for this bug is checked into the tree and tested.
<DT><B>INVALID</B>
<DD> The problem described is not a bug
<DT><B>WONTFIX</B>
<DD> The problem described is a bug which will never be fixed.
<DT><B>LATER</B>
<DD> The problem described is a bug which will not be fixed in this
version of the product.
<DT><B>REMIND</B>
<DD> The problem described is a bug which will probably not be fixed in this
version of the product, but might still be.
<DT><B>DUPLICATE</B>
<DD> The problem is a duplicate of an existing bug. Marking a bug
duplicate requires the bug# of the duplicating bug and will at
least put that bug number in the description field.
<DT><B>WORKSFORME</B>
<DD> All attempts at reproducing this bug were futile, reading the
code produces no clues as to why this behavior would occur. If
more information appears later, please re-assign the bug, for
now, file it.
</DL>
<DL>};
SendSQL("SELECT name, description FROM resolutions ORDER BY sortkey, name");
while (MoreSQLData()) {
my ($name, $description) = FetchSQLData();
if (lsearch(\@::queryable_resolution, $name) != -1) {
$name = html_quote($name);
$description = html_quote($description);
print "<dt><b>$name</b>\n";
print "<dd> $description\n";
}
}
print qq{</DL>
</TABLE>
<H1>Other Fields</H1>
@@ -186,21 +184,19 @@ operating systems include:
<LI> Linux
</UL>
Note that the operating system implies the platform, but not always.
For example, Linux can run on PC and Macintosh and others.
<p>Note that the operating system implies the platform, but not always.
For example, Linux can run on PC and Macintosh and others.</p>
<h2><a name="assigned_to">Assigned To</a></h2>
This is the person in charge of resolving the bug. Every time this
field changes, the status changes to <B>NEW</B> to make it easy to see
which new bugs have appeared on a person's list.
<p>This is the person in charge of resolving the bug. Every time this
field changes, the status changes to <b>NEW</b> to make it easy to see
which new bugs have appeared on a person's list.</p>
The default status for queries is set to NEW, ASSIGNED and REOPENED. When
<p>The default status for queries is set to NEW, ASSIGNED and REOPENED. When
searching for bugs that have been resolved or verified, remember to set the
status field appropriately.
status field appropriately.</p>
<hr>
<!-- hhmts start -->
Last modified: Sun Apr 14 12:51:23 EST 2002
<!-- hhmts end -->
</body> </html>
};
PutFooter();

File diff suppressed because it is too large Load Diff

View File

@@ -1,392 +1,281 @@
<!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>Bug Writing Guidelines</title>
</head>
<body>
<center>
<h1>Bug Writing Guidelines</h1>
</center>
<h3>Why You Should Read This</h3>
<blockquote>
<p>Simply put, the more effectively you report a bug, the more
likely an engineer will actually fix it.</p>
<p>These guidelines are a general
tutorial to teach novice and intermediate bug reporters how to compose effective bug reports. Not every sentence may precisely apply to
your software project.</p>
</blockquote>
<h3>How to Write a Useful Bug Report</h3>
<blockquote>
<p>Useful bug reports are ones that get bugs fixed. A useful bug
report normally has two qualities:</p>
<ol>
<li><b>Reproducible.</b> If an engineer can't see the bug herself to prove that it exists, she'll probably stamp your bug report "WORKSFORME" or "INVALID" and move on to the next bug. Every detail you can provide helps.<br>
<br>
</li>
<li><b>Specific.</b> The quicker the engineer can isolate the bug
to a specific area, the more likely she'll expediently fix it.
(If a programmer or tester has to decypher a bug, they may spend
more time cursing the submitter than solving the problem.)
<br>
<br>
[ <a href="#tips" name="Anchor">Tell Me More</a> ]
</li>
</ol>
<p>Let's say the application you're testing is a web browser. You
crash at foo.com, and want to write up a bug report:</p>
<blockquote>
<p><b>BAD:</b> "My browser crashed. I think I was on www.foo.com. I play golf with Bill Gates, so you better fix this problem, or I'll report you to him. By the way, your Back icon looks like a squashed rodent. UGGGLY. And my grandmother's home page is all messed up in your browser. Thx 4 UR help."
</p>
<p>
<b>GOOD:</b> "I crashed each time I went to www.foo.com, using
the 2002-02-25 build on a Windows 2000 system. I also
rebooted into Linux, and reproduced this problem using the 2002-02-24
Linux build.
</p>
<p>
It again crashed each time upon drawing the Foo banner at the top
of the page. I broke apart the page, and discovered that the
following image link will crash the application reproducibly,
unless you remove the "border=0" attribute:
</p>
<p>
<tt>&lt;IMG SRC="http://www.foo.com/images/topics/topicfoos.gif"
width="34" height="44" border="0" alt="News"&gt;</tt>
</p>
</blockquote>
</blockquote>
<h3>How to Enter your Useful Bug Report into Bugzilla:</h3>
<blockquote>
<p>Before you enter your bug, use Bugzilla's
<a href="query.cgi">search page</a> to determine whether the defect you've discovered is a known, already-reported bug. If your bug is the 37th duplicate of a known issue, you're more likely to annoy the engineer. (Annoyed
engineers fix fewer bugs.)
</p>
<p>
Next, be sure to reproduce your bug using a recent
build. Engineers tend to be most interested in problems affecting
the code base that they're actively working on. After all, the bug you're reporting
may already be fixed.
</p>
<p>
If you've discovered a new bug using a current build, report it in
Bugzilla:
</p>
<ol>
<li>From your Bugzilla main page, choose
"<a href="enter_bug.cgi">Enter a new bug</a>".</li>
<li>Select the product that you've found a bug in.</li>
<li>Enter your e-mail address, password, and press the "Login"
button. (If you don't yet have a password, leave the password field empty,
and press the "E-mail me a password" button instead.
You'll quickly receive an e-mail message with your password.)</li>
</ol>
<p>Now, fill out the form. Here's what it all means:</p>
<p><b>Where did you find the bug?</b></p>
<blockquote>
<p><b>Product: In which product did you find the bug?</b><br>
You just specified this on the last page, so you can't edit it here.</p>
<p><b>Version: In which product version did you find the
bug?</b><br>
(If applicable)</p>
<p><b>Component: In which component does the bug exist?</b><br>
Bugzilla requires that you select a component to enter a bug. (Not sure which to choose?
Click on the Component link. You'll see a description of each component, to help you make the best choice.)</p>
<p><b>OS: On which Operating System (OS) did you find this bug?</b>
(e.g. Linux, Windows 2000, Mac OS 9.)<br>
If you know the bug happens on all OSs, choose 'All'. Otherwise,
select the OS that you found the bug on, or "Other" if your OS
isn't listed.</p>
</blockquote>
<p><b>How important is the bug?</b></p>
<blockquote>
<p><b>Severity: How damaging is the bug?</b><br>
This item defaults to 'normal'. If you're not sure what severity your bug deserves, click on the Severity link.
You'll see a description of each severity rating. <br>
</p>
</blockquote>
<p><b>Who will be following up on the bug?</b></p>
<blockquote>
<p><b>Assigned To: Which engineer should be responsible for fixing
this bug?</b><br>
Bugzilla will automatically assign the bug to a default engineer
upon submitting a bug report. If you'd prefer to directly assign the bug to
someone else, enter their e-mail address into this field. (To see the list of
default engineers for each component, click on the Component
link.)</p>
<p><b>Cc: Who else should receive e-mail updates on changes to this
bug?</b><br>
List the full e-mail addresses of other individuals who should
receive an e-mail update upon every change to the bug report. You
can enter as many e-mail addresses as you'd like, separated by spaces or commas, as long as those
people have Bugzilla accounts.</p>
</blockquote>
<p><b>What else can you tell the engineer about the bug?</b></p>
<blockquote>
<p><b>Summary:</b> <b>How would you describe the bug, in
approximately 60 or fewer characters?</b><br>
A good summary should <b>quickly and uniquely identify a bug
report</b>. Otherwise, an engineer cannot meaningfully identify
your bug by its summary, and will often fail to pay attention to
your bug report when skimming through a 10 page bug list.<br>
<br>
A useful summary might be
"<tt>PCMCIA install fails on Tosh Tecra 780DVD w/ 3c589C</tt>".
"<tt>Software fails</tt>" or "<tt>install problem</tt>" would be
examples of a bad summary.<br>
<br>
[ <a href="#summary">Tell Me More</a> ]<br>
<br>
<b>Description: </b><br>
Please provide a detailed problem report in this field.
Your bug's recipients will most likely expect the following information:</p>
<blockquote>
<p><b>Overview Description:</b> More detailed expansion of
summary.</p>
<blockquote>
<pre>
Drag-selecting any page crashes Mac builds in NSGetFactory
</pre>
</blockquote>
<p><b>Steps to Reproduce:</b> Minimized, easy-to-follow steps that will
trigger the bug. Include any special setup steps.</p>
<blockquote>
<pre>
1) View any web page. (I used the default sample page,
resource:/res/samples/test0.html)
2) Drag-select the page. (Specifically, while holding down
the mouse button, drag the mouse pointer downwards from any
point in the browser's content region to the bottom of the
browser's content region.)
</pre>
</blockquote>
<p>
<b>Actual Results:</b> What the application did after performing
the above steps.
</p>
<blockquote>
<pre>
The application crashed. Stack crawl appended below from MacsBug.
</pre>
</blockquote>
<p><b>Expected Results:</b> What the application should have done,
were the bug not present.</p>
<blockquote>
<pre>
The window should scroll downwards. Scrolled content should be selected.
(Or, at least, the application should not crash.)
</pre>
</blockquote>
<p><b>Build Date &amp; Platform:</b> Date and platform of the build
that you first encountered the bug in.</p>
<blockquote>
<pre>
Build 2002-03-15 on Mac OS 9.0
</pre>
</blockquote>
<p><b>Additional Builds and Platforms:</b> Whether or not the bug
takes place on other platforms (or browsers, if applicable).</p>
<blockquote>
<pre>
- Also Occurs On
Mozilla (2002-03-15 build on Windows NT 4.0)
- Doesn't Occur On
Mozilla (2002-03-15 build on Red Hat Linux; feature not supported)
Internet Explorer 5.0 (shipping build on Windows NT 4.0)
Netscape Communicator 4.5 (shipping build on Mac OS 9.0)
</pre>
</blockquote>
<p><b>Additional Information:</b> Any other debugging information.
For crashing bugs:</p>
<ul>
<li><b>Win32:</b> if you receive a Dr. Watson error, please note
the type of the crash, and the module that the application crashed
in. (e.g. access violation in apprunner.exe)</li>
<li><b>Mac OS:</b> if you're running MacsBug, please provide the
results of a <b>how</b> and an <b>sc</b>:</li>
</ul>
<blockquote>
<pre>
*** MACSBUG STACK CRAWL OF CRASH (Mac OS)
Calling chain using A6/R1 links
Back chain ISA Caller
00000000 PPC 0BA85E74
03AEFD80 PPC 0B742248
03AEFD30 PPC 0B50FDDC NSGetFactory+027FC
PowerPC unmapped memory exception at 0B512BD0 NSGetFactory+055F0
</pre>
</blockquote>
</blockquote>
</blockquote>
<p>You're done!<br>
<br>
After double-checking your entries for any possible errors, press
the "Commit" button, and your bug report will now be in the
Bugzilla database.<br>
</p>
</blockquote>
<hr>
<h3>More Information on Writing Good Bugs</h3>
<blockquote>
<p><b><a name="tips"></a> 1. General Tips for a Useful Bug
Report</b>
</p>
<blockquote>
<p>
<b>Use an explicit structure, so your bug reports are easy to
skim.</b> Bug report users often need immediate access to specific
sections of your bug. If your Bugzilla installation supports the
Bugzilla Helper, use it.
</p>
<p>
<b>Avoid cuteness if it costs clarity.</b> Nobody will be laughing
at your funny bug title at 3:00 AM when they can't remember how to
find your bug.
</p>
<p>
<b>One bug per report.</b> Completely different people typically
fix, verify, and prioritize different bugs. If you mix a handful of
bugs into a single report, the right people probably won't discover
your bugs in a timely fashion, or at all. Certain bugs are also
more important than others. It's impossible to prioritize a bug
report when it contains four different issues, all of differing
importance.
</p>
<p>
<b>No bug is too trivial to report.</b> Unless you're reading the
source code, you can't see actual software bugs, like a dangling
pointer -- you'll see their visible manifestations, such as the
segfault when the application finally crashes. Severe software
problems can manifest themselves in superficially trivial ways.
File them anyway.<br>
</p>
</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>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Symantec Visual Page 1.0">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=iso-8859-1">
<TITLE>Bug Writing Guidelines</TITLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000">
<H1 ALIGN="CENTER">bug writing guidelines</H1>
<P ALIGN="CENTER"><FONT SIZE="2"><B>(Please send feedback/update requests to </B></FONT><A
HREF="mailto:eli@prometheus-music.com"><FONT SIZE="2"><B>Eli Goldberg</B></FONT></A><FONT
SIZE="2"><B>)</B></FONT></P>
<P><FONT SIZE="4"><B><BR>
Why You Should Read This</B></FONT>
<BLOCKQUOTE>
<P>Simply put, the more effectively you report a bug, the more likely an engineer
will actually fix it. <BR>
<A HREF="http://bugzilla.mozilla.org"><BR>
</A>These bug writing guidelines are an attempt at a general tutorial on writing
effective bug reports for novice bug writers; not every sentence may precisely apply
to your software project.
</BLOCKQUOTE>
<P><FONT SIZE="4"><B><BR>
How to Write a Useful Bug Report</B></FONT>
<BLOCKQUOTE>
<P>Useful bug reports are ones that get bugs fixed. A useful bug report normally
has two qualities:
<OL>
<LI><B>Reproducible.</B> If an engineer can't see it or conclusively prove that it
exists, the engineer will probably stamp it &quot;WORKSFORME&quot; or &quot;INVALID&quot;,
and move on to the next bug. Every detail you can provide helps. <BR>
<BR>
<LI><B>Specific.</B> The quicker the engineer can isolate the issue to a specific
problem, the more likely it'll be expediently fixed.<B> </B>(If a programmer or tester
has to decypher a bug, they spend more time cursing the submitter than fixing or
testing the problem.)
</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:
<BLOCKQUOTE>
<P><B>BAD:</B> &quot;My browser crashed. I think I was on foo.com. My computer uses
Windows. I think that this is a really bad problem and you should fix it now. By
the way, your icons really suck. Nobody will use your software if you keep those
ugly icons. Oh, and my grandmother's home page doesn't look right, either, it's all
messed up. Good luck.&quot;<BR>
<BR>
<B>GOOD: </B>&quot;I crashed each time when I went to foo.com, using the 10.28.99
build on a Win NT 4.0 (Service Pack 5) system. I also rebooted into Linux, and reproduced
this problem using the 10.28.99 Linux build.<BR>
<BR>
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 &quot;border=0&quot; attribute:<BR>
<BR>
<FONT SIZE="2"><TT>&lt;IMG SRC=&quot;http://foo.com/images/topics/topicfoos.gif&quot;
width=34 height=44 border=0 alt=&quot;News&quot;&gt;</TT>&quot;</FONT>
</BLOCKQUOTE>
</BLOCKQUOTE>
<P><FONT SIZE="4"><B><BR>
<BR>
How to Enter your Useful Bug Report into Bugzilla</B>:</FONT>
<BLOCKQUOTE>
<P>Before you enter your bug, use the Bugzilla Query Page to determine whether the
defect you've discovered is a known bug, and has already been reported. (If your
bug is the 37th duplicate of a known issue, you're more likely to annoy the engineer.
Annoyed engineers fix fewer bugs.)<BR>
<BR>
Next, be sure that you've reproduced your bug using a recent build. (Engineers tend
to be most interested in problems afflicting the code base that they're actively
working on, rather than those in a code base that's hundreds of bug fixes obsolete.)<BR>
<BR>
If you've discovered a new bug using a current build, report it in Bugzilla:
</BLOCKQUOTE>
<OL>
<OL>
<LI>From your Bugzilla main page, choose &quot;Enter a new bug&quot;.
<LI>Select the product that you've found a bug in.
<LI>Enter your E-mail address, Password, and press the &quot;Login&quot; button.
(If you don't yet have a password, leave the password text box empty, and press the
&quot;E-mail me a password&quot; button instead. You'll receive an E-mail message
with your password shortly.)
</OL>
<P>Now, fill out the form. Here's what it all means:
</OL>
<BLOCKQUOTE>
<P><B>Where did you find the bug?</B>
<BLOCKQUOTE>
<P><B>Product: In which product did you find the bug?</B><BR>
You just filled this out on the last page.</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. (If they all look meaningless,
click on the Component link, which links to descriptions of each component, to help
you make the best choice.)</P>
<P><B>Platform:&#160;On which hardware platform did you find this bug?</B><FONT SIZE="2"><B>
</B>(e.g. Macintosh, SGI, Sun, PC.) </FONT><BR>
If you know the bug happens on all hardware platforms, choose 'All'. Otherwise, select
the platform that you found the bug on, or &quot;Other&quot; if your platform isn't
listed.</P>
<P><B>OS: On which Operating System (OS) did you find this bug?</B> <FONT SIZE="2">(e.g.
Linux, Windows NT, Mac OS 8.5.)</FONT><BR>
If you know the bug happens on all OSs, choose 'All'. Otherwise, select the OS that
you found the bug on, or &quot;Other&quot; if your OS isn't listed.</P>
</BLOCKQUOTE>
<P><B><BR>
How important is the bug?</B>
<BLOCKQUOTE>
<P><B>Severity: How damaging is the bug?</B><BR>
This item defaults to 'normal'. (To determine the most appropriate severity for a
particular bug, click on the Severity link for a full explanation of each choice,
from Critical to Enhancement.)
</BLOCKQUOTE>
<P><B><BR>
Who will be following up on the bug?</B>
<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; the text box exists to allow you to manually assign it to a different
engineer. (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; e-mail addresses must be separated by commas, with no spaces between
the addresses.
</BLOCKQUOTE>
<P><B><BR>
What else can you tell the engineer about the bug?</B></P>
<BLOCKQUOTE>
<P><B>URL: On what URL did you discover this bug?</B><BR>
If you encountered the bug on a particular URL, please provide it (or, them) here.
If you've isolated the bug to a specific HTML snippet, please also provide a URL
for that, too.</P>
<P><B>Summary:</B> <B>How would you describe the bug, in approximately 60 or fewer
characters?</B><BR>
A good summary should <U>quickly and uniquely identify a bug report</U>. Otherwise,
developers cannot meaningfully query by bug summary, and will often fail to pay attention
to your bug report when reviewing a 10 page bug list.<BR>
<BR>
A summary of &quot;PCMCIA install fails on Tosh Tecra 780DVD w/ 3c589C&quot; is a
useful title. &quot;Software fails&quot; or &quot;install problem&quot; would be
examples of a bad title.</P>
<P><BR>
<B>Description: What else can you tell the engineer about this bug? </B><BR>
Please provide as detailed of a problem diagnosis in this field as possible. <BR>
<BR>
Where applicable, using the following bug report template will help ensure that all
relevant information comes through:
<BLOCKQUOTE>
<P><B>Overview Description:</B> More detailed expansion of summary.
<BLOCKQUOTE>
<PRE><FONT SIZE="2">Drag-selecting any page crashes Mac builds in NSGetFactory</FONT></PRE>
</BLOCKQUOTE>
<P><B>Steps to Reproduce: </B>The minimal set of steps necessary to trigger the bug.
Include any special setup steps.
<BLOCKQUOTE>
<PRE><FONT SIZE="2">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.)</FONT></PRE>
</BLOCKQUOTE>
<P><B>Actual Results:</B> What the application did after performing the above steps.
<BLOCKQUOTE>
<PRE><FONT SIZE="2">The application crashed. Stack crawl appended below from MacsBug.</FONT></PRE>
</BLOCKQUOTE>
<P><B>Expected Results:</B> What the application should have done, were the bug not
present.
<BLOCKQUOTE>
<PRE><FONT SIZE="2">The window should scroll downwards. Scrolled content should
be selected. (Or, at least, the application should not crash.)</FONT></PRE>
</BLOCKQUOTE>
<P><B>Build Date &amp; Platform:</B> Date and platform of the build that you first
encountered the bug in.
<BLOCKQUOTE>
<PRE><FONT SIZE="2">11/2/99 build on Mac OS (Checked Viewer &amp; Apprunner)</FONT></PRE>
</BLOCKQUOTE>
<P><B>Additional Builds and Platforms:</B> Whether or not the bug takes place on
other platforms or browsers.
<BLOCKQUOTE>
<PRE><FONT SIZE="2"> - Occurs On
Seamonkey (11/2/99 build on Windows NT 4.0)
- Doesn't Occur On
Seamonkey (11/4/99 build on Red Hat Linux; feature not supported)
Internet Explorer 5.0 (RTM build on Windows NT 4.0)
Netscape Communicator 4.5 (RTM build on Mac OS)</FONT>
</PRE>
</BLOCKQUOTE>
<P><B>Additional Information:</B> Any other debugging information. For crashing bugs:
<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><B>Mac OS:</B> if you're running MacsBug, please provide the results of a <B><TT>how</TT></B>
and an <B><TT>sc</TT></B>.
<LI><B>Unix: </B>please provide a minimized stack trace, which can be generated by
typing <B><TT>gdb apprunner core</TT></B> into a shell prompt.
</UL>
<BLOCKQUOTE>
<P>
<PRE><FONT SIZE="2">*** 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</FONT></PRE>
</BLOCKQUOTE>
</BLOCKQUOTE>
</BLOCKQUOTE>
<P>You're done! <BR>
<BR>
After double-checking your entries for any possible errors, press the &quot;Commit&quot;
button, and your bug report will now be in the Bugzilla database.<BR>
<I><BR>
<BR>
</I><FONT SIZE="2">(Thanks to Claudius Gayle, Peter Mock, Chris Pratt, Tom Schutter,
and Chris Yeh for contributing to this document. Constructive </FONT><A HREF="mailto:eli@prometheus-music.com"><FONT
SIZE="2">suggestions</FONT></A><FONT SIZE="2"> welcome.)</FONT>
</BLOCKQUOTE>
</BODY>
</HTML>

View File

@@ -5,7 +5,7 @@
maintainer CDATA #REQUIRED
exporter CDATA #IMPLIED
>
<!ELEMENT bug (bug_id, (bug_status, product, priority, version, rep_platform, assigned_to, delta_ts, component, reporter, target_milestone?, bug_severity, creation_ts, qa_contact?, op_sys, resolution?, bug_file_loc?, short_desc?, keywords*, status_whiteboard?, dependson*, blocks*, cc*, long_desc*, attachment*)?)>
<!ELEMENT bug (bug_id, (exporter?, urlbase?, bug_status, product, priority, version, rep_platform, assigned_to, delta_ts, component, reporter, target_milestone?, bug_severity, creation_ts, qa_contact?, op_sys, resolution?, bug_file_loc?, short_desc?, keywords*, status_whiteboard?, dependson*, blocks*, cc*, long_desc*, attachment*)?)>
<!ATTLIST bug
error (NotFound | NotPermitted | InvalidBugId) #IMPLIED
>

File diff suppressed because it is too large Load Diff

View File

@@ -25,15 +25,45 @@ use strict;
use lib qw(.);
use vars qw(
@legal_keywords
$buffer
$template
$vars
);
sub sillyness { # shut up "used only once" warnings
my $zz = @::legal_keywords;
$zz = $::buffer;
}
require "CGI.pl";
# Use the template toolkit (http://www.template-toolkit.org/) to generate
# the user interface (HTML pages and mail messages) using templates in the
# "template/" subdirectory.
use Template;
# Create the global template object that processes templates and specify
# configuration parameters that apply to all templates processed in this script.
my $template = Template->new(
{
# Colon-separated list of directories containing templates.
INCLUDE_PATH => "template/custom:template/default",
# Allow templates to be specified with relative paths.
RELATIVE => 1,
PRE_CHOMP => 1,
});
# Define the global variables and functions that will be passed to the UI
# template. Individual functions add their own values to this hash before
# sending them to the templates they process.
my $vars =
{
# Function for retrieving global parameters.
'Param' => \&Param,
# Function for processing global parameters that contain references
# to other global parameters.
'PerformSubsts' => \&PerformSubsts,
# Function to search an array for a value
'lsearch' => \&lsearch,
};
print "Content-type: text/html\n";
# The master list not only says what fields are possible, but what order
@@ -119,6 +149,7 @@ $vars->{buffer} = $::buffer;
# Generate and return the UI (HTML page) from the appropriate template.
print "Content-type: text/html\n\n";
$template->process("list/change-columns.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
$template->process("buglist/colchange.tmpl", $vars)
|| DisplayError("Template process failed: " . $template->error())
&& exit;

View File

@@ -88,11 +88,16 @@ sub collect_stats {
push @row, FetchOneColumn();
}
foreach my $resolution ('FIXED', 'INVALID', 'WONTFIX', 'LATER', 'REMIND', 'DUPLICATE', 'WORKSFORME', 'MOVED') {
foreach my $resolution (@::queryable_resolution) {
if( $product eq "-All-" ) {
SendSQL("select count(resolution) from bugs where resolution='$resolution'");
SendSQL("select count(resolution_id) from bugs, resolutions " .
"where bugs.resolution_id = resolutions.id " .
"and resolutions.name='$resolution'");
} else {
SendSQL("select count(resolution) from bugs where resolution='$resolution' and product='$product'");
SendSQL("select count(resolution_id) from bugs, resolutions " .
"where bugs.resolution_id = resolutions.id " .
"and resolutions.name='$resolution' " .
"and product='$product'");
}
push @row, FetchOneColumn();
@@ -104,7 +109,9 @@ sub collect_stats {
#
# Do not edit me! This file is generated.
#
# fields: DATE|NEW|ASSIGNED|REOPENED|UNCONFIRMED|RESOLVED|VERIFIED|CLOSED|FIXED|INVALID|WONTFIX|LATER|REMIND|DUPLICATE|WORKSFORME|MOVED
FIN
print DATA "# fields: DATE|NEW|ASSIGNED|REOPENED|UNCONFIRMED|RESOLVED|VERIFIED|CLOSED|" . join('|', @::queryable_resolution);
print DATA <<FIN;
# Product: $product
# Created: $when
FIN

View File

@@ -1,5 +1,4 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
<HTML><head>
<!--
The contents of this file are subject to the Mozilla Public
@@ -22,18 +21,15 @@
Contributor(s): Terry Weissman <terry@mozilla.org>
-->
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Understanding the UNCONFIRMED state, and other recent changes</title>
</head>
<body>
<h1>Understanding the UNCONFIRMED state, and other recent changes</h1>
<p>
[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>
<p>
@@ -43,67 +39,60 @@ 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>
<p>
The <a href="bug_status.html">page describing bug fields</a> has been
The <a href="bug_status.cgi">page describing bug fields</a> has been
updated to include UNCONFIRMED.
</p>
<p>
There are two basic ways that a bug can become confirmed (and enter
the NEW) state.
</p>
<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>
<li> The bug gathers a certain number of votes. <b>Any</b> valid Bugzilla user may vote for
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.</li>
gets enough votes becomes automatically confirmed, and enters the NEW state.
</ul>
<p>
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.
</p>
<h2>Permissions.</h2>
<p>
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>
<p>
If you have the "Can confirm a bug" permission, then you will be able
to move UNCONFIRMED bugs into the NEW state.
</p>
<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>
<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.
</p>
<h2>Other details.</h2>
<p>
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
@@ -111,58 +100,54 @@ 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>
<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>
<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>
<p>
Note that only some products support the UNCONFIRMED state. In other
products, all new bugs will automatically start in the NEW state.
</p>
<h2>Things still to be done.</h2>
<p>
There probably ought to be a way to get a bug back into the
UNCONFIRMED state, but there isn't yet.
</p>
<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>
<p>
There should also be a way to automatically promote people to get the
"Can edit all aspects of any bug" permission.
</p>
<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.
</p>
<hr>
<p>
<!-- hhmts start -->
Last modified: Sun Apr 14 12:55:14 EST 2002
Last modified: Wed Feb 16 21:04:56 2000
<!-- hhmts end -->
</p>
</body> </html>

View File

@@ -1,303 +0,0 @@
#!/usr/local/bin/python
# -*- mode: python -*-
"""
jb2bz.py - a nonce script to import bugs from JitterBug to Bugzilla
Written by Tom Emerson, tree@basistech.com
This script is provided in the hopes that it will be useful. No
rights reserved. No guarantees expressed or implied. Use at your own
risk. May be dangerous if swallowed. If it doesn't work for you, don't
blame me. It did what I needed it to do.
This code requires a recent version of Andy Dustman's MySQLdb interface,
http://sourceforge.net/projects/mysql-python
Share and enjoy.
"""
import rfc822, mimetools, multifile, mimetypes
import sys, re, glob, StringIO, os, stat, time
import MySQLdb, getopt
# mimetypes doesn't include everything we might encounter, yet.
if not mimetypes.types_map.has_key('.doc'):
mimetypes.types_map['.doc'] = 'application/msword'
if not mimetypes.encodings_map.has_key('.bz2'):
mimetypes.encodings_map['.bz2'] = "bzip2"
bug_status='NEW'
component="default"
version=""
product="" # this is required, the rest of these are defaulted as above
"""
Each bug in JitterBug is stored as a text file named by the bug number.
Additions to the bug are indicated by suffixes to this:
<bug>
<bug>.followup.*
<bug>.reply.*
<bug>.notes
The dates on the files represent the respective dates they were created/added.
All <bug>s and <bug>.reply.*s include RFC 822 mail headers. These could include
MIME file attachments as well that would need to be extracted.
There are other additions to the file names, such as
<bug>.notify
which are ignored.
Bugs in JitterBug are organized into directories. At Basis we used the following
naming conventions:
<product>-bugs Open bugs
<product>-requests Open Feature Requests
<product>-resolved Bugs/Features marked fixed by engineering, but not verified
<product>-verified Resolved defects that have been verified by QA
where <product> is either:
<product-name>
or
<product-name>-<version>
"""
def process_notes_file(current, fname):
try:
new_note = {}
notes = open(fname, "r")
s = os.fstat(notes.fileno())
new_note['text'] = notes.read()
new_note['timestamp'] = time.gmtime(s[stat.ST_MTIME])
notes.close()
current['notes'].append(new_note)
except IOError:
pass
def process_reply_file(current, fname):
new_note = {}
reply = open(fname, "r")
msg = rfc822.Message(reply)
new_note['text'] = "%s\n%s" % (msg['From'], msg.fp.read())
new_note['timestamp'] = rfc822.parsedate_tz(msg['Date'])
current["notes"].append(new_note)
def add_notes(current):
"""Add any notes that have been recorded for the current bug."""
process_notes_file(current, "%d.notes" % current['number'])
for f in glob.glob("%d.reply.*" % current['number']):
process_reply_file(current, f)
for f in glob.glob("%d.followup.*" % current['number']):
process_reply_file(current, f)
def maybe_add_attachment(current, file, submsg):
"""Adds the attachment to the current record"""
cd = submsg["Content-Disposition"]
m = re.search(r'filename="([^"]+)"', cd)
if m == None:
return
attachment_filename = m.group(1)
if (submsg.gettype() == 'application/octet-stream'):
# try get a more specific content-type for this attachment
type, encoding = mimetypes.guess_type(m.group(1))
if type == None:
type = submsg.gettype()
else:
type = submsg.gettype()
try:
data = StringIO.StringIO()
mimetools.decode(file, data, submsg.getencoding())
except:
return
current['attachments'].append( ( attachment_filename, type, data.getvalue() ) )
def process_mime_body(current, file, submsg):
data = StringIO.StringIO()
mimetools.decode(file, data, submsg.getencoding())
current['description'] = data.getvalue()
def process_text_plain(msg, current):
print "Processing: %d" % current['number']
current['description'] = msg.fp.read()
def process_multi_part(file, msg, current):
print "Processing: %d" % current['number']
mf = multifile.MultiFile(file)
mf.push(msg.getparam("boundary"))
while mf.next():
submsg = mimetools.Message(file)
if submsg.has_key("Content-Disposition"):
maybe_add_attachment(current, mf, submsg)
else:
# This is the message body itself (always?), so process
# accordingly
process_mime_body(current, mf, submsg)
def process_jitterbug(filename):
current = {}
current['number'] = int(filename)
current['notes'] = []
current['attachments'] = []
current['description'] = ''
current['date-reported'] = ()
current['short-description'] = ''
file = open(filename, "r")
msg = mimetools.Message(file)
msgtype = msg.gettype()
add_notes(current)
current['date-reported'] = rfc822.parsedate_tz(msg['Date'])
current['short-description'] = msg['Subject']
if msgtype[:5] == 'text/':
process_text_plain(msg, current)
elif msgtype[:10] == "multipart/":
process_multi_part(file, msg, current)
else:
# Huh? This should never happen.
print "Unknown content-type: %s" % msgtype
sys.exit(1)
# At this point we have processed the message: we have all of the notes and
# attachments stored, so it's time to add things to the database.
# The schema for JitterBug 2.14 can be found at:
#
# http://www.trilobyte.net/barnsons/html/dbschema.html
#
# The following fields need to be provided by the user:
#
# bug_status
# product
# version
# reporter
# component
# resolution
# change this to the user_id of the Bugzilla user who is blessed with the
# imported defects
reporter=6
# the resolution will need to be set manually
resolution=""
db = MySQLdb.connect(db='bugs',user='root',host='localhost')
cursor = db.cursor()
cursor.execute( "INSERT INTO bugs SET " \
"bug_id=%s," \
"bug_severity='normal'," \
"bug_status=%s," \
"creation_ts=%s," \
"short_desc=%s," \
"product=%s," \
"rep_platform='All'," \
"assigned_to=%s,"
"reporter=%s," \
"version=%s," \
"component=%s," \
"resolution=%s",
[ current['number'],
bug_status,
time.strftime("%Y-%m-%d %H:%M:%S", current['date-reported'][:9]),
current['short-description'],
product,
reporter,
reporter,
version,
component,
resolution] )
# This is the initial long description associated with the bug report
cursor.execute( "INSERT INTO longdescs VALUES (%s,%s,%s,%s)",
[ current['number'],
reporter,
time.strftime("%Y-%m-%d %H:%M:%S", current['date-reported'][:9]),
current['description'] ] )
# Add whatever notes are associated with this defect
for n in current['notes']:
cursor.execute( "INSERT INTO longdescs VALUES (%s,%s,%s,%s)",
[current['number'],
reporter,
time.strftime("%Y-%m-%d %H:%M:%S", n['timestamp'][:9]),
n['text']])
# add attachments associated with this defect
for a in current['attachments']:
cursor.execute( "INSERT INTO attachments SET " \
"bug_id=%s, creation_ts=%s, description='', mimetype=%s," \
"filename=%s, thedata=%s, submitter_id=%s",
[ current['number'],
time.strftime("%Y-%m-%d %H:%M:%S", current['date-reported'][:9]),
a[1], a[0], a[2], reporter ])
cursor.close()
db.close()
def usage():
print """Usage: jb2bz.py [OPTIONS] Product
Where OPTIONS are one or more of the following:
-h This help information.
-s STATUS One of UNCONFIRMED, NEW, ASSIGNED, REOPENED, RESOLVED, VERIFIED, CLOSED
(default is NEW)
-c COMPONENT The component to attach to each bug as it is important. This should be
valid component for the Product.
-v VERSION Version to assign to these defects.
Product is the Product to assign these defects to.
All of the JitterBugs in the current directory are imported, including replies, notes,
attachments, and similar noise.
"""
sys.exit(1)
def main():
global bug_status, component, version, product
opts, args = getopt.getopt(sys.argv[1:], "hs:c:v:")
for o,a in opts:
if o == "-s":
if a in ('UNCONFIRMED','NEW','ASSIGNED','REOPENED','RESOLVED','VERIFIED','CLOSED'):
bug_status = a
elif o == '-c':
component = a
elif o == '-v':
version = a
elif o == '-h':
usage()
if len(args) != 1:
sys.stderr.write("Must specify the Product.\n")
sys.exit(1)
product = args[0]
for bug in filter(lambda x: re.match(r"\d+$", x), glob.glob("*")):
process_jitterbug(bug)
if __name__ == "__main__":
main()

View File

@@ -30,14 +30,29 @@ use strict;
use lib qw(.);
require "CGI.pl";
require "globals.pl";
# Shut up misguided -w warnings about "used only once":
use vars qw(
%FORM
$template
$vars
);
use vars %::FORM;
# Use the template toolkit (http://www.template-toolkit.org/)
use Template;
# Create the global template object that processes templates
my $template = Template->new(
{
# Colon-separated list of directories containing templates.
INCLUDE_PATH => "template/custom:template/default",
RELATIVE => 1,
PRE_CHOMP => 1,
});
# Define the global variables and functions that will be passed to the UI
# template.
my $vars =
{
'Param' => \&Param,
'PerformSubsts' => \&PerformSubsts,
};
ConnectToDatabase();
@@ -64,13 +79,12 @@ my $realname = trim($::FORM{'realname'});
if (defined($login)) {
# We've been asked to create an account.
CheckEmailSyntax($login);
trick_taint($login);
$vars->{'login'} = $login;
if (!ValidateNewUser($login)) {
if (DBname_to_id($login) != 0) {
# Account already exists
$template->process("account/exists.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
$template->process("admin/account_exists.tmpl", $vars)
|| DisplayError("Template process failed: " . $template->error());
exit;
}
@@ -78,11 +92,12 @@ if (defined($login)) {
my $password = InsertNewUser($login, $realname);
MailPassword($login, $password);
$template->process("account/created.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
$template->process("admin/account_created.tmpl", $vars)
|| DisplayError("Template process failed: " . $template->error());
exit;
}
# Show the standard "would you like to create an account?" form.
$template->process("account/create.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
$template->process("admin/create_account.tmpl", $vars)
|| DisplayError("Template process failed: " . $template->error())
&& exit;

View File

@@ -1,38 +0,0 @@
/* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is the Bugzilla Bug Tracking System.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s): Myk Melez <myk@mozilla.org>
*/
/* Right align bug IDs. */
.bz_id_column { text-align: right; }
/* Style bug rows according to severity. */
.bz_blocker { color: red; font-weight: bold; }
.bz_critical { color: red; }
.bz_enhancement { font-style: italic; }
/* Style secure bugs if the installation is not using bug groups.
* Installations that *are* using bug groups are likely to be using
* them for almost all bugs, in which case special styling is not
* informative and generally a nuisance.
*/
.bz_secure { color: black; background-color: lightgrey; }
/* Align columns in the "change multiple bugs" form to the right. */
table#form tr th { text-align: right; }

View File

@@ -54,7 +54,18 @@ sub WriteParams {
}
}
}
# If Bugzilla has been upgraded since the last time parameters were edited,
# and some parameters have been removed in the new version of Bugzilla,
# remove them from the parameters file.
foreach my $item (keys %::param) {
if (!grep($_ eq $item, @::param_list) && $item ne "version") {
print "The <em>$item</em> parameter is no longer used in Bugzilla
and has been removed from your parameters file.<br>";
delete $::param{$item};
}
}
mkdir("data", 0777);
chmod 0777, "data";
my $tmpname = "data/params.$$";
open(FID, ">$tmpname") || die "Can't create $tmpname";
my $v = $::param{'version'};
@@ -65,7 +76,7 @@ sub WriteParams {
print FID "1;\n";
close FID;
rename $tmpname, "data/params" || die "Can't rename $tmpname to data/params";
ChmodDataFile('data/params', 0666);
chmod 0666, "data/params";
}
@@ -144,6 +155,17 @@ DefParam("cookiepath",
"t",
"/");
DefParam("preferlists",
"If this is on, Bugzilla will display most selection options as selection lists. If this is off, Bugzilla will use radio buttons and checkboxes instead.",
"b",
1);
DefParam("capitalizelists",
"If this is on, Bugzilla will capitalize list entries, checkboxes, and radio buttons. If this is off, Bugzilla will leave these items untouched.",
"b",
0);
DefParam("usequip",
"If this is on, Bugzilla displays a silly quip at the beginning of buglists, and lets users add to the list of quips.",
"b",
@@ -173,6 +195,27 @@ DefParam("queryagainstshadowdb",
0);
DefParam("usedespot",
"If this is on, then we are using the Despot system to control our database of users. Bugzilla won't ever write into the user database, it will let the Despot code maintain that. And Bugzilla will send the user over to Despot URLs if they need to change their password. Also, in that case, Bugzilla will treat the passwords stored in the database as being crypt'd, not plaintext.",
"b",
0);
DefParam("despotbaseurl",
"The base URL for despot. Used only if <b>usedespot</b> is turned on, above.",
"t",
"http://cvs-mirror.mozilla.org/webtools/despot/despot.cgi",
\&check_despotbaseurl);
sub check_despotbaseurl {
my ($url) = (@_);
if ($url !~ /^http.*cgi$/) {
return "must be a legal URL, that starts with http and ends with .cgi";
}
return "";
}
# Adding in four parameters for LDAP authentication. -JMR, 7/28/00
DefParam("useLDAP",
"Turn this on to use an LDAP directory for user authentication ".
@@ -203,18 +246,113 @@ DefParam("LDAPmailattribute",
#End of LDAP parameters
DefParam("headerhtml",
"Additional HTML to add to the HEAD area of documents, eg. links to stylesheets.",
"l",
'');
DefParam("bodyhtml",
"Additional parameters to add to the BODY tag at the beginning of documents, eg. background image/colors, link colors, etc",
"l",
'BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000"');
DefParam("footerhtml",
"HTML to add to the bottom of every page. By default it displays the blurbhtml, and %commandmenu%, a menu of useful commands. You probably really want either bannerhtml or footerhtml to include %commandmenu%.",
"l",
'<TABLE BORDER="0"><TR><TD BGCOLOR="#000000" VALIGN="TOP">
<TABLE BORDER="0" CELLPADDING="10" CELLSPACING="0" WIDTH="100%" BGCOLOR="lightyellow">
<TR><TD>
%blurbhtml%
<BR>
%commandmenu%
</TD></TR></TABLE></TD></TR></TABLE>');
DefParam("errorhtml",
"This is what is printed out when a form is improperly filled out. %errormsg% is replaced by the actual error itself; %<i>anythingelse</i>% gets replaced by the definition of that parameter (as defined on this page).",
"l",
qq{<TABLE CELLPADDING=20><TR><TD BGCOLOR="#ff0000">
<FONT SIZE="+2">%errormsg%</FONT></TD></TR></TABLE>
<P>Please press <B>Back</B> and try again.<P>});
DefParam("bannerhtml",
"The html that gets emitted at the head of every Bugzilla page.
Anything of the form %<i>word</i>% gets replaced by the defintion of that
word (as defined on this page).",
"l",
q{<TABLE BGCOLOR="#000000" WIDTH="100%" BORDER=0 CELLPADDING=0 CELLSPACING=0>
<TR><TD><A HREF="http://www.mozilla.org/"><IMG
SRC="http://www.mozilla.org/images/mozilla-banner.gif" ALT=""
BORDER=0 WIDTH=600 HEIGHT=58></A></TD></TR></TABLE>
<CENTER><FONT SIZE=-1>Bugzilla version %version%
</FONT></CENTER>});
DefParam("blurbhtml",
"A blurb that appears as part of the header of every Bugzilla page. This is a place to put brief warnings, pointers to one or two related pages, etc.",
"l",
"This is <B>Bugzilla</B>: the Mozilla bug system. For more
information about what Bugzilla is and what it can do, see
<A HREF=\"http://www.mozilla.org/\">mozilla.org</A>'s
<A HREF=\"http://www.mozilla.org/bugs/\"><B>bug pages</B></A>.");
DefParam("mostfreqhtml",
"The HTML which appears at the top of the list of most-frequently-reported bugs. Use it to explain the page, set a maintainer etc.",
"l",
q{
<br><p>
<b>What are "most frequent bugs"?</b>
<blockquote>The Most Frequent Bugs page lists the known open bugs which
are reported most frequently in recent builds of Mozilla. It is automatically
generated from the Bugzilla database every 24 hours, by counting the number
of direct and indirect duplicates of bugs.
This information is provided in order to assist in minimizing
the amount of duplicate bugs entered into Bugzilla which in turn cuts down
on development time.
</blockquote>
<b>How do I use this list?</b>
<ul>
<li>Review the most frequent bugs list.</li>
<li>If problem is listed:</li>
<ul>
<li>Click on Bug # link to confirm that you have found the same bug and comment
if you have additional information. Or move on with your testing
of the product.</li>
</ul>
<li>If problem not listed:</li>
<ul>
<li>Go to the <a href="query.cgi">Bugzilla Query/Search</a>
page to try and locate a similar bug that has already been written.</li>
<li>If you find your bug in Bugzilla, feel free to comment with any new or
additional data you may have.</li>
<li>If you cannot find your problem already documented in Bugzilla, go to the
<a href="http://www.mozilla.org/quality/help/bug-form.html">Bugzilla Helper</a> and post a new bug.</li>
</ul>
</ul>
<br>
});
DefParam("mostfreqthreshold",
"The minimum number of duplicates a bug needs to show up on the <A HREF=\"duplicates.cgi\">most frequently reported bugs page</a>. If you have a large database and this page takes a long time to load, try increasing this number.",
"t",
"2");
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&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;email1=%userid%&amp;emailtype1=exact&amp;emailassigned_to1=1&amp;emailreporter1=1");
"buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=%userid%&emailtype1=exact&emailassigned_to1=1&emailreporter1=1");
DefParam("shutdownhtml",
"If this field is non-empty, then Bugzilla will be completely disabled and this text will be displayed instead of all the Bugzilla pages.",
"l",
@@ -330,7 +468,7 @@ You will get this message once a day until you've dealt with these bugs!
DefParam("defaultquery",
"This is the default query that initially comes up when you submit a bug. It's in URL parameter format, which makes it hard to read. Sorry!",
"t",
"bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emailqa_contact2=1&order=%22Importance%22");
"bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&order=%22Importance%22");
DefParam("letsubmitterchoosepriority",
@@ -401,43 +539,14 @@ DefParam("usedependencies",
1);
DefParam("webdotbase",
"It is possible to show graphs of dependent bugs. You may set this parameter to
any of the following:
<ul>
<li>A complete file path to \'dot\' (part of <a
href=\"http://www.graphviz.org\">GraphViz</a>) will generate the graphs
locally.</li>
<li>A URL prefix pointing to an installation of the <a
href=\"http://www.research.att.com/~north/cgi-bin/webdot.cgi\">webdot
package</a> will generate the graphs remotely.</li>
<li>A blank value will disable dependency graphing.</li>
</ul>
The default value is a publically-accessible webdot server.",
"This is the URL prefix that is common to all requests for webdot. The <a href=\"http://www.research.att.com/~north/cgi-bin/webdot.cgi\">webdot package</a> is a very swell thing that generates pictures of graphs. If you have an installation of bugsplat that hides behind a firewall, then to get graphs to work, you will have to install a copy of webdot behind your firewall, and change this path to match. Also, webdot has some trouble with software domain names, so you may have to play games and hack the %urlbase% part of this. If this all seems like too much trouble, you can set this paramater to be the empty string, which will cause the graphing feature to be disabled entirely.",
"t",
"http://www.research.att.com/~north/cgi-bin/webdot.cgi/%urlbase%",
\&check_webdotbase);
"http://www.research.att.com/~north/cgi-bin/webdot.cgi/%urlbase%");
sub check_webdotbase {
my ($value) = (@_);
$value = trim($value);
if ($value eq "") {
return "";
}
if($value !~ /^https?:/) {
if(! -x $value) {
return "The file path \"$value\" is not a valid executable. Please specify the complete file path to 'dot' if you intend to generate graphs locally.";
}
# Check .htaccess allows access to generated images
if(-e "data/webdot/.htaccess") {
open HTACCESS, "data/webdot/.htaccess";
if(! grep(/png/,<HTACCESS>)) {
print "Dependency graph images are not accessible.\nDelete data/webdot/.htaccess and re-run checksetup.pl to rectify.\n";
}
close HTACCESS;
}
}
return "";
}
DefParam("entryheaderhtml",
"This is a special header for the bug entry page. The text will be printed after the page header, before the bug entry form. It is meant to be a place to put pointers to intructions on how to enter bugs.",
"l",
'<A HREF="bugwritinghelp.html">Bug writing guidelines</A>');
DefParam("expectbigqueries",
"If this is on, then we will tell mysql to <tt>set option SQL_BIG_TABLES=1</tt> before doing queries on bugs. This will be a little slower, but one will not get the error <tt>The table ### is full</tt> for big queries that require a big temporary table.",
@@ -484,12 +593,6 @@ DefParam("allowbugdeletion",
0);
DefParam("allowemailchange",
q{Users can change their own email address through the preferences. Note that the change is validated by emailing both addresses, so switching this option on will not let users use an invalid address.},
"b",
0);
DefParam("allowuserdeletion",
q{The pages to edit users can also let you delete a user. But there is no code that goes and cleans up any references to that user in other tables, so such deletions are kinda scary. So, you have to turn on this option before any such deletions will ever happen.},
"b",

View File

@@ -19,12 +19,8 @@
# Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
# Bradley Baetz <bbaetz@student.usyd.edu.au>
use vars qw(
%FORM
$userid
);
use vars %::FORM;
use diagnostics;
use strict;
@@ -36,93 +32,120 @@ require "CGI.pl";
ConnectToDatabase();
GetVersionTable();
if (!defined $::FORM{'product'}) {
# Reference to a subset of %::proddesc, which the user is allowed to see
my %products;
quietly_check_login();
if (Param("usebuggroups")) {
# OK, now only add products the user can see
confirm_login();
foreach my $p (@::legal_product) {
if (!GroupExists($p) || UserInGroup($p)) {
$products{$p} = $::proddesc{$p};
}
}
}
else {
%products = %::proddesc;
}
######################################################################
# Begin Data/Security Validation
######################################################################
my $prodsize = scalar(keys %products);
if ($prodsize == 0) {
DisplayError("Either no products have been defined ".
"or you have not been given access to any.\n");
exit;
}
elsif ($prodsize > 1) {
$::vars->{'proddesc'} = \%products;
$::vars->{'target'} = "describecomponents.cgi";
$::vars->{'title'} = "Bugzilla component description";
$::vars->{'h2'} =
"Please specify the product whose components you want described.";
print "Content-type: text/html\n\n";
$::template->process("global/choose-product.html.tmpl", $::vars)
|| ThrowTemplateError($::template->error());
exit;
}
$::FORM{'product'} = (keys %::proddesc)[0];
# If this installation uses bug groups to restrict access to products,
# only show the user products that don't have their own bug group or
# those whose bug group the user is a member of. Otherwise, if this
# installation doesn't use bug groups, show the user all legal products.
my @products;
if ( Param("usebuggroups") ) {
@products = grep( !GroupExists($_) || UserInGroup($_) , @::legal_product );
} else {
@products = @::legal_product;
}
my $product = $::FORM{'product'};
if ( defined $::FORM{'product'} ) {
# Make sure the user specified a valid product name. Note that
# if the user specifies a valid product name but is not authorized
# to access that product, they will receive a different error message
# which could enable people guessing product names to determine
# whether or not certain products exist in Bugzilla, even if they
# cannot get any other information about that product.
grep( $::FORM{'product'} eq $_ , @::legal_product )
|| DisplayError("The product name is invalid.")
&& exit;
# Make sure the user specified a valid product name. Note that
# if the user specifies a valid product name but is not authorized
# to access that product, they will receive a different error message
# which could enable people guessing product names to determine
# whether or not certain products exist in Bugzilla, even if they
# cannot get any other information about that product.
grep($product eq $_ , @::legal_product)
|| DisplayError("The product name is invalid.")
&& exit;
# Make sure the user is authorized to access this product.
if (Param("usebuggroups") && GroupExists($product) && !$::userid) {
confirm_login();
UserInGroup($product)
# Make sure the user is authorized to access this product.
if ( Param("usebuggroups") && GroupExists($::FORM{'product'}) ) {
UserInGroup($::FORM{'product'})
|| DisplayError("You are not authorized to access that product.")
&& exit;
&& exit;
}
}
######################################################################
# End Data/Security Validation
######################################################################
my @components;
SendSQL("SELECT value, initialowner, initialqacontact, description FROM " .
"components WHERE program = " . SqlQuote($product) . " ORDER BY " .
"value");
while (MoreSQLData()) {
my ($name, $initialowner, $initialqacontact, $description) =
FetchSQLData();
print "Content-type: text/html\n\n";
my %component;
my $product = $::FORM{'product'};
if (!defined $product || lsearch(\@products, $product) < 0) {
$component{'name'} = $name;
$component{'initialowner'} = $initialowner ?
DBID_to_name($initialowner) : '';
$component{'initialqacontact'} = $initialqacontact ?
DBID_to_name($initialqacontact) : '';
$component{'description'} = $description;
push @components, \%component;
PutHeader("Bugzilla component description");
print "
<FORM>
Please specify the product whose components you want described.
<P>
Product: <SELECT NAME=product>
";
print make_options(\@products);
print "
</SELECT>
<P>
<INPUT TYPE=\"submit\" VALUE=\"Submit\">
</FORM>
";
PutFooter();
exit;
}
$::vars->{'product'} = $product;
$::vars->{'components'} = \@components;
print "Content-type: text/html\n\n";
$::template->process("reports/components.html.tmpl", $::vars)
|| ThrowTemplateError($::template->error());
PutHeader("Bugzilla component description", "Bugzilla component description",
$product);
print "
<TABLE>
<tr>
<th align=left>Component</th>
<th align=left>Default owner</th>
";
my $emailsuffix = Param("emailsuffix");
my $useqacontact = Param("useqacontact");
my $cols = 2;
if ($useqacontact) {
print "<th align=left>Default qa contact</th>";
$cols++;
}
my $colbut1 = $cols - 1;
print "</tr>";
SendSQL("select value, initialowner, initialqacontact, description from components where program = " . SqlQuote($product) . " order by value");
my @data;
while (MoreSQLData()) {
push @data, [FetchSQLData()];
}
foreach (@data) {
my ($component, $initialownerid, $initialqacontactid, $description) = @$_;
my ($initialowner, $initialqacontact) = ($initialownerid ? DBID_to_name ($initialownerid) : '',
$initialqacontactid ? DBID_to_name ($initialqacontactid) : '');
print qq|
<tr><td colspan=$cols><hr></td></tr>
<tr><td rowspan=2><a name="|
.value_quote($component).
qq|">$component</a></td>
<td><a href="mailto:$initialowner$emailsuffix">$initialowner</a></td>
|;
if ($useqacontact) {
print qq|
<td><a href="mailto:$initialqacontact$emailsuffix">$initialqacontact</a></td>
|;
}
print "</tr><tr><td colspan=$colbut1>$description</td></tr>\n";
}
print "<tr><td colspan=$cols><hr></td></tr></table>\n";
PutFooter();

View File

@@ -19,40 +19,74 @@
# Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
# Contributor(s): Gervase Markham <gerv@gerv.net>
use diagnostics;
use strict;
use lib ".";
use lib qw(.);
require "CGI.pl";
# Use the global template variables.
use vars qw($vars $template);
ConnectToDatabase();
print "Content-type: text/html\n\n";
PutHeader("Bugzilla keyword description");
my $tableheader = qq{
<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>
};
print $tableheader;
my $line_count = 0;
my $max_table_size = 50;
SendSQL("SELECT keyworddefs.name, keyworddefs.description,
COUNT(keywords.bug_id), keywords.bug_id
FROM keyworddefs LEFT JOIN keywords ON keyworddefs.id=keywords.keywordid
GROUP BY keyworddefs.id
ORDER BY keyworddefs.name");
while (MoreSQLData()) {
my ($name, $description, $bugs, $onebug) = FetchSQLData();
if ($bugs && $onebug) {
# This 'onebug' stuff is silly hackery for old versions of
# MySQL that seem to return a count() of 1 even if there are
# no matching. So, we ask for an actual bug number. If it
# can't find any bugs that match the keyword, then we set the
# count to be zero, ignoring what it had responded.
my $q = url_quote($name);
$bugs = qq{<A HREF="buglist.cgi?keywords=$q">$bugs</A>};
} else {
$bugs = "none";
}
if ($line_count == $max_table_size) {
print "</table>\n$tableheader";
$line_count = 0;
}
$line_count++;
print qq{
<TR>
<TH><a name="}
.value_quote($name).
qq{">$name</A></TH>
<TD>$description</TD>
<TD ALIGN="right">$bugs</TD>
</TR>
};
}
print "</TABLE><P>\n";
quietly_check_login();
SendSQL("SELECT keyworddefs.name, keyworddefs.description,
COUNT(keywords.bug_id)
FROM keyworddefs LEFT JOIN keywords ON keyworddefs.id=keywords.keywordid
GROUP BY keyworddefs.id, keyworddefs.name, keyworddefs.description, keywords.bug_id
ORDER BY keyworddefs.name");
my @keywords;
while (MoreSQLData()) {
my ($name, $description, $bugs) = FetchSQLData();
push (@keywords, { name => $name,
description => $description,
bugcount => $bugs });
if (UserInGroup("editkeywords")) {
print "<p><a href=editkeywords.cgi>Edit keywords</a><p>\n";
}
$vars->{'keywords'} = \@keywords;
$vars->{'caneditkeywords'} = UserInGroup("editkeywords");
print "Content-type: text/html\n\n";
$template->process("reports/keywords.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
PutFooter();

View File

@@ -62,19 +62,19 @@ rpms:
openjade
jadetex
docbook-dtds
docbook-dtd41-sgml
docbook-style-dsssl
docbook-dtd31-sgml
docbook-style-dsssl-doc
docbook-utils
xemacs
psgml
sgml-tools
sgml-common
Set up environment:
If you're getting these from RedHat, make sure you get the ones in the
rawhide area. The ones in the 7.2 distribution are too old and don't
include the XML stuff.
in your .bashrc add this line (after installing above RPMS):
export SGML_CATALOG_FILES=/etc/sgml/catalog
Download "ldp.dsl" from the Resources page on linuxdoc.org. This is the
stylesheet I use to get the HTML and text output. It works well, and has a
@@ -83,67 +83,59 @@ adjust the paths in ldp.dsl at the top of the file to reflect the actual
locations of your docbook catalog files. I created a directory,
/usr/share/sgml/docbook/ldp, and put the ldp.dsl file there. I then edited
ldp.dsl and changed two lines near the top:
<!ENTITY docbook.dsl SYSTEM "../dsssl-stylesheets/html/docbook.dsl" CDATA
<!ENTITY docbook.dsl SYSTEM "../dsssl-stylesheets-1.62/html/docbook.dsl" CDATA
dsssl>
...and...
<!ENTITY docbook.dsl SYSTEM "../dsssl-stylesheets/print/docbook.dsl" CDATA
<!ENTITY docbook.dsl SYSTEM "../dsssl-stylesheets-1.62/print/docbook.dsl" CDATA
dsssl>
Note the difference is the top one points to the HTML docbook stylesheet,
and the next one points to the PRINT docbook stylesheet.
You know, this sure looks awful involved. Anyway, once you have this in
You know, this sure looks awful involved. Anyway, once you have this in
place, add to your .bashrc:
export SGML_CATALOG_FILES=/etc/sgml/catalog
export LDP_HOME=/usr/share/sgml/docbook/ldp
export JADE_PUB=/usr/share/doc/openjade-1.3.1/pubtext
or in .tcshrc:
setenv SGML_CATALOG_FILES /etc/sgml/catalog
setenv LDP_HOME /usr/share/sgml/docbook/ldp
setenv JADE_PUB /usr/share/doc/openjade-1.3.1/pubtext
If you have root access and want to set this up for anyone on your box,
you can add those lines to /etc/profile for bash users and /etc/csh.login
for tcsh users.
Make sure you edit the paths in the above environment variables if those
folders are anywhere else on your system (for example, the openjade version
might change if you get a new version at some point).
I suggest xemacs for editing your SGML/XML Docbook documents. The darn
thing just works, and generally includes PSGML mode by default. Not to
mention you can validate the SGML from right within it without having to
remember the command-line syntax for nsgml (not that it's that hard
anyway). If not, you can download psgml at
http://www.sourceforge.net/projects/psgml.
thing just works, and generally includes PSGML mode by default. You can
download psgml at http://www.sourceforge.net/projects/psgml.
==========
NOTES:
==========
Here are the commands I use to maintain this documentation.
You MUST have DocBook 4.1.2 set up correctly in order for this to work.
You MUST have DocBook 4.1 set up correctly in order for this to work.
Substitute your own path to "ldp.dsl" for "$LDP_HOME". Additionally,
there is now a dependency on "xml.dcl" since we converted the Guide
to XML. Note that below, it is hard-coded to
/usr/share/doc/openjade-1.3/pubtext/xml.dcl. Modify it to point to
openjade's xml.dcl on your system.
To create HTML documentation:
bash$ cd html
bash$ jade -t sgml -i html -d $LDP_HOME/ldp.dsl\#html \
$JADE_PUB/xml.dcl ../sgml/Bugzilla-Guide.sgml
bash$ jade -t sgml -i html -d $LDP_HOME/ldp.dsl\#html \
/usr/share/doc/openjade-1.3/pubtext/xml.dcl ../sgml/Bugzilla-Guide.sgml
To create HTML documentation as a single big HTML file:
bash$ cd html
bash$ jade -V nochunks -t sgml -i html -d $LDP_HOME/ldp.dsl\#html \
$JADE_PUB/xml.dcl ../sgml/Bugzilla-Guide.sgml >Bugzilla-Guide.html
bash$ jade -V nochunks -t sgml -i html -d $LDP_HOME/ldp.dsl\#html \
/usr/share/doc/openjade-1.3/pubtext/xml.dcl ../sgml/Bugzilla-Guide.sgml
To create TXT documentation as a single big TXT file:
bash$ cd txt
bash$ lynx -dump -nolist ../html/Bugzilla-Guide.html >Bugzilla-Guide.txt
## Change for XML
There's a small change in how you use Jade now that we've converted the
Bugzilla Guide to XML from SGML. Now call Jade this way to compile HTML
documentation:
(I need to remove the hard-coded path to xml.dcl for openjade)
Sincerely,
Matthew P. Barnson
The Bugzilla "Doc Knight"
mbarnson@sisna.com
with major edits by Dave Miller <justdave@syndicomm.com> based on
experience setting this up on the Landfill test server.
barnboy@trilobyte.net

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
>About This Guide</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -25,7 +25,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -43,7 +42,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="index.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -57,7 +55,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="aboutthisguide.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -69,7 +66,9 @@ WIDTH="100%"></DIV
CLASS="chapter"
><H1
><A
NAME="about">Chapter 1. About This Guide</H1
NAME="about"
>Chapter 1. About This Guide</A
></H1
><DIV
CLASS="TOC"
><DL
@@ -104,11 +103,21 @@ HREF="credits.html"
></DT
><DT
>1.6. <A
HREF="contributors.html"
>Contributors</A
></DT
><DT
>1.7. <A
HREF="feedback.html"
>Feedback</A
></DT
><DT
>1.8. <A
HREF="translations.html"
>Translations</A
></DT
><DT
>1.7. <A
>1.9. <A
HREF="conventions.html"
>Document Conventions</A
></DT
@@ -120,7 +129,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -132,7 +140,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -141,7 +148,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -150,7 +156,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="aboutthisguide.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

View File

@@ -4,7 +4,7 @@
>Purpose and Scope of this Guide</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="about.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="copyright.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,16 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="aboutthisguide">1.1. Purpose and Scope of this Guide</H1
NAME="aboutthisguide"
>1.1. Purpose and Scope of this Guide</A
></H1
><P
>&#13; This document was started on September 17, 2000 by Matthew P.
Barnson after a great deal of procrastination updating the
Bugzilla FAQ, which I left untouched for nearly half a year.
After numerous complete rewrites and reformatting, it is the
document you see today.
</P
><P
>&#13; Bugzilla is simply the best piece of bug-tracking software the
world has ever seen. This document is intended to be the
@@ -83,7 +89,7 @@ NAME="aboutthisguide">1.1. Purpose and Scope of this Guide</H1
><P
>&#13; This release of the Bugzilla Guide is the
<EM
>2.16</EM
>2.14</EM
> release. It is so named that it
may match the current version of Bugzilla. The numbering
tradition stems from that used for many free software projects,
@@ -105,24 +111,37 @@ NAME="aboutthisguide">1.1. Purpose and Scope of this Guide</H1
>&#13; Newer revisions of the Bugzilla Guide follow the numbering
conventions of the main-tree Bugzilla releases, available at
<A
HREF="http://www.bugzilla.org/"
HREF="http://www.mozilla.org/projects/bugzilla"
TARGET="_top"
>http://www.bugzilla.org/</A
>http://www.mozilla.org/projects/bugzilla</A
>. Intermediate releases will have
a minor revision number following a period. The current version
of Bugzilla, as of this writing (April 2nd, 2002) is 2.16; if
of Bugzilla, as of this writing (August 10, 2001) is 2.14; if
something were seriously wrong with that edition of the Guide,
subsequent releases would receive an additional dotted-decimal
digit to indicate the update (2.16.1, 2.16.2, etc.).
digit to indicate the update (2.14.1, 2.14.2, etc.).
Got it? Good.
</P
><P
>&#13; I wrote this in response to the enormous demand for decent
Bugzilla documentation. I have incorporated instructions from
the Bugzilla README, Frequently Asked Questions, Database Schema
Document, and various mailing lists to create it. Chances are,
there are glaring errors in this documentation; please contact
<TT
CLASS="email"
>&#60;<A
HREF="mailto:barnboy@trilobyte.net"
>barnboy@trilobyte.net</A
>&#62;</TT
> to correct them.
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -134,7 +153,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -143,7 +161,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -152,7 +169,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="copyright.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -168,7 +184,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Administering Bugzilla</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -25,7 +25,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -43,7 +42,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="win32.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -57,7 +55,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="postinstall-check.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -69,7 +66,9 @@ WIDTH="100%"></DIV
CLASS="chapter"
><H1
><A
NAME="administration">Chapter 4. Administering Bugzilla</H1
NAME="administration"
>Chapter 4. Administering Bugzilla</A
></H1
><DIV
CLASS="TOC"
><DL
@@ -99,6 +98,30 @@ HREF="useradmin.html#defaultuser"
HREF="useradmin.html#manageusers"
>Managing Other Users</A
></DT
><DD
><DL
><DT
>4.2.2.1. <A
HREF="useradmin.html#login"
>Logging In</A
></DT
><DT
>4.2.2.2. <A
HREF="useradmin.html#createnewusers"
>Creating new users</A
></DT
><DT
>4.2.2.3. <A
HREF="useradmin.html#disableusers"
>Disabling Users</A
></DT
><DT
>4.2.2.4. <A
HREF="useradmin.html#modifyusers"
>Modifying Users</A
></DT
></DL
></DD
></DL
></DD
><DT
@@ -175,7 +198,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -187,7 +209,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="win32.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -196,7 +217,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -205,7 +225,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="postinstall-check.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

View File

@@ -4,7 +4,7 @@
>Bonsai</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="integration.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="cvs.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="bonsai">5.1. Bonsai</H1
NAME="bonsai"
>5.1. Bonsai</A
></H1
><P
>Bonsai is a web-based tool for managing <A
HREF="cvs.html"
@@ -98,7 +97,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -110,7 +108,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="integration.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -119,7 +116,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -128,7 +124,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="cvs.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -144,7 +139,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="integration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>BSD Installation Notes</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="osx.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="geninstall.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="bsdinstall">3.4. BSD Installation Notes</H1
NAME="bsdinstall"
>3.4. BSD Installation Notes</A
></H1
><P
>&#13; For instructions on how to set up Bugzilla on FreeBSD, NetBSD, OpenBSD, BSDi, etc. please
consult <A
@@ -87,7 +86,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -99,7 +97,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="osx.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -108,7 +105,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -117,7 +113,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="geninstall.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -133,7 +128,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Hacking Bugzilla</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="quicksearch.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="bzhacking">D.5. Hacking Bugzilla</H1
NAME="bzhacking"
>D.5. Hacking Bugzilla</A
></H1
><P
>&#13; The following is a guide for reviewers when checking code into Bugzilla's
CVS repostory at mozilla.org. If you wish to submit patches to Bugzilla,
@@ -86,7 +85,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN2436">D.5.1. Things that have caused problems and should be avoided</H2
NAME="AEN2504"
>D.5.1. Things that have caused problems and should be avoided</A
></H2
><P
></P
><OL
@@ -180,7 +181,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN2450">D.5.2. Coding Style for Bugzilla</H2
NAME="AEN2518"
>D.5.2. Coding Style for Bugzilla</A
></H2
><P
>&#13; While it's true that not all of the code currently in Bugzilla adheres to
this (or any) styleguide, it is something that is being worked toward. Therefore,
@@ -214,7 +217,7 @@ CLASS="command"
>&#13; Whitespace
</P
><P
>&#13; Bugzilla's preferred indentation is 4 spaces (no tabs, please).
>&#13; Bugzilla's prefered indentation is 4 spaces (no tabs, please).
</P
></LI
><LI
@@ -430,7 +433,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -442,7 +444,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="quicksearch.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -451,7 +452,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -460,7 +460,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -476,7 +475,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="patches.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Command-line Bugzilla Queries</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="setperl.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="quicksearch.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="cmdline">D.3. Command-line Bugzilla Queries</H1
NAME="cmdline"
>D.3. Command-line Bugzilla Queries</A
></H1
><P
>&#13; Users can query Bugzilla from the command line using this suite
of utilities.
@@ -207,7 +206,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -219,7 +217,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="setperl.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -228,7 +225,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -237,7 +233,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="quicksearch.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -253,7 +248,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="patches.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Contributors</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="credits.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="feedback.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="contributors">1.6. Contributors</H1
NAME="contributors"
>1.6. Contributors</A
></H1
><P
>&#13; Thanks go to these people for significant contributions to this
documentation (in no particular order):
@@ -88,7 +87,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -100,7 +98,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="credits.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -109,7 +106,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -118,7 +114,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="feedback.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -134,7 +129,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Document Conventions</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="translations.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="using.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,14 +70,18 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="conventions">1.7. Document Conventions</H1
NAME="conventions"
>1.9. Document Conventions</A
></H1
><P
>&#13; This document uses the following conventions
</P
><DIV
CLASS="informaltable"
><A
NAME="AEN91"><P
NAME="AEN129"
></A
><P
></P
><TABLE
BORDER="0"
@@ -127,7 +128,7 @@ ALT="Caution"></TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Don't run with scissors!</P
>Warnings.</P
></TD
></TR
></TABLE
@@ -163,7 +164,7 @@ ALT="Tip"></TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Warm jar lids under the hot tap to loosen them.</P
>Hint.</P
></TD
></TR
></TABLE
@@ -199,7 +200,7 @@ ALT="Note"></TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Dear John...</P
>Note.</P
></TD
></TR
></TABLE
@@ -235,7 +236,7 @@ ALT="Warning"></TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Read this or the cat gets it.</P
>Warning.</P
></TD
></TR
></TABLE
@@ -400,7 +401,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -412,7 +412,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="translations.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -421,7 +420,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -430,7 +428,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="using.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -446,7 +443,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Copyright Information</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="aboutthisguide.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="disclaimer.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,9 +70,13 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="copyright">1.2. Copyright Information</H1
NAME="copyright"
>1.2. Copyright Information</A
></H1
><A
NAME="AEN39"><TABLE
NAME="AEN70"
></A
><TABLE
BORDER="0"
WIDTH="100%"
CELLSPACING="0"
@@ -96,7 +97,7 @@ VALIGN="TOP"
Free Software Foundation; with no Invariant Sections, no
Front-Cover Texts, and with no Back-Cover Texts. A copy of
the license is included in the section entitled "GNU Free
Documentation License".
Documentation LIcense".
</P
></TD
><TD
@@ -111,7 +112,7 @@ ALIGN="RIGHT"
VALIGN="TOP"
>--<SPAN
CLASS="attribution"
>Copyright (c) 2000-2002 Matthew P. Barnson and The Bugzilla Team</SPAN
>Copyright (c) 2000-2001 Matthew P. Barnson</SPAN
></TD
><TD
WIDTH="10%"
@@ -121,7 +122,7 @@ WIDTH="10%"
><P
>&#13; If you have any questions regarding this document, its
copyright, or publishing this document in non-electronic form,
please contact The Bugzilla Team.
please contact Matthew P. Barnson.
</P
></DIV
><DIV
@@ -129,7 +130,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -141,7 +141,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="aboutthisguide.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -150,7 +149,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -159,7 +157,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="disclaimer.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -175,7 +172,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Credits</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -16,8 +16,8 @@ REL="PREVIOUS"
TITLE="New Versions"
HREF="newversions.html"><LINK
REL="NEXT"
TITLE="Translations"
HREF="translations.html"></HEAD
TITLE="Contributors"
HREF="contributors.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="newversions.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -59,8 +57,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="translations.html"
ACCESSKEY="N"
HREF="contributors.html"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="credits">1.5. Credits</H1
NAME="credits"
>1.5. Credits</A
></H1
><P
>&#13; The people listed below have made enormous contributions to the
creation of this Guide, through their dedicated hacking efforts,
@@ -82,14 +81,6 @@ NAME="credits">1.5. Credits</H1
</P
><P
>&#13; <A
HREF="mailto://mbarnson@sisna.com"
TARGET="_top"
>Matthew P. Barnson</A
>
for pulling together the Bugzilla Guide and shepherding it to 2.14.
</P
><P
>&#13; <A
HREF="mailto://terry@mozilla.org"
TARGET="_top"
>Terry Weissman</A
@@ -132,21 +123,12 @@ TARGET="_top"
> netscape.public.mozilla.webtools</A
> newsgroup. Without your discussions, insight, suggestions, and patches, this could never have happened.
</P
><P
>&#13; Thanks also go to the following people for significant contributions
to this documentation (in no particular order):
</P
><P
>&#13; Zach Liption, Andrew Pearson, Spencer Smith, Eric Hanson, Kevin Brannen,
Ron Teitelbaum, Jacob Steenhagen, Joe Robins.
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -158,7 +140,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="newversions.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -167,7 +148,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -175,8 +155,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="translations.html"
ACCESSKEY="N"
HREF="contributors.html"
>Next</A
></TD
></TR
@@ -192,14 +171,13 @@ ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Translations</TD
>Contributors</TD
></TR
></TABLE
></DIV

View File

@@ -1,306 +0,0 @@
<HTML
><HEAD
><TITLE
>Template Customisation</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="Administering Bugzilla"
HREF="administration.html"><LINK
REL="PREVIOUS"
TITLE="Bugzilla Security"
HREF="security.html"><LINK
REL="NEXT"
TITLE="Integrating Bugzilla with Third-Party Tools"
HREF="integration.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="security.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 5. Administering Bugzilla</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="integration.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="cust-templates">5.7. Template Customisation</H1
><P
>&#13; One of the large changes for 2.16 was the templatisation of the
entire user-facing UI, using the
<A
HREF="http://www.template-toolkit.org"
TARGET="_top"
>Template Toolkit</A
>.
Administrators can now configure the look and feel of Bugzilla without
having to edit Perl files or face the nightmare of massive merge
conflicts when they upgrade to a newer version in the future.
</P
><P
>&#13; Templatisation also makes localised versions of Bugzilla possible,
for the first time. In the future, a Bugzilla installation may
have templates installed for multiple localisations, and select
which ones to use based on the user's browser language setting.
</P
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN1611">5.7.1. What to Edit</H2
><P
>&#13; There are several ways to take advantage of Bugzilla's templates,
and which you use depends on what you want to do. The Bugzilla
template directory structure is that there's a top level directory,
<TT
CLASS="filename"
>template</TT
>, which contains a directory for
each installed localisation. The default English templates are
therefore in <TT
CLASS="filename"
>en</TT
>. Underneath that, there
are two directories - <TT
CLASS="filename"
>default</TT
> and
<TT
CLASS="filename"
>custom</TT
>. The <TT
CLASS="filename"
>default</TT
>
directory contains all the templates shipped with Bugzilla.
</P
><P
>&#13; One method of making customisations is to directly edit the templates
in <TT
CLASS="filename"
>template/en/default</TT
>. This is probably the
best method for small changes, because if you then execute a
<B
CLASS="command"
>cvs update</B
>, any template fixes will get
automagically merged into your modified versions.
</P
><P
>&#13; The other method is to copy the templates into
<TT
CLASS="filename"
>template/en/custom</TT
>. This method is better if
you are going to make major changes, because it is guaranteed that
the contents of this directory will not be touched during an upgrade,
and you can then decide whether to continue using your own templates,
or make the effort to merge your changes into the new versions by
hand.
</P
><P
>&#13; The syntax of the Template Toolkit language is beyond the scope of
this guide. It's reasonably easy to pick up by looking at the current
templates; or, you can read the manual, available on the
<A
HREF="http://www.template-toolkit.org"
TARGET="_top"
>Template Toolkit home
page </A
>.
</P
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN1626">5.7.2. Particular Templates</H2
><P
>&#13; There are a few templates you may be particularly interested in
customising for your installation.
</P
><P
>&#13; <B
CLASS="command"
>global/header.html.tmpl</B
> and
<B
CLASS="command"
>global/footer.html.tmpl</B
>:
These define the header and footer that go on all Bugzilla pages.
Editing these is a way to quickly get a distinctive look and
feel for your Bugzilla installation.
</P
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN1632">5.7.3. Template Formats</H2
><P
>&#13; Some CGIs have the ability to use more than one template. For
example, buglist.cgi can output bug lists as RDF or two
different forms of HTML (complex and simple). (Try this out
by appending <TT
CLASS="filename"
>&#38;format=simple</TT
> to a buglist.cgi
URL on your Bugzilla installation.) This
mechanism, called template 'formats', is extensible.
</P
><P
>&#13; To see if a CGI supports multiple output formats, grep the
CGI for "ValidateOutputFormat". If it's not present, adding
multiple format support isn't too hard - see how it's done in
other CGIs.
</P
><P
>&#13; To make a new format template for a CGI which supports this,
open a current template for
that CGI and take note of the INTERFACE comment (if present.) This
comment defines what variables are passed into this template. If
there isn't one, I'm afraid you'll have to read the template and
the code to find out what information you get.
</P
><P
>&#13; Write your template in whatever markup or text style is appropriate.
</P
><P
>&#13; You now need to decide what content type you want your template
served as. Open up the localconfig file and find the $contenttypes
variable. If your content type is not there, add it. Remember
the three- or four-letter tag assigned to you content type.
This tag will be part of the template filename.
</P
><P
>&#13; Save the template as <TT
CLASS="filename"
>&#60;stubname&#62;-&#60;formatname&#62;.&#60;contenttypetag&#62;.tmpl</TT
>.
Try out the template by calling the CGI as
<TT
CLASS="filename"
>&#60;cginame&#62;.cgi?format=&#60;formatname&#62;</TT
> .
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="security.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="integration.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Bugzilla Security</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="administration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Integrating Bugzilla with Third-Party Tools</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -4,7 +4,7 @@
>CVS</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="bonsai.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="scm.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="cvs">5.2. CVS</H1
NAME="cvs"
>5.2. CVS</A
></H1
><P
>CVS integration is best accomplished, at this point, using
the Bugzilla Email Gateway. There have been some files
@@ -112,7 +111,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -124,7 +122,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="bonsai.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -133,7 +130,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -142,7 +138,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="scm.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -158,7 +153,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="integration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>The Bugzilla Database</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -25,7 +25,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -43,7 +42,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="downloadlinks.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -57,7 +55,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="dbschema.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -69,7 +66,9 @@ WIDTH="100%"></DIV
CLASS="appendix"
><H1
><A
NAME="database">Appendix C. The Bugzilla Database</H1
NAME="database"
>Appendix C. The Bugzilla Database</A
></H1
><DIV
CLASS="TOC"
><DL
@@ -127,7 +126,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -139,7 +137,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="downloadlinks.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -148,7 +145,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -157,7 +153,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="dbschema.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

View File

@@ -4,7 +4,7 @@
>MySQL Bugzilla Database Introduction</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="dbschema.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="granttables.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="dbdoc">C.2. MySQL Bugzilla Database Introduction</H1
NAME="dbdoc"
>C.2. MySQL Bugzilla Database Introduction</A
></H1
><P
>&#13; This information comes straight from my life. I was forced to learn how
Bugzilla organizes database because of nitpicky requests from users for tiny
@@ -138,7 +137,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN2272">C.2.1. Bugzilla Database Basics</H2
NAME="AEN2340"
>C.2.1. Bugzilla Database Basics</A
></H2
><P
>&#13; If you were like me, at this point you're totally clueless
about the internals of MySQL, and if it weren't for this
@@ -259,7 +260,9 @@ CLASS="section"
><H3
CLASS="section"
><A
NAME="AEN2301">C.2.1.1. Bugzilla Database Tables</H3
NAME="AEN2369"
>C.2.1.1. Bugzilla Database Tables</A
></H3
><P
> Imagine your MySQL database as a series of
spreadsheets, and you won't be too far off. If you use this
@@ -514,7 +517,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -526,7 +528,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="dbschema.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -535,7 +536,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -544,7 +544,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="granttables.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -560,7 +559,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="database.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Database Schema Chart</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="database.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="dbdoc.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,13 +70,18 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="dbschema">C.1. Database Schema Chart</H1
NAME="dbschema"
>C.1. Database Schema Chart</A
></H1
><P
>&#13; <DIV
CLASS="mediaobject"
><P
><IMG
SRC="../images/dbschema.jpg"><DIV
SRC="../images/dbschema.jpg"
ALT="Database Relationships"
></IMG
><DIV
CLASS="caption"
><P
>Bugzilla database relationships chart</P
@@ -94,7 +96,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -106,7 +107,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="database.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -115,7 +115,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -124,7 +123,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="dbdoc.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -140,7 +138,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="database.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Disclaimer</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="copyright.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="newversions.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="disclaimer">1.3. Disclaimer</H1
NAME="disclaimer"
>1.3. Disclaimer</A
></H1
><P
>&#13; No liability for the contents of this document can be accepted.
Use the concepts, examples, and other content at your own risk.
@@ -92,7 +91,7 @@ NAME="disclaimer">1.3. Disclaimer</H1
</P
><P
>&#13; Naming of particular products or brands should not be seen as
endorsements, with the exception of the term "GNU/Linux". We
endorsements, with the exception of the term "GNU/Linux". I
wholeheartedly endorse the use of GNU/Linux in every situation
where it is appropriate. It is an extremely versatile, stable,
and robust operating system that offers an ideal operating
@@ -101,7 +100,8 @@ NAME="disclaimer">1.3. Disclaimer</H1
><P
>&#13; You are strongly recommended to make a backup of your system
before installing Bugzilla and at regular intervals thereafter.
If you implement any suggestion in this Guide, implement this one!
Heaven knows it's saved my bacon time after time; if you
implement any suggestion in this Guide, implement this one!
</P
><P
>&#13; Although the Bugzilla development team has taken great care to
@@ -122,7 +122,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -134,7 +133,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="copyright.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -143,7 +141,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -152,7 +149,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="newversions.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -168,7 +164,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Software Download Links</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -25,7 +25,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -43,7 +42,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="faq.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -57,7 +55,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="database.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -69,7 +66,9 @@ WIDTH="100%"></DIV
CLASS="appendix"
><H1
><A
NAME="downloadlinks">Appendix B. Software Download Links</H1
NAME="downloadlinks"
>Appendix B. Software Download Links</A
></H1
><P
>&#13; All of these sites are current as of April, 2001. Hopefully
they'll stay current for a while.
@@ -179,7 +178,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -191,7 +189,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="faq.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -200,7 +197,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -209,7 +205,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="database.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

View File

@@ -4,7 +4,7 @@
>ERRATA</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="installation.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="stepbystep.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="errata">3.1. ERRATA</H1
NAME="errata"
>3.1. ERRATA</A
></H1
><P
>Here are some miscellaneous notes about possible issues you
main run into when you begin your Bugzilla installation.
@@ -127,7 +126,7 @@ CLASS="filename"
></TR
><TR
><TD
>&#13; Release Notes for Bugzilla 2.16 are available at
>&#13; Release Notes for Bugzilla 2.14 are available at
<TT
CLASS="filename"
>docs/rel_notes.txt</TT
@@ -217,7 +216,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -229,7 +227,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -238,7 +235,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -247,7 +243,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="stepbystep.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -263,7 +258,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -1,390 +0,0 @@
<HTML
><HEAD
><TITLE
>Optional Additional Configuration</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="Installation"
HREF="installation.html"><LINK
REL="PREVIOUS"
TITLE="Step-by-step Install"
HREF="stepbystep.html"><LINK
REL="NEXT"
TITLE="Win32 Installation Notes"
HREF="win32.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="stepbystep.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 4. Installation</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="win32.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="extraconfig">4.2. Optional Additional Configuration</H1
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN836">4.2.1. Dependency Charts</H2
><P
>As well as the text-based dependency graphs, Bugzilla also
supports dependency graphing, using a package called 'dot'.
Exactly how this works is controlled by the 'webdotbase' parameter.
</P
><P
>(To be written...</P
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN840">4.2.2. Bug Graphs</H2
><P
>As long as you installed the GD and Graph::Base Perl modules you
might as well turn on the nifty Bugzilla bug reporting graphs.</P
><P
>Add a cron entry like this to run
<TT
CLASS="filename"
>collectstats.pl</TT
>
daily at 5 after midnight:
<P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
>&#13; <TT
CLASS="computeroutput"
>&#13; <TT
CLASS="prompt"
>bash#</TT
>
<B
CLASS="command"
>crontab -e</B
>
</TT
>
</TD
></TR
><TR
><TD
>&#13; <TT
CLASS="computeroutput"
>5 0 * * * cd &#60;your-bugzilla-directory&#62; ;
./collectstats.pl</TT
>
</TD
></TR
></TBODY
></TABLE
><P
></P
>
</P
><P
>After two days have passed you'll be able to view bug graphs from
the Bug Reports page.</P
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN853">4.2.3. The Whining Cron</H2
><P
>By now you have a fully functional Bugzilla, but what good are
bugs if they're not annoying? To help make those bugs more annoying you
can set up Bugzilla's automatic whining system to complain at engineers
which leave their bugs in the NEW state without triaging them.
</P
><P
>&#13; This can be done by
adding the following command as a daily crontab entry (for help on that
see that crontab man page):
<P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
>&#13; <TT
CLASS="computeroutput"
>&#13; <B
CLASS="command"
>cd &#60;your-bugzilla-directory&#62; ;
./whineatnews.pl</B
>
</TT
>
</TD
></TR
></TBODY
></TABLE
><P
></P
>
</P
><DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Depending on your system, crontab may have several manpages.
The following command should lead you to the most useful page for
this purpose:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>man 5 crontab</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="bzldap">4.2.4. LDAP Authentication</H2
><P
>&#13; <DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>This information on using the LDAP
authentication options with Bugzilla is old, and the authors do
not know of anyone who has tested it. Approach with caution.
</P
></TD
></TR
></TABLE
></DIV
>
</P
><P
>&#13; The existing authentication
scheme for Bugzilla uses email addresses as the primary user ID, and a
password to authenticate that user. All places within Bugzilla where
you need to deal with user ID (e.g assigning a bug) use the email
address. The LDAP authentication builds on top of this scheme, rather
than replacing it. The initial log in is done with a username and
password for the LDAP directory. This then fetches the email address
from LDAP and authenticates seamlessly in the standard Bugzilla
authentication scheme using this email address. If an account for this
address already exists in your Bugzilla system, it will log in to that
account. If no account for that email address exists, one is created at
the time of login. (In this case, Bugzilla will attempt to use the
"displayName" or "cn" attribute to determine the user's full name.)
After authentication, all other user-related tasks are still handled by
email address, not LDAP username. You still assign bugs by email
address, query on users by email address, etc.
</P
><P
>Using LDAP for Bugzilla authentication requires the
Mozilla::LDAP (aka PerLDAP) Perl module. The
Mozilla::LDAP module in turn requires Netscape's Directory SDK for C.
After you have installed the SDK, then install the PerLDAP module.
Mozilla::LDAP and the Directory SDK for C are both
<A
HREF="http://www.mozilla.org/directory/"
TARGET="_top"
>available for
download</A
> from mozilla.org.
</P
><P
>&#13; Set the Param 'useLDAP' to "On" **only** if you will be using an LDAP
directory for
authentication. Be very careful when setting up this parameter; if you
set LDAP authentication, but do not have a valid LDAP directory set up,
you will not be able to log back in to Bugzilla once you log out. (If
this happens, you can get back in by manually editing the data/params
file, and setting useLDAP back to 0.)
</P
><P
>If using LDAP, you must set the
three additional parameters: Set LDAPserver to the name (and optionally
port) of your LDAP server. If no port is specified, it defaults to the
default port of 389. (e.g "ldap.mycompany.com" or
"ldap.mycompany.com:1234") Set LDAPBaseDN to the base DN for searching
for users in your LDAP directory. (e.g. "ou=People,o=MyCompany") uids
must be unique under the DN specified here. Set LDAPmailattribute to
the name of the attribute in your LDAP directory which contains the
primary email address. On most directory servers available, this is
"mail", but you may need to change this.
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="stepbystep.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="win32.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Step-by-step Install</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Win32 Installation Notes</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
>Feedback</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="contributors.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="translations.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="feedback">1.7. Feedback</H1
NAME="feedback"
>1.7. Feedback</A
></H1
><P
>&#13; I welcome feedback on this document. Without your submissions
and input, this Guide cannot continue to exist. Please mail
@@ -99,7 +98,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -111,7 +109,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="contributors.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -120,7 +117,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -129,7 +125,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="translations.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -145,7 +140,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -0,0 +1,741 @@
<HTML
><HEAD
><TITLE
>The Future of Bugzilla</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Tinderbox/Tinderbox2"
HREF="tinderbox.html"><LINK
REL="NEXT"
TITLE="Bugzilla Variants and Competitors"
HREF="variants.html"></HEAD
><BODY
CLASS="chapter"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="tinderbox.html"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="variants.html"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="chapter"
><H1
><A
NAME="future"
>Chapter 6. The Future of Bugzilla</A
></H1
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="synopsis"
>Bugzilla's Future. Much of this is the present, now.</PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13; Bugzilla's future is a constantly-changing thing, as various developers
<SPAN
CLASS="QUOTE"
>"scratch an itch"</SPAN
> when it comes to functionality.
Thus this section is very malleable, subject to change without notice, etc.
You'll probably also notice the lack of formatting. I apologize that it's
not quite as readable as the rest of the Guide.
</P
><P
>&#13; <P
CLASS="literallayout"
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bugzilla&nbsp;Blue&nbsp;Sky<br>
<br>
Customisability<br>
<br>
&nbsp;&nbsp;&nbsp;One&nbsp;of&nbsp;the&nbsp;major&nbsp;stumbling&nbsp;blocks&nbsp;of&nbsp;Bugzilla&nbsp;has&nbsp;been&nbsp;that&nbsp;it&nbsp;is&nbsp;too<br>
&nbsp;&nbsp;&nbsp;rigid&nbsp;and&nbsp;does&nbsp;not&nbsp;adapt&nbsp;itself&nbsp;well&nbsp;enough&nbsp;to&nbsp;the&nbsp;needs&nbsp;of&nbsp;an<br>
&nbsp;&nbsp;&nbsp;organisation.&nbsp;&nbsp;This&nbsp;has&nbsp;led&nbsp;to&nbsp;organisations&nbsp;making&nbsp;changes&nbsp;to&nbsp;the<br>
&nbsp;&nbsp;&nbsp;Bugzilla&nbsp;code&nbsp;that&nbsp;need&nbsp;to&nbsp;be&nbsp;redone&nbsp;each&nbsp;new&nbsp;version&nbsp;of&nbsp;Bugzilla.<br>
&nbsp;&nbsp;&nbsp;Bugzilla&nbsp;should&nbsp;attempt&nbsp;to&nbsp;move&nbsp;away&nbsp;from&nbsp;this&nbsp;to&nbsp;a&nbsp;world&nbsp;where&nbsp;this<br>
&nbsp;&nbsp;&nbsp;doesn't&nbsp;need&nbsp;to&nbsp;occur.<br>
<br>
&nbsp;&nbsp;&nbsp;Most&nbsp;of&nbsp;the&nbsp;subsections&nbsp;in&nbsp;this&nbsp;section&nbsp;are&nbsp;currently&nbsp;explicit&nbsp;design<br>
&nbsp;&nbsp;&nbsp;goals&nbsp;for&nbsp;the&nbsp;"Bugzilla&nbsp;3"&nbsp;rewrite.&nbsp;&nbsp;This&nbsp;does&nbsp;not&nbsp;necessarily&nbsp;mean<br>
&nbsp;&nbsp;&nbsp;that&nbsp;they&nbsp;will&nbsp;not&nbsp;occur&nbsp;before&nbsp;them&nbsp;in&nbsp;Bugzilla&nbsp;2,&nbsp;but&nbsp;most&nbsp;are<br>
&nbsp;&nbsp;&nbsp;significant&nbsp;undertakings.<br>
<br>
&nbsp;&nbsp;Field&nbsp;Customisation<br>
<br>
&nbsp;&nbsp;&nbsp;Many&nbsp;installations&nbsp;wish&nbsp;to&nbsp;customise&nbsp;the&nbsp;fields&nbsp;that&nbsp;appear&nbsp;on&nbsp;bug<br>
&nbsp;&nbsp;&nbsp;reports.&nbsp;&nbsp;&nbsp;Current&nbsp;versions&nbsp;of&nbsp;Bugzilla&nbsp;offer&nbsp;limited<br>
&nbsp;&nbsp;&nbsp;customisability.&nbsp;&nbsp;In&nbsp;particular,&nbsp;some&nbsp;fields&nbsp;can&nbsp;be&nbsp;turned&nbsp;off.<br>
<br>
&nbsp;&nbsp;&nbsp;However,&nbsp;many&nbsp;administrators&nbsp;wish&nbsp;to&nbsp;add&nbsp;their&nbsp;own&nbsp;fields,&nbsp;and&nbsp;rename<br>
&nbsp;&nbsp;&nbsp;or&nbsp;otherwise&nbsp;modify&nbsp;existing&nbsp;fields.&nbsp;&nbsp;An&nbsp;architecture&nbsp;that&nbsp;supports<br>
&nbsp;&nbsp;&nbsp;this&nbsp;would&nbsp;be&nbsp;extraordinarily&nbsp;useful.<br>
<br>
&nbsp;&nbsp;&nbsp;Indeed,&nbsp;many&nbsp;fields&nbsp;work&nbsp;similarly&nbsp;and&nbsp;could&nbsp;be&nbsp;abstracted&nbsp;into&nbsp;"field<br>
&nbsp;&nbsp;&nbsp;types",&nbsp;so&nbsp;that&nbsp;an&nbsp;administrator&nbsp;need&nbsp;write&nbsp;little&nbsp;or&nbsp;no&nbsp;code&nbsp;to<br>
&nbsp;&nbsp;&nbsp;support&nbsp;the&nbsp;new&nbsp;fields&nbsp;they&nbsp;desire.<br>
<br>
&nbsp;&nbsp;&nbsp;Possible&nbsp;field&nbsp;types&nbsp;include&nbsp;text&nbsp;(eg&nbsp;status&nbsp;whiteboard),&nbsp;numbers,<br>
&nbsp;&nbsp;&nbsp;dates&nbsp;(eg&nbsp;report&nbsp;time),&nbsp;accounts&nbsp;(eg&nbsp;reporter,&nbsp;qa,&nbsp;cc),&nbsp;inter-bug<br>
&nbsp;&nbsp;&nbsp;relationships&nbsp;(dependencies,&nbsp;duplicates),&nbsp;option&nbsp;groups&nbsp;(platform,&nbsp;os,<br>
&nbsp;&nbsp;&nbsp;severity,&nbsp;priority,&nbsp;target&nbsp;milestone,&nbsp;version)&nbsp;etc.<br>
<br>
&nbsp;&nbsp;&nbsp;Ideally&nbsp;an&nbsp;administrator&nbsp;could&nbsp;configure&nbsp;their&nbsp;fields&nbsp;through&nbsp;a<br>
&nbsp;&nbsp;&nbsp;Bugzilla&nbsp;interface&nbsp;that&nbsp;requires&nbsp;no&nbsp;code&nbsp;to&nbsp;be&nbsp;added.&nbsp;&nbsp;However,&nbsp;it&nbsp;is<br>
&nbsp;&nbsp;&nbsp;highly&nbsp;unlikely&nbsp;this&nbsp;ideal&nbsp;will&nbsp;never&nbsp;be&nbsp;met,&nbsp;and&nbsp;in&nbsp;a&nbsp;similar&nbsp;way<br>
&nbsp;&nbsp;&nbsp;that&nbsp;office&nbsp;applications&nbsp;have&nbsp;scripting&nbsp;languages,&nbsp;Bugzilla&nbsp;should<br>
&nbsp;&nbsp;&nbsp;allow&nbsp;new&nbsp;field&nbsp;types&nbsp;to&nbsp;be&nbsp;written.<br>
<br>
&nbsp;&nbsp;&nbsp;Similarly,&nbsp;a&nbsp;common&nbsp;desire&nbsp;is&nbsp;for&nbsp;resolutions&nbsp;to&nbsp;be&nbsp;added&nbsp;or&nbsp;removed.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Allocations<br>
<br>
&nbsp;&nbsp;&nbsp;?<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Option&nbsp;Groups<br>
<br>
&nbsp;&nbsp;&nbsp;?<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Relations<br>
<br>
&nbsp;&nbsp;&nbsp;?<br>
<br>
&nbsp;&nbsp;Database&nbsp;Integrity<br>
<br>
&nbsp;&nbsp;&nbsp;Furthermore,&nbsp;it&nbsp;is&nbsp;desirable&nbsp;for&nbsp;administrators&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;specify<br>
&nbsp;&nbsp;&nbsp;rules&nbsp;that&nbsp;must&nbsp;or&nbsp;should&nbsp;apply&nbsp;between&nbsp;the&nbsp;fields&nbsp;on&nbsp;a&nbsp;bug&nbsp;report.<br>
<br>
&nbsp;&nbsp;&nbsp;For&nbsp;example,&nbsp;you&nbsp;might&nbsp;wish&nbsp;to&nbsp;specify&nbsp;that&nbsp;a&nbsp;bug&nbsp;with&nbsp;status&nbsp;ASSIGNED<br>
&nbsp;&nbsp;&nbsp;must&nbsp;have&nbsp;a&nbsp;target&nbsp;milestone&nbsp;field&nbsp;that&nbsp;that&nbsp;is&nbsp;not&nbsp;untargetted.&nbsp;&nbsp;Or<br>
&nbsp;&nbsp;&nbsp;that&nbsp;a&nbsp;bug&nbsp;with&nbsp;a&nbsp;certain&nbsp;number&nbsp;of&nbsp;votes&nbsp;should&nbsp;get&nbsp;ASSIGNED.&nbsp;&nbsp;Or<br>
&nbsp;&nbsp;&nbsp;that&nbsp;the&nbsp;QA&nbsp;contact&nbsp;must&nbsp;be&nbsp;different&nbsp;from&nbsp;the&nbsp;assignee.<br>
<br>
&nbsp;&nbsp;&nbsp;"Must"&nbsp;relationships&nbsp;could&nbsp;be&nbsp;implemented&nbsp;by&nbsp;refusing&nbsp;to&nbsp;make&nbsp;changes<br>
&nbsp;&nbsp;&nbsp;that&nbsp;violate&nbsp;the&nbsp;relationships,&nbsp;or&nbsp;alternatively,&nbsp;automatically<br>
&nbsp;&nbsp;&nbsp;updating&nbsp;certain&nbsp;fields&nbsp;in&nbsp;order&nbsp;to&nbsp;satisfy&nbsp;the&nbsp;criteria.&nbsp;&nbsp;Which<br>
&nbsp;&nbsp;&nbsp;occurs&nbsp;should&nbsp;be&nbsp;up&nbsp;to&nbsp;the&nbsp;administrator.<br>
<br>
&nbsp;&nbsp;&nbsp;"Should"&nbsp;relationships&nbsp;could&nbsp;be&nbsp;implemented&nbsp;by&nbsp;a&nbsp;combination&nbsp;of<br>
&nbsp;&nbsp;&nbsp;emitting&nbsp;warnings&nbsp;on&nbsp;the&nbsp;process&nbsp;bug&nbsp;page,&nbsp;the&nbsp;same&nbsp;on&nbsp;notification<br>
&nbsp;&nbsp;&nbsp;mails,&nbsp;or&nbsp;emitting&nbsp;periodic&nbsp;whine&nbsp;mails&nbsp;about&nbsp;the&nbsp;situation.&nbsp;&nbsp;Again,<br>
&nbsp;&nbsp;&nbsp;which&nbsp;occurs&nbsp;should&nbsp;be&nbsp;up&nbsp;to&nbsp;the&nbsp;administrator.<br>
<br>
&nbsp;&nbsp;&nbsp;It&nbsp;should&nbsp;also&nbsp;be&nbsp;possible&nbsp;for&nbsp;whine&nbsp;mails&nbsp;to&nbsp;be&nbsp;emitted&nbsp;for&nbsp;"must"<br>
&nbsp;&nbsp;&nbsp;relationships,&nbsp;as&nbsp;they&nbsp;might&nbsp;become&nbsp;violated&nbsp;through&nbsp;direct&nbsp;database<br>
&nbsp;&nbsp;&nbsp;access,&nbsp;Bugzilla&nbsp;bugs,&nbsp;or&nbsp;because&nbsp;they&nbsp;were&nbsp;there&nbsp;before&nbsp;the<br>
&nbsp;&nbsp;&nbsp;relationship&nbsp;was&nbsp;enforced.<br>
<br>
&nbsp;&nbsp;&nbsp;As&nbsp;well&nbsp;as&nbsp;implementing&nbsp;intra-bug&nbsp;constraints,&nbsp;it&nbsp;would&nbsp;be&nbsp;useful&nbsp;to<br>
&nbsp;&nbsp;&nbsp;create&nbsp;inter-bug&nbsp;constraints.&nbsp;&nbsp;For&nbsp;example,&nbsp;a&nbsp;bug&nbsp;that&nbsp;is&nbsp;dependent&nbsp;on<br>
&nbsp;&nbsp;&nbsp;another&nbsp;bug&nbsp;should&nbsp;not&nbsp;have&nbsp;an&nbsp;earlier&nbsp;milestone&nbsp;or&nbsp;greater&nbsp;priority<br>
&nbsp;&nbsp;&nbsp;than&nbsp;that&nbsp;bug.<br>
<br>
&nbsp;&nbsp;Database&nbsp;Adaptability<br>
<br>
&nbsp;&nbsp;&nbsp;Often&nbsp;an&nbsp;administrator&nbsp;desires&nbsp;that&nbsp;fields&nbsp;adapt&nbsp;to&nbsp;the&nbsp;values&nbsp;of<br>
&nbsp;&nbsp;&nbsp;other&nbsp;fields.&nbsp;&nbsp;For&nbsp;example,&nbsp;the&nbsp;value&nbsp;of&nbsp;a&nbsp;field&nbsp;might&nbsp;determine&nbsp;the<br>
&nbsp;&nbsp;&nbsp;possible&nbsp;values&nbsp;of&nbsp;another&nbsp;field&nbsp;or&nbsp;even&nbsp;whether&nbsp;it&nbsp;appears&nbsp;(whether<br>
&nbsp;&nbsp;&nbsp;it&nbsp;is&nbsp;"applicable").<br>
<br>
&nbsp;&nbsp;&nbsp;Limited&nbsp;adaptability&nbsp;is&nbsp;present&nbsp;in&nbsp;Bugzilla&nbsp;2,&nbsp;and&nbsp;only&nbsp;on&nbsp;the<br>
&nbsp;&nbsp;&nbsp;"Product"&nbsp;field:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;The&nbsp;possible&nbsp;values&nbsp;of&nbsp;the&nbsp;target&nbsp;milestone,&nbsp;version&nbsp;and&nbsp;component<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fields&nbsp;depend&nbsp;on&nbsp;the&nbsp;product.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;UNCONFIRMED&nbsp;can&nbsp;be&nbsp;turned&nbsp;off&nbsp;for&nbsp;specific&nbsp;products.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Voting&nbsp;can&nbsp;be&nbsp;configured&nbsp;differently&nbsp;or&nbsp;turned&nbsp;off&nbsp;for&nbsp;different<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;products,&nbsp;and&nbsp;there&nbsp;is&nbsp;a&nbsp;separate&nbsp;user&nbsp;vote&nbsp;limits&nbsp;for&nbsp;each<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;product.<br>
<br>
&nbsp;&nbsp;&nbsp;It&nbsp;would&nbsp;be&nbsp;good&nbsp;if&nbsp;more&nbsp;adaptability&nbsp;was&nbsp;present,&nbsp;both&nbsp;in&nbsp;terms&nbsp;of<br>
&nbsp;&nbsp;&nbsp;all&nbsp;fields&nbsp;relying&nbsp;on&nbsp;the&nbsp;product,&nbsp;as&nbsp;well&nbsp;as&nbsp;the&nbsp;ability&nbsp;to&nbsp;adapt<br>
&nbsp;&nbsp;&nbsp;based&nbsp;on&nbsp;the&nbsp;value&nbsp;of&nbsp;all&nbsp;fields.<br>
<br>
&nbsp;&nbsp;&nbsp;Example&nbsp;???<br>
<br>
&nbsp;&nbsp;&nbsp;General&nbsp;adaptability&nbsp;raises&nbsp;the&nbsp;issue&nbsp;of&nbsp;circular&nbsp;references&nbsp;between<br>
&nbsp;&nbsp;&nbsp;fields&nbsp;causing&nbsp;problems.&nbsp;&nbsp;One&nbsp;possible&nbsp;solution&nbsp;to&nbsp;this&nbsp;is&nbsp;to&nbsp;place<br>
&nbsp;&nbsp;&nbsp;the&nbsp;fields&nbsp;in&nbsp;a&nbsp;total&nbsp;ordering&nbsp;and&nbsp;require&nbsp;a&nbsp;field&nbsp;refer&nbsp;only&nbsp;to&nbsp;the<br>
&nbsp;&nbsp;&nbsp;previous&nbsp;fields.<br>
<br>
&nbsp;&nbsp;&nbsp;In&nbsp;Bugzilla&nbsp;2,&nbsp;changing&nbsp;the&nbsp;product&nbsp;of&nbsp;a&nbsp;bug&nbsp;meant&nbsp;a&nbsp;second&nbsp;page&nbsp;would<br>
&nbsp;&nbsp;&nbsp;appear&nbsp;that&nbsp;allowed&nbsp;you&nbsp;to&nbsp;choose&nbsp;a&nbsp;new&nbsp;milestone,&nbsp;component&nbsp;and<br>
&nbsp;&nbsp;&nbsp;version,&nbsp;as&nbsp;those&nbsp;fields&nbsp;adapted&nbsp;themselves&nbsp;to&nbsp;the&nbsp;new&nbsp;product.&nbsp;&nbsp;This<br>
&nbsp;&nbsp;&nbsp;page&nbsp;could&nbsp;be&nbsp;generalised&nbsp;to&nbsp;support&nbsp;all&nbsp;instances&nbsp;where:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;a&nbsp;field&nbsp;value&nbsp;must&nbsp;or&nbsp;might&nbsp;be&nbsp;changed&nbsp;because&nbsp;the&nbsp;possible&nbsp;values<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;have&nbsp;changed<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;is&nbsp;going&nbsp;to&nbsp;drop&nbsp;off&nbsp;because&nbsp;it&nbsp;it&nbsp;is&nbsp;no&nbsp;longer&nbsp;applicable,&nbsp;and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this&nbsp;should&nbsp;be&nbsp;confirmed<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;must&nbsp;be&nbsp;specified&nbsp;because&nbsp;it&nbsp;is&nbsp;suddenly&nbsp;applicable,&nbsp;and&nbsp;the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;value,&nbsp;if&nbsp;one&nbsp;exists,&nbsp;might&nbsp;not&nbsp;be&nbsp;acceptable<br>
<br>
&nbsp;&nbsp;Database&nbsp;Independence<br>
<br>
&nbsp;&nbsp;&nbsp;Currently&nbsp;Bugzilla&nbsp;only&nbsp;runs&nbsp;on&nbsp;the&nbsp;MySQL&nbsp;database.&nbsp;&nbsp;It&nbsp;would&nbsp;be<br>
&nbsp;&nbsp;&nbsp;desirable&nbsp;for&nbsp;Bugzilla&nbsp;to&nbsp;run&nbsp;on&nbsp;other&nbsp;databases,&nbsp;because:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Organisations&nbsp;may&nbsp;have&nbsp;existing&nbsp;database&nbsp;products&nbsp;they&nbsp;use&nbsp;and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;would&nbsp;prefer&nbsp;to&nbsp;run&nbsp;a&nbsp;homogenous&nbsp;environment.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Databases&nbsp;each&nbsp;have&nbsp;their&nbsp;own&nbsp;shortcomings,&nbsp;including&nbsp;MySQL.&nbsp;&nbsp;An<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;administrator&nbsp;might&nbsp;choose&nbsp;a&nbsp;database&nbsp;that&nbsp;would&nbsp;work&nbsp;better&nbsp;with<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;their&nbsp;Bugzilla.<br>
<br>
&nbsp;&nbsp;&nbsp;This&nbsp;raises&nbsp;the&nbsp;possibility&nbsp;that&nbsp;we&nbsp;could&nbsp;use&nbsp;features&nbsp;that&nbsp;are&nbsp;only<br>
&nbsp;&nbsp;&nbsp;present&nbsp;in&nbsp;some&nbsp;databases,&nbsp;by&nbsp;appropriately&nbsp;falling&nbsp;back.&nbsp;&nbsp;For<br>
&nbsp;&nbsp;&nbsp;example,&nbsp;in&nbsp;the&nbsp;MySQL&nbsp;world,&nbsp;we&nbsp;live&nbsp;without:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;record-level&nbsp;locking,&nbsp;instead&nbsp;we&nbsp;use&nbsp;table-level&nbsp;locking<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;referential&nbsp;and&nbsp;record&nbsp;constraints,&nbsp;instead&nbsp;we&nbsp;checking&nbsp;code<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;subselects,&nbsp;instead&nbsp;we&nbsp;use&nbsp;multiple&nbsp;queries&nbsp;and&nbsp;redundant&nbsp;"caches"<br>
<br>
&nbsp;&nbsp;Multiple&nbsp;Front&nbsp;Ends<br>
<br>
&nbsp;&nbsp;&nbsp;Currently&nbsp;Bugzilla&nbsp;is&nbsp;manipulated&nbsp;via&nbsp;the&nbsp;Web,&nbsp;and&nbsp;notifies&nbsp;via<br>
&nbsp;&nbsp;&nbsp;E-Mail.&nbsp;&nbsp;It&nbsp;would&nbsp;be&nbsp;desirable&nbsp;for&nbsp;Bugzilla&nbsp;to&nbsp;easily&nbsp;support&nbsp;various<br>
&nbsp;&nbsp;&nbsp;front&nbsp;ends.<br>
<br>
&nbsp;&nbsp;&nbsp;There&nbsp;is&nbsp;no&nbsp;reason&nbsp;that&nbsp;Bugzilla&nbsp;could&nbsp;not&nbsp;be&nbsp;controlled&nbsp;via&nbsp;a&nbsp;whole<br>
&nbsp;&nbsp;&nbsp;range&nbsp;of&nbsp;front&nbsp;ends,&nbsp;including&nbsp;Web,&nbsp;E-Mail,&nbsp;IRC,&nbsp;ICQ,&nbsp;etc,&nbsp;and<br>
&nbsp;&nbsp;&nbsp;similarly&nbsp;for&nbsp;how&nbsp;it&nbsp;notifies.&nbsp;&nbsp;It's&nbsp;also&nbsp;possible&nbsp;that&nbsp;we&nbsp;could<br>
&nbsp;&nbsp;&nbsp;introduce&nbsp;a&nbsp;special&nbsp;Bugzilla&nbsp;client&nbsp;that&nbsp;uses&nbsp;its&nbsp;own&nbsp;protocol,&nbsp;for<br>
&nbsp;&nbsp;&nbsp;maximum&nbsp;user&nbsp;productivity.<br>
<br>
&nbsp;&nbsp;&nbsp;Indeed&nbsp;a&nbsp;request&nbsp;reply&nbsp;might&nbsp;be&nbsp;returned&nbsp;via&nbsp;a&nbsp;totally&nbsp;different<br>
&nbsp;&nbsp;&nbsp;transport&nbsp;method&nbsp;than&nbsp;was&nbsp;use&nbsp;to&nbsp;submit&nbsp;the&nbsp;request.<br>
<br>
Internationalisation<br>
<br>
&nbsp;&nbsp;&nbsp;Bugzilla&nbsp;currently&nbsp;supports&nbsp;only&nbsp;English.&nbsp;&nbsp;All&nbsp;of&nbsp;the&nbsp;field&nbsp;names,<br>
&nbsp;&nbsp;&nbsp;user&nbsp;instructions,&nbsp;etc&nbsp;are&nbsp;written&nbsp;in&nbsp;English.&nbsp;&nbsp;It&nbsp;would&nbsp;be&nbsp;desirable<br>
&nbsp;&nbsp;&nbsp;to&nbsp;allow&nbsp;"language&nbsp;packs"&nbsp;so&nbsp;Bugzilla&nbsp;can&nbsp;be&nbsp;easily&nbsp;used&nbsp;in<br>
&nbsp;&nbsp;&nbsp;non-English&nbsp;speaking&nbsp;locales.<br>
<br>
&nbsp;&nbsp;&nbsp;To&nbsp;a&nbsp;degree&nbsp;field&nbsp;customisation&nbsp;supports&nbsp;this,&nbsp;because&nbsp;administrators<br>
&nbsp;&nbsp;&nbsp;could&nbsp;specify&nbsp;their&nbsp;own&nbsp;fields&nbsp;names&nbsp;anyway.&nbsp;&nbsp;However,&nbsp;there&nbsp;will<br>
&nbsp;&nbsp;&nbsp;always&nbsp;be&nbsp;some&nbsp;basic&nbsp;facilities&nbsp;not&nbsp;covered&nbsp;by&nbsp;this,&nbsp;and&nbsp;it&nbsp;is<br>
&nbsp;&nbsp;&nbsp;desirable&nbsp;that&nbsp;the&nbsp;administrator's&nbsp;interface&nbsp;also&nbsp;is<br>
&nbsp;&nbsp;&nbsp;internationalisable.<br>
<br>
Better&nbsp;Searching<br>
<br>
&nbsp;&nbsp;General&nbsp;Summary&nbsp;Reports<br>
<br>
&nbsp;&nbsp;&nbsp;Sometimes,&nbsp;the&nbsp;normal&nbsp;querying&nbsp;page&nbsp;leaves&nbsp;a&nbsp;lot&nbsp;to&nbsp;be&nbsp;desired.&nbsp;&nbsp;There<br>
&nbsp;&nbsp;&nbsp;are&nbsp;other&nbsp;facilities&nbsp;already&nbsp;in&nbsp;place&nbsp;or&nbsp;which&nbsp;people&nbsp;have&nbsp;asked&nbsp;for:<br>
<br>
&nbsp;&nbsp;&nbsp;Most&nbsp;Doomed&nbsp;Reports&nbsp;-&nbsp;All&nbsp;Bugs&nbsp;or&nbsp;All&nbsp;Bugs&nbsp;In&nbsp;A&nbsp;Product,&nbsp;Categorised<br>
&nbsp;&nbsp;&nbsp;On&nbsp;Assignee,&nbsp;Shows&nbsp;and&nbsp;Counts&nbsp;Number&nbsp;of&nbsp;Bugs&nbsp;For&nbsp;Each&nbsp;Assignee<br>
&nbsp;&nbsp;&nbsp;Most&nbsp;Voted&nbsp;For&nbsp;Bugs&nbsp;-&nbsp;All&nbsp;Bugs,&nbsp;Categorised&nbsp;On&nbsp;Product,&nbsp;Shows&nbsp;Top&nbsp;Ten<br>
&nbsp;&nbsp;&nbsp;Bugs&nbsp;Voters&nbsp;Most&nbsp;Want&nbsp;Fixed<br>
&nbsp;&nbsp;&nbsp;Number&nbsp;of&nbsp;Open&nbsp;Bugs&nbsp;For&nbsp;An&nbsp;Assignee&nbsp;-&nbsp;Bug&nbsp;List,&nbsp;Categorised&nbsp;On<br>
&nbsp;&nbsp;&nbsp;Developers,&nbsp;Counts&nbsp;Number&nbsp;of&nbsp;Bugs&nbsp;In&nbsp;Category<br>
<br>
&nbsp;&nbsp;&nbsp;The&nbsp;important&nbsp;thing&nbsp;to&nbsp;realise&nbsp;is&nbsp;that&nbsp;people&nbsp;want&nbsp;categorised&nbsp;reports<br>
&nbsp;&nbsp;&nbsp;on&nbsp;all&nbsp;sorts&nbsp;of&nbsp;things&nbsp;-&nbsp;a&nbsp;general&nbsp;summary&nbsp;report.<br>
<br>
&nbsp;&nbsp;&nbsp;In&nbsp;a&nbsp;categorised&nbsp;report,&nbsp;you&nbsp;choose&nbsp;the&nbsp;subset&nbsp;of&nbsp;bugs&nbsp;you&nbsp;wish&nbsp;to<br>
&nbsp;&nbsp;&nbsp;operate&nbsp;on&nbsp;(similar&nbsp;to&nbsp;how&nbsp;you&nbsp;would&nbsp;specify&nbsp;a&nbsp;query),&nbsp;and&nbsp;then<br>
&nbsp;&nbsp;&nbsp;categorise&nbsp;them&nbsp;on&nbsp;one&nbsp;or&nbsp;more&nbsp;fields.<br>
<br>
&nbsp;&nbsp;&nbsp;For&nbsp;each&nbsp;category&nbsp;you&nbsp;display&nbsp;the&nbsp;count&nbsp;of&nbsp;the&nbsp;number&nbsp;of&nbsp;things&nbsp;in<br>
&nbsp;&nbsp;&nbsp;that&nbsp;category.&nbsp;&nbsp;You&nbsp;can&nbsp;optionally&nbsp;display&nbsp;the&nbsp;bugs&nbsp;themselves,&nbsp;or<br>
&nbsp;&nbsp;&nbsp;leave&nbsp;them&nbsp;out,&nbsp;just&nbsp;showing&nbsp;the&nbsp;counts.&nbsp;&nbsp;And&nbsp;you&nbsp;can&nbsp;optionally&nbsp;limit<br>
&nbsp;&nbsp;&nbsp;the&nbsp;number&nbsp;of&nbsp;things&nbsp;(bugs&nbsp;or&nbsp;subcategories)&nbsp;that&nbsp;display&nbsp;in&nbsp;each<br>
&nbsp;&nbsp;&nbsp;category.<br>
<br>
&nbsp;&nbsp;&nbsp;Such&nbsp;a&nbsp;mechanism&nbsp;would&nbsp;let&nbsp;you&nbsp;do&nbsp;all&nbsp;of&nbsp;the&nbsp;above&nbsp;and&nbsp;more.<br>
&nbsp;&nbsp;&nbsp;Applications&nbsp;of&nbsp;this&nbsp;mechanism&nbsp;would&nbsp;only&nbsp;be&nbsp;recognised&nbsp;once&nbsp;it&nbsp;was<br>
&nbsp;&nbsp;&nbsp;implemented.<br>
<br>
&nbsp;&nbsp;Related&nbsp;Bugs<br>
<br>
&nbsp;&nbsp;&nbsp;It&nbsp;would&nbsp;be&nbsp;nice&nbsp;to&nbsp;have&nbsp;a&nbsp;field&nbsp;where&nbsp;you&nbsp;could&nbsp;enter&nbsp;other&nbsp;bugs<br>
&nbsp;&nbsp;&nbsp;related&nbsp;to&nbsp;the&nbsp;current&nbsp;bug.&nbsp;&nbsp;It&nbsp;would&nbsp;be&nbsp;handy&nbsp;for&nbsp;navigation&nbsp;and<br>
&nbsp;&nbsp;&nbsp;possibly&nbsp;even&nbsp;finding&nbsp;duplicates.<br>
<br>
&nbsp;&nbsp;Column&nbsp;Specification&nbsp;Support<br>
<br>
&nbsp;&nbsp;&nbsp;Currently&nbsp;bug&nbsp;lists&nbsp;use&nbsp;the&nbsp;columns&nbsp;that&nbsp;you&nbsp;last&nbsp;used.&nbsp;&nbsp;This&nbsp;doesn't<br>
&nbsp;&nbsp;&nbsp;work&nbsp;well&nbsp;for&nbsp;"prepackaged&nbsp;queries",&nbsp;where&nbsp;you&nbsp;followed&nbsp;a&nbsp;link.&nbsp;&nbsp;You<br>
&nbsp;&nbsp;&nbsp;can&nbsp;probably&nbsp;add&nbsp;a&nbsp;column&nbsp;by&nbsp;specifying&nbsp;a&nbsp;sort&nbsp;column,&nbsp;but&nbsp;this&nbsp;is<br>
&nbsp;&nbsp;&nbsp;difficult&nbsp;and&nbsp;suboptimal.<br>
<br>
&nbsp;&nbsp;&nbsp;Furthermore,&nbsp;I&nbsp;find&nbsp;that&nbsp;when&nbsp;I&nbsp;want&nbsp;to&nbsp;add&nbsp;a&nbsp;column&nbsp;to&nbsp;a&nbsp;bug&nbsp;list,<br>
&nbsp;&nbsp;&nbsp;it's&nbsp;usually&nbsp;a&nbsp;one&nbsp;off&nbsp;and&nbsp;I&nbsp;would&nbsp;prefer&nbsp;it&nbsp;to&nbsp;go&nbsp;away&nbsp;for&nbsp;the&nbsp;next<br>
&nbsp;&nbsp;&nbsp;query.&nbsp;&nbsp;Hence,&nbsp;it&nbsp;would&nbsp;be&nbsp;nice&nbsp;to&nbsp;specify&nbsp;the&nbsp;columns&nbsp;that&nbsp;appear&nbsp;on<br>
&nbsp;&nbsp;&nbsp;the&nbsp;bug&nbsp;list&nbsp;(and&nbsp;general&nbsp;summary&nbsp;report)&nbsp;pages.&nbsp;&nbsp;The&nbsp;default&nbsp;query<br>
&nbsp;&nbsp;&nbsp;mechanism&nbsp;should&nbsp;be&nbsp;able&nbsp;to&nbsp;let&nbsp;you&nbsp;specify&nbsp;your&nbsp;default&nbsp;columns.<br>
<br>
&nbsp;&nbsp;Advanced&nbsp;Querying&nbsp;Redesign<br>
<br>
&nbsp;&nbsp;&nbsp;?<br>
<br>
Keywords<br>
<br>
&nbsp;&nbsp;&nbsp;People&nbsp;have&nbsp;a&nbsp;need&nbsp;to&nbsp;apply&nbsp;tags&nbsp;to&nbsp;bugs.&nbsp;&nbsp;In&nbsp;the&nbsp;beginning,&nbsp;people<br>
&nbsp;&nbsp;&nbsp;placed&nbsp;designators&nbsp;in&nbsp;the&nbsp;summary&nbsp;and&nbsp;status&nbsp;whiteboard.&nbsp;&nbsp;However,<br>
&nbsp;&nbsp;&nbsp;these&nbsp;fields&nbsp;were&nbsp;not&nbsp;designed&nbsp;for&nbsp;that,&nbsp;and&nbsp;so&nbsp;there&nbsp;were&nbsp;many&nbsp;flaws<br>
&nbsp;&nbsp;&nbsp;with&nbsp;this&nbsp;system:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;They&nbsp;pollute&nbsp;the&nbsp;field&nbsp;with&nbsp;information&nbsp;that&nbsp;was&nbsp;never&nbsp;intended&nbsp;to<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;be&nbsp;present.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Removing&nbsp;them&nbsp;with&nbsp;a&nbsp;bulk&nbsp;change&nbsp;is&nbsp;a&nbsp;difficult&nbsp;problem&nbsp;that&nbsp;has<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;too&nbsp;many&nbsp;pitfalls&nbsp;to&nbsp;implement.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;You&nbsp;can&nbsp;easily&nbsp;get&nbsp;the&nbsp;capitalisation&nbsp;wrong.<br>
<br>
&nbsp;&nbsp;&nbsp;Then&nbsp;dependencies&nbsp;were&nbsp;introduced&nbsp;(when?),&nbsp;and&nbsp;people&nbsp;realised&nbsp;that<br>
&nbsp;&nbsp;&nbsp;they&nbsp;could&nbsp;use&nbsp;them&nbsp;for&nbsp;"tracking&nbsp;bugs".&nbsp;&nbsp;Again,&nbsp;dependencies&nbsp;were&nbsp;not<br>
&nbsp;&nbsp;&nbsp;designed&nbsp;for&nbsp;that,&nbsp;and&nbsp;so&nbsp;there&nbsp;were&nbsp;more&nbsp;flaws,&nbsp;albeit&nbsp;different<br>
&nbsp;&nbsp;&nbsp;ones,&nbsp;including:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;They&nbsp;aren't&nbsp;really&nbsp;bugs,&nbsp;so&nbsp;it's&nbsp;difficult&nbsp;to&nbsp;distinguish&nbsp;issues<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from&nbsp;bugs.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;They&nbsp;can&nbsp;pollute&nbsp;bugs&nbsp;counts,&nbsp;and&nbsp;you&nbsp;must&nbsp;somehow&nbsp;exclude&nbsp;them<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from&nbsp;queries.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;There&nbsp;is&nbsp;a&nbsp;whole&nbsp;lot&nbsp;of&nbsp;useless&nbsp;information&nbsp;on&nbsp;them.&nbsp;&nbsp;They&nbsp;have&nbsp;an<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assignee&nbsp;but&nbsp;there&nbsp;is&nbsp;nothing&nbsp;to&nbsp;fix,&nbsp;and&nbsp;that&nbsp;person&nbsp;can&nbsp;get<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;whined&nbsp;at&nbsp;by&nbsp;Bugzilla.&nbsp;&nbsp;They&nbsp;have&nbsp;target&nbsp;milestones&nbsp;which&nbsp;must&nbsp;be<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;manually&nbsp;maintained.&nbsp;&nbsp;And&nbsp;so&nbsp;on.<br>
<br>
&nbsp;&nbsp;&nbsp;Finally,&nbsp;keywords&nbsp;were&nbsp;introduced&nbsp;(when?)&nbsp;for&nbsp;this&nbsp;purpose&nbsp;to&nbsp;remove<br>
&nbsp;&nbsp;&nbsp;the&nbsp;need&nbsp;for&nbsp;these&nbsp;two&nbsp;systems.&nbsp;&nbsp;Unfortunately,&nbsp;the&nbsp;simple&nbsp;keywords<br>
&nbsp;&nbsp;&nbsp;implementation&nbsp;was&nbsp;itself&nbsp;lacking&nbsp;in&nbsp;certain&nbsp;features&nbsp;provided&nbsp;by&nbsp;the<br>
&nbsp;&nbsp;&nbsp;two&nbsp;previous&nbsp;systems,&nbsp;and&nbsp;has&nbsp;remained&nbsp;almost&nbsp;unchanged&nbsp;since&nbsp;its<br>
&nbsp;&nbsp;&nbsp;inception.&nbsp;&nbsp;Furthermore,&nbsp;it&nbsp;could&nbsp;not&nbsp;be&nbsp;forseen&nbsp;that&nbsp;in&nbsp;large<br>
&nbsp;&nbsp;&nbsp;installations,&nbsp;the&nbsp;sheer&nbsp;number&nbsp;of&nbsp;keywords&nbsp;could&nbsp;become&nbsp;unwieldly&nbsp;and<br>
&nbsp;&nbsp;&nbsp;could&nbsp;lead&nbsp;to&nbsp;a&nbsp;movement&nbsp;back&nbsp;to&nbsp;the&nbsp;other&nbsp;systems.<br>
<br>
&nbsp;&nbsp;&nbsp;The&nbsp;keywords&nbsp;system&nbsp;was&nbsp;the&nbsp;right&nbsp;idea,&nbsp;however,&nbsp;and&nbsp;it&nbsp;remains&nbsp;so.<br>
&nbsp;&nbsp;&nbsp;Fixing&nbsp;the&nbsp;keywords&nbsp;system&nbsp;is&nbsp;one&nbsp;of&nbsp;the&nbsp;most&nbsp;important&nbsp;Bugzilla<br>
&nbsp;&nbsp;&nbsp;issues.<br>
<br>
&nbsp;&nbsp;Bringing&nbsp;Keywords&nbsp;Up&nbsp;To&nbsp;Par<br>
<br>
&nbsp;&nbsp;&nbsp;For&nbsp;the&nbsp;most&nbsp;part,&nbsp;keywords&nbsp;are&nbsp;very&nbsp;good&nbsp;at&nbsp;what&nbsp;they&nbsp;do.&nbsp;&nbsp;It&nbsp;is&nbsp;easy<br>
&nbsp;&nbsp;&nbsp;to&nbsp;add&nbsp;and&nbsp;remove&nbsp;them&nbsp;(unlike&nbsp;summary/whiteboard&nbsp;designators),&nbsp;we&nbsp;can<br>
&nbsp;&nbsp;&nbsp;simply&nbsp;see&nbsp;what&nbsp;issues&nbsp;are&nbsp;present&nbsp;on&nbsp;a&nbsp;bug&nbsp;(unlike&nbsp;tracking&nbsp;bugs),<br>
&nbsp;&nbsp;&nbsp;and&nbsp;we&nbsp;do&nbsp;not&nbsp;confuse&nbsp;bugs&nbsp;with&nbsp;issues&nbsp;(unlike&nbsp;tracking&nbsp;bugs).<br>
<br>
&nbsp;&nbsp;&nbsp;However,&nbsp;there&nbsp;are&nbsp;still&nbsp;some&nbsp;"regressions"&nbsp;in&nbsp;the&nbsp;keyword&nbsp;system&nbsp;over<br>
&nbsp;&nbsp;&nbsp;previous&nbsp;systems:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Users&nbsp;wish&nbsp;to&nbsp;view&nbsp;the&nbsp;"dependency&nbsp;forest"&nbsp;of&nbsp;a&nbsp;keyword.&nbsp;&nbsp;While&nbsp;a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dependency&nbsp;tree&nbsp;is&nbsp;of&nbsp;one&nbsp;bug,&nbsp;a&nbsp;dependency&nbsp;forest&nbsp;is&nbsp;of&nbsp;a&nbsp;bug<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list,&nbsp;and&nbsp;consists&nbsp;of&nbsp;a&nbsp;dependency&nbsp;tree&nbsp;for&nbsp;each&nbsp;member&nbsp;of&nbsp;the&nbsp;bug<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.&nbsp;&nbsp;Users&nbsp;can&nbsp;work&nbsp;around&nbsp;this&nbsp;with&nbsp;tracking&nbsp;bugs&nbsp;by&nbsp;creating&nbsp;a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tracking&nbsp;bug&nbsp;and&nbsp;viewing&nbsp;the&nbsp;dependency&nbsp;tree&nbsp;of&nbsp;that&nbsp;tracking&nbsp;bug.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Users&nbsp;wish&nbsp;to&nbsp;specify&nbsp;the&nbsp;keywords&nbsp;that&nbsp;initially&nbsp;apply&nbsp;to&nbsp;a&nbsp;bug,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;but&nbsp;instead&nbsp;they&nbsp;must&nbsp;edit&nbsp;the&nbsp;bug&nbsp;once&nbsp;it&nbsp;has&nbsp;already&nbsp;been<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;submitted.&nbsp;&nbsp;They&nbsp;can&nbsp;work&nbsp;around&nbsp;this&nbsp;with&nbsp;summary&nbsp;designators,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;since&nbsp;they&nbsp;specify&nbsp;the&nbsp;summary&nbsp;at&nbsp;reporting&nbsp;time.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Users&nbsp;wish&nbsp;to&nbsp;store&nbsp;or&nbsp;share&nbsp;a&nbsp;bug&nbsp;list&nbsp;that&nbsp;contains&nbsp;a&nbsp;keywords<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;column.&nbsp;&nbsp;Hence&nbsp;they&nbsp;wish&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;specify&nbsp;what&nbsp;columns&nbsp;appear<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;the&nbsp;bug&nbsp;list&nbsp;URL,&nbsp;as&nbsp;mentioned&nbsp;earlier.&nbsp;&nbsp;They&nbsp;can&nbsp;work&nbsp;around<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this&nbsp;using&nbsp;summary&nbsp;designators,&nbsp;since&nbsp;almost&nbsp;all&nbsp;bug&nbsp;lists&nbsp;have&nbsp;a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;summary&nbsp;column.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Users&nbsp;wish&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;view&nbsp;keywords&nbsp;on&nbsp;a&nbsp;bug&nbsp;list.&nbsp;&nbsp;However<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;often&nbsp;they&nbsp;are&nbsp;only&nbsp;interested&nbsp;in&nbsp;a&nbsp;small&nbsp;number&nbsp;of&nbsp;keywords.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Having&nbsp;a&nbsp;bug&nbsp;list&nbsp;with&nbsp;a&nbsp;keywords&nbsp;column&nbsp;means&nbsp;that&nbsp;all&nbsp;keywords<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;will&nbsp;appear&nbsp;on&nbsp;a&nbsp;bug&nbsp;list.&nbsp;&nbsp;This&nbsp;can&nbsp;take&nbsp;a&nbsp;substantial&nbsp;amount&nbsp;of<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;space&nbsp;where&nbsp;a&nbsp;bug&nbsp;has&nbsp;a&nbsp;lot&nbsp;of&nbsp;keywords,&nbsp;since&nbsp;the&nbsp;table&nbsp;columns<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;Bugzilla&nbsp;adjust&nbsp;to&nbsp;the&nbsp;largest&nbsp;cell&nbsp;in&nbsp;that&nbsp;column.&nbsp;&nbsp;Hence<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;users&nbsp;wish&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;specify&nbsp;which&nbsp;keywords&nbsp;should&nbsp;appear&nbsp;in<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;bug&nbsp;list.&nbsp;&nbsp;In&nbsp;a&nbsp;very&nbsp;real&nbsp;sense,&nbsp;each&nbsp;keyword&nbsp;is&nbsp;a&nbsp;field&nbsp;unto<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;itself.&nbsp;&nbsp;Users&nbsp;can&nbsp;work&nbsp;around&nbsp;this&nbsp;by&nbsp;using&nbsp;summary&nbsp;designators,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;since&nbsp;they&nbsp;keywords&nbsp;will&nbsp;share&nbsp;the&nbsp;space&nbsp;in&nbsp;the&nbsp;summary&nbsp;column.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Users&nbsp;wish&nbsp;to&nbsp;know&nbsp;when&nbsp;bugs&nbsp;with&nbsp;a&nbsp;specific&nbsp;issue&nbsp;are&nbsp;resolved.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hence&nbsp;they&nbsp;wish&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;receive&nbsp;notifications&nbsp;on&nbsp;all&nbsp;the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bugs&nbsp;with&nbsp;a&nbsp;specific&nbsp;keyword.&nbsp;&nbsp;The&nbsp;introduction&nbsp;a&nbsp;generic&nbsp;watching<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;facility&nbsp;(also&nbsp;for&nbsp;things&nbsp;like&nbsp;watching&nbsp;all&nbsp;bugs&nbsp;in&nbsp;a&nbsp;component)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;would&nbsp;achieve&nbsp;this.&nbsp;&nbsp;Users&nbsp;can&nbsp;work&nbsp;around&nbsp;this&nbsp;by&nbsp;using&nbsp;tracking<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bugs,&nbsp;as&nbsp;dependencies&nbsp;have&nbsp;an&nbsp;existing&nbsp;way&nbsp;of&nbsp;detecting&nbsp;fixes&nbsp;to<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bug&nbsp;a&nbsp;bug&nbsp;was&nbsp;blocked&nbsp;by.<br>
<br>
&nbsp;&nbsp;Dealing&nbsp;With&nbsp;The&nbsp;Keyword&nbsp;Overload<br>
<br>
&nbsp;&nbsp;&nbsp;At&nbsp;the&nbsp;time&nbsp;of&nbsp;writing,&nbsp;the&nbsp;mozilla.org&nbsp;installation&nbsp;has&nbsp;approximately<br>
&nbsp;&nbsp;&nbsp;100&nbsp;keywords,&nbsp;and&nbsp;many&nbsp;more&nbsp;would&nbsp;be&nbsp;in&nbsp;use&nbsp;if&nbsp;the&nbsp;keywords&nbsp;system<br>
&nbsp;&nbsp;&nbsp;didn't&nbsp;have&nbsp;the&nbsp;problems&nbsp;it&nbsp;does.<br>
<br>
&nbsp;&nbsp;&nbsp;Such&nbsp;a&nbsp;large&nbsp;number&nbsp;of&nbsp;keywords&nbsp;introduces&nbsp;logistical&nbsp;problems:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;It&nbsp;must&nbsp;be&nbsp;easy&nbsp;for&nbsp;someone&nbsp;to&nbsp;learn&nbsp;what&nbsp;a&nbsp;keyword&nbsp;means.&nbsp;&nbsp;If&nbsp;a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyword&nbsp;is&nbsp;buried&nbsp;within&nbsp;a&nbsp;lot&nbsp;of&nbsp;other&nbsp;keywords,&nbsp;it&nbsp;can&nbsp;be<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;difficult&nbsp;to&nbsp;find.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;It&nbsp;must&nbsp;be&nbsp;easy&nbsp;to&nbsp;see&nbsp;what&nbsp;keywords&nbsp;are&nbsp;on&nbsp;a&nbsp;bug.&nbsp;&nbsp;If&nbsp;the&nbsp;number<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;keywords&nbsp;is&nbsp;large,&nbsp;then&nbsp;this&nbsp;can&nbsp;be&nbsp;difficult.<br>
<br>
&nbsp;&nbsp;&nbsp;These&nbsp;lead&nbsp;some&nbsp;people&nbsp;to&nbsp;feel&nbsp;that&nbsp;there&nbsp;are&nbsp;"too&nbsp;many&nbsp;keywords".<br>
<br>
&nbsp;&nbsp;&nbsp;These&nbsp;problems&nbsp;are&nbsp;not&nbsp;without&nbsp;solutions&nbsp;however.&nbsp;&nbsp;It&nbsp;is&nbsp;harder&nbsp;to<br>
&nbsp;&nbsp;&nbsp;find&nbsp;a&nbsp;list&nbsp;of&nbsp;designators&nbsp;or&nbsp;tracking&nbsp;bugs&nbsp;than&nbsp;it&nbsp;is&nbsp;a&nbsp;list&nbsp;of<br>
&nbsp;&nbsp;&nbsp;keywords.<br>
<br>
&nbsp;&nbsp;&nbsp;The&nbsp;essential&nbsp;problem&nbsp;is&nbsp;it&nbsp;needs&nbsp;to&nbsp;be&nbsp;easy&nbsp;to&nbsp;find&nbsp;the&nbsp;keywords<br>
&nbsp;&nbsp;&nbsp;we're&nbsp;interested&nbsp;in&nbsp;through&nbsp;the&nbsp;mass&nbsp;of&nbsp;keywords.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Keyword&nbsp;Applicability<br>
<br>
&nbsp;&nbsp;&nbsp;As&nbsp;has&nbsp;been&nbsp;previously&nbsp;mentioned,&nbsp;it&nbsp;is&nbsp;desirable&nbsp;for&nbsp;fields&nbsp;to&nbsp;be<br>
&nbsp;&nbsp;&nbsp;able&nbsp;to&nbsp;adapt&nbsp;to&nbsp;the&nbsp;values&nbsp;of&nbsp;other&nbsp;fields.&nbsp;&nbsp;This&nbsp;is&nbsp;certainly&nbsp;true<br>
&nbsp;&nbsp;&nbsp;for&nbsp;keywords.&nbsp;&nbsp;Many&nbsp;keywords&nbsp;are&nbsp;simply&nbsp;not&nbsp;relevant&nbsp;because&nbsp;of&nbsp;the<br>
&nbsp;&nbsp;&nbsp;bugs&nbsp;product,&nbsp;component,&nbsp;etc.<br>
<br>
&nbsp;&nbsp;&nbsp;Hence,&nbsp;by&nbsp;introducing&nbsp;keyword&nbsp;applicability,&nbsp;and&nbsp;not&nbsp;displaying<br>
&nbsp;&nbsp;&nbsp;keywords&nbsp;that&nbsp;are&nbsp;not&nbsp;relevant&nbsp;to&nbsp;the&nbsp;current&nbsp;bug,&nbsp;or&nbsp;clearly<br>
&nbsp;&nbsp;&nbsp;separating&nbsp;them,&nbsp;we&nbsp;can&nbsp;make&nbsp;the&nbsp;keyword&nbsp;overload&nbsp;problem&nbsp;less<br>
&nbsp;&nbsp;&nbsp;significant.<br>
<br>
&nbsp;&nbsp;&nbsp;Currently&nbsp;when&nbsp;you&nbsp;click&nbsp;on&nbsp;"keywords"&nbsp;on&nbsp;a&nbsp;bug,&nbsp;you&nbsp;get&nbsp;a&nbsp;list&nbsp;of&nbsp;all<br>
&nbsp;&nbsp;&nbsp;bugs.&nbsp;&nbsp;It&nbsp;would&nbsp;be&nbsp;desirable&nbsp;to&nbsp;introduce&nbsp;a&nbsp;list&nbsp;of&nbsp;keywords&nbsp;tailored<br>
&nbsp;&nbsp;&nbsp;to&nbsp;a&nbsp;specific&nbsp;bug,&nbsp;that&nbsp;reports,&nbsp;in&nbsp;order:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;the&nbsp;keywords&nbsp;currently&nbsp;on&nbsp;the&nbsp;bug<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;the&nbsp;keywords&nbsp;not&nbsp;currently&nbsp;on&nbsp;the&nbsp;bug,&nbsp;but&nbsp;applicable&nbsp;to&nbsp;the&nbsp;bug<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;optionally,&nbsp;the&nbsp;keywords&nbsp;not&nbsp;applicable&nbsp;to&nbsp;the&nbsp;bug<br>
<br>
&nbsp;&nbsp;&nbsp;This&nbsp;essentially&nbsp;orders&nbsp;the&nbsp;keywords&nbsp;into&nbsp;three&nbsp;groups,&nbsp;where&nbsp;each<br>
&nbsp;&nbsp;&nbsp;group&nbsp;is&nbsp;more&nbsp;important&nbsp;than&nbsp;the&nbsp;previous,&nbsp;and&nbsp;therefore&nbsp;appears<br>
&nbsp;&nbsp;&nbsp;closer&nbsp;to&nbsp;the&nbsp;top.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Keyword&nbsp;Grouping&nbsp;&#38;&nbsp;Ordering<br>
<br>
&nbsp;&nbsp;&nbsp;We&nbsp;could&nbsp;further&nbsp;enhance&nbsp;both&nbsp;the&nbsp;global&nbsp;and&nbsp;bug&nbsp;specific&nbsp;keyword&nbsp;list<br>
&nbsp;&nbsp;&nbsp;by&nbsp;grouping&nbsp;keywords.&nbsp;&nbsp;We&nbsp;should&nbsp;always&nbsp;have&nbsp;a&nbsp;"flat"&nbsp;view&nbsp;of<br>
&nbsp;&nbsp;&nbsp;keywords,&nbsp;but&nbsp;other&nbsp;ways&nbsp;of&nbsp;viewing&nbsp;the&nbsp;keywords&nbsp;would&nbsp;be&nbsp;useful&nbsp;too.<br>
<br>
&nbsp;&nbsp;&nbsp;If&nbsp;keyword&nbsp;applicability&nbsp;was&nbsp;implemented,&nbsp;we&nbsp;could&nbsp;group&nbsp;keywords<br>
&nbsp;&nbsp;&nbsp;based&nbsp;on&nbsp;their&nbsp;"applicability&nbsp;condition".&nbsp;&nbsp;Keywords&nbsp;that&nbsp;apply&nbsp;to&nbsp;all<br>
&nbsp;&nbsp;&nbsp;bugs&nbsp;could&nbsp;be&nbsp;separated&nbsp;from&nbsp;keywords&nbsp;that&nbsp;apply&nbsp;to&nbsp;a&nbsp;specific<br>
&nbsp;&nbsp;&nbsp;product,&nbsp;both&nbsp;on&nbsp;the&nbsp;global&nbsp;keyword&nbsp;list&nbsp;and&nbsp;the&nbsp;keyword&nbsp;list&nbsp;of&nbsp;a&nbsp;bug<br>
&nbsp;&nbsp;&nbsp;that&nbsp;is&nbsp;in&nbsp;that&nbsp;product.<br>
<br>
&nbsp;&nbsp;&nbsp;We&nbsp;could&nbsp;specify&nbsp;groups&nbsp;of&nbsp;our&nbsp;own.&nbsp;&nbsp;For&nbsp;example,&nbsp;many&nbsp;keywords&nbsp;are&nbsp;in<br>
&nbsp;&nbsp;&nbsp;a&nbsp;mutually&nbsp;exclusive&nbsp;group,&nbsp;essentially&nbsp;like&nbsp;radio&nbsp;buttons&nbsp;in&nbsp;a&nbsp;user<br>
&nbsp;&nbsp;&nbsp;interface.&nbsp;&nbsp;This&nbsp;creates&nbsp;a&nbsp;natural&nbsp;grouping,&nbsp;although&nbsp;other&nbsp;groupings<br>
&nbsp;&nbsp;&nbsp;occur&nbsp;(which&nbsp;depends&nbsp;on&nbsp;your&nbsp;keywords).<br>
<br>
&nbsp;&nbsp;&nbsp;It&nbsp;is&nbsp;possible&nbsp;that&nbsp;we&nbsp;could&nbsp;use&nbsp;collapsing/expanding&nbsp;operations&nbsp;on<br>
&nbsp;&nbsp;&nbsp;"twisties"&nbsp;to&nbsp;only&nbsp;should&nbsp;the&nbsp;groups&nbsp;we&nbsp;are&nbsp;interested&nbsp;in.<br>
<br>
&nbsp;&nbsp;&nbsp;And&nbsp;instead&nbsp;of&nbsp;grouping&nbsp;keywords,&nbsp;we&nbsp;could&nbsp;order&nbsp;them&nbsp;on&nbsp;some&nbsp;metric<br>
&nbsp;&nbsp;&nbsp;of&nbsp;usefulness,&nbsp;such&nbsp;as:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;when&nbsp;the&nbsp;keyword&nbsp;was&nbsp;last&nbsp;added&nbsp;to&nbsp;a&nbsp;bug<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;how&nbsp;many&nbsp;bugs&nbsp;the&nbsp;keyword&nbsp;is&nbsp;on<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;how&nbsp;many&nbsp;open&nbsp;bugs&nbsp;the&nbsp;keyword&nbsp;is&nbsp;on<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Opting&nbsp;Out&nbsp;Of&nbsp;Keywords<br>
<br>
&nbsp;&nbsp;&nbsp;Not&nbsp;all&nbsp;people&nbsp;are&nbsp;going&nbsp;to&nbsp;care&nbsp;about&nbsp;all&nbsp;keywords.&nbsp;&nbsp;Therefore&nbsp;it<br>
&nbsp;&nbsp;&nbsp;makes&nbsp;sense&nbsp;that&nbsp;you&nbsp;may&nbsp;wish&nbsp;to&nbsp;specify&nbsp;which&nbsp;keywords&nbsp;you&nbsp;are<br>
&nbsp;&nbsp;&nbsp;interested&nbsp;in,&nbsp;either&nbsp;on&nbsp;the&nbsp;bug&nbsp;page,&nbsp;or&nbsp;on&nbsp;notifications.<br>
<br>
&nbsp;&nbsp;&nbsp;Other&nbsp;keywords&nbsp;will&nbsp;therefore&nbsp;not&nbsp;bother&nbsp;users&nbsp;who&nbsp;are&nbsp;not&nbsp;interested<br>
&nbsp;&nbsp;&nbsp;in&nbsp;them.<br>
<br>
&nbsp;&nbsp;Keyword&nbsp;Security<br>
<br>
&nbsp;&nbsp;&nbsp;Currently&nbsp;all&nbsp;keywords&nbsp;are&nbsp;available&nbsp;and&nbsp;editable&nbsp;to&nbsp;all&nbsp;people&nbsp;with<br>
&nbsp;&nbsp;&nbsp;edit&nbsp;bugs&nbsp;access.&nbsp;&nbsp;This&nbsp;situation&nbsp;is&nbsp;clearly&nbsp;suboptimal.<br>
<br>
&nbsp;&nbsp;&nbsp;Although&nbsp;relying&nbsp;on&nbsp;good&nbsp;behaviour&nbsp;for&nbsp;people&nbsp;to&nbsp;not&nbsp;do&nbsp;what&nbsp;they<br>
&nbsp;&nbsp;&nbsp;shouldn't&nbsp;works&nbsp;reasonably&nbsp;well&nbsp;on&nbsp;the&nbsp;mozilla.org,&nbsp;it&nbsp;is&nbsp;better&nbsp;to<br>
&nbsp;&nbsp;&nbsp;enforce&nbsp;that&nbsp;behaviour&nbsp;-&nbsp;it&nbsp;can&nbsp;be&nbsp;breached&nbsp;through&nbsp;malice,&nbsp;accident<br>
&nbsp;&nbsp;&nbsp;or&nbsp;ignorance.<br>
<br>
&nbsp;&nbsp;&nbsp;And&nbsp;in&nbsp;the&nbsp;situation&nbsp;where&nbsp;it&nbsp;is&nbsp;desirable&nbsp;for&nbsp;the&nbsp;presence&nbsp;or&nbsp;absence<br>
&nbsp;&nbsp;&nbsp;of&nbsp;a&nbsp;keyword&nbsp;not&nbsp;to&nbsp;be&nbsp;revealed,&nbsp;organisations&nbsp;either&nbsp;need&nbsp;to&nbsp;be<br>
&nbsp;&nbsp;&nbsp;content&nbsp;with&nbsp;the&nbsp;divulgence,&nbsp;or&nbsp;not&nbsp;use&nbsp;keywords&nbsp;at&nbsp;all.<br>
<br>
&nbsp;&nbsp;&nbsp;In&nbsp;the&nbsp;situation&nbsp;where&nbsp;they&nbsp;choose&nbsp;to&nbsp;divulge,&nbsp;introducing&nbsp;the&nbsp;ability<br>
&nbsp;&nbsp;&nbsp;to&nbsp;restrict&nbsp;who&nbsp;can&nbsp;see&nbsp;the&nbsp;keyword&nbsp;would&nbsp;also&nbsp;reduce&nbsp;keyword<br>
&nbsp;&nbsp;&nbsp;overload.<br>
<br>
&nbsp;&nbsp;Personal&nbsp;Keywords<br>
<br>
&nbsp;&nbsp;&nbsp;Keywords&nbsp;join&nbsp;together&nbsp;a&nbsp;set&nbsp;of&nbsp;bugs&nbsp;which&nbsp;would&nbsp;otherwise&nbsp;be<br>
&nbsp;&nbsp;&nbsp;unrelated&nbsp;in&nbsp;the&nbsp;bug&nbsp;system.<br>
<br>
&nbsp;&nbsp;&nbsp;We&nbsp;allow&nbsp;users&nbsp;to&nbsp;store&nbsp;their&nbsp;own&nbsp;queries.&nbsp;&nbsp;However&nbsp;we&nbsp;don't&nbsp;allow<br>
&nbsp;&nbsp;&nbsp;them&nbsp;to&nbsp;store&nbsp;their&nbsp;own&nbsp;keywords&nbsp;on&nbsp;a&nbsp;bug.&nbsp;&nbsp;This&nbsp;reduces&nbsp;the<br>
&nbsp;&nbsp;&nbsp;usefulness&nbsp;of&nbsp;personal&nbsp;queries,&nbsp;since&nbsp;you&nbsp;cannot&nbsp;join&nbsp;a&nbsp;set&nbsp;of<br>
&nbsp;&nbsp;&nbsp;unrelated&nbsp;bugs&nbsp;together&nbsp;in&nbsp;a&nbsp;way&nbsp;that&nbsp;you&nbsp;wish.&nbsp;&nbsp;Lists&nbsp;of&nbsp;bug&nbsp;numbers<br>
&nbsp;&nbsp;&nbsp;can&nbsp;work,&nbsp;by&nbsp;they&nbsp;can&nbsp;only&nbsp;be&nbsp;used&nbsp;for&nbsp;small&nbsp;lists,&nbsp;and&nbsp;it&nbsp;is<br>
&nbsp;&nbsp;&nbsp;impossible&nbsp;to&nbsp;share&nbsp;a&nbsp;list&nbsp;between&nbsp;multiple&nbsp;queries.<br>
<br>
&nbsp;&nbsp;&nbsp;Personal&nbsp;keywords&nbsp;are&nbsp;necessary&nbsp;to&nbsp;replace&nbsp;personal&nbsp;tracking&nbsp;bugs,&nbsp;as<br>
&nbsp;&nbsp;&nbsp;they&nbsp;would&nbsp;not&nbsp;pollute&nbsp;the&nbsp;keyword&nbsp;space.&nbsp;&nbsp;Indeed,&nbsp;on&nbsp;many<br>
&nbsp;&nbsp;&nbsp;installations&nbsp;this&nbsp;could&nbsp;remove&nbsp;some&nbsp;keywords&nbsp;out&nbsp;of&nbsp;the&nbsp;global<br>
&nbsp;&nbsp;&nbsp;keyword&nbsp;space.<br>
<br>
&nbsp;&nbsp;&nbsp;In&nbsp;a&nbsp;similar&nbsp;vein&nbsp;and&nbsp;with&nbsp;similar&nbsp;effects,&nbsp;group&nbsp;keywords&nbsp;could&nbsp;be<br>
&nbsp;&nbsp;&nbsp;introduced&nbsp;that&nbsp;are&nbsp;only&nbsp;available&nbsp;to&nbsp;members&nbsp;of&nbsp;a&nbsp;specific&nbsp;group.<br>
<br>
&nbsp;&nbsp;Keyword&nbsp;Restrictions<br>
<br>
&nbsp;&nbsp;&nbsp;Keywords&nbsp;are&nbsp;not&nbsp;islands&nbsp;unto&nbsp;themselves.&nbsp;&nbsp;Along&nbsp;with&nbsp;their&nbsp;potential<br>
&nbsp;&nbsp;&nbsp;to&nbsp;be&nbsp;involved&nbsp;in&nbsp;the&nbsp;inter-field&nbsp;relationships&nbsp;mentioned&nbsp;earlier,<br>
&nbsp;&nbsp;&nbsp;keywords&nbsp;can&nbsp;also&nbsp;be&nbsp;related&nbsp;to&nbsp;other&nbsp;keywords.<br>
<br>
&nbsp;&nbsp;&nbsp;Essentially,&nbsp;there&nbsp;are&nbsp;two&nbsp;possibilities:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;a&nbsp;set&nbsp;of&nbsp;keywords&nbsp;are&nbsp;mutually&nbsp;exclusive<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;the&nbsp;presence&nbsp;of&nbsp;a&nbsp;keyword&nbsp;implies&nbsp;another&nbsp;keyword&nbsp;must&nbsp;be&nbsp;present<br>
<br>
&nbsp;&nbsp;&nbsp;Introduction&nbsp;of&nbsp;the&nbsp;ability&nbsp;to&nbsp;specify&nbsp;these&nbsp;restrictions&nbsp;would&nbsp;have<br>
&nbsp;&nbsp;&nbsp;benefits.<br>
<br>
&nbsp;&nbsp;&nbsp;If&nbsp;mutually&nbsp;exclusive&nbsp;keywords&nbsp;were&nbsp;present&nbsp;on&nbsp;a&nbsp;bug,&nbsp;their&nbsp;removal<br>
&nbsp;&nbsp;&nbsp;would&nbsp;fix&nbsp;up&nbsp;the&nbsp;database,&nbsp;as&nbsp;well&nbsp;as&nbsp;reducing&nbsp;the&nbsp;number&nbsp;of&nbsp;keywords<br>
&nbsp;&nbsp;&nbsp;on&nbsp;that&nbsp;bug.<br>
<br>
&nbsp;&nbsp;&nbsp;In&nbsp;the&nbsp;situation&nbsp;where&nbsp;a&nbsp;keyword&nbsp;implies&nbsp;another&nbsp;keyword,&nbsp;there&nbsp;are<br>
&nbsp;&nbsp;&nbsp;two&nbsp;possiblities&nbsp;as&nbsp;to&nbsp;how&nbsp;to&nbsp;handle&nbsp;the&nbsp;situation.<br>
<br>
&nbsp;&nbsp;&nbsp;The&nbsp;first&nbsp;is&nbsp;automatically&nbsp;add&nbsp;the&nbsp;keyword.&nbsp;&nbsp;This&nbsp;would&nbsp;fix&nbsp;up&nbsp;the<br>
&nbsp;&nbsp;&nbsp;database,&nbsp;but&nbsp;it&nbsp;would&nbsp;increase&nbsp;the&nbsp;number&nbsp;of&nbsp;keywords&nbsp;on&nbsp;a&nbsp;bug.<br>
<br>
&nbsp;&nbsp;&nbsp;The&nbsp;second&nbsp;is&nbsp;to&nbsp;automatically&nbsp;remove&nbsp;the&nbsp;keyword,&nbsp;and&nbsp;alter&nbsp;queries<br>
&nbsp;&nbsp;&nbsp;so&nbsp;they&nbsp;pick&nbsp;up&nbsp;the&nbsp;first&nbsp;keyword&nbsp;as&nbsp;well&nbsp;as&nbsp;the&nbsp;removed&nbsp;keyword.<br>
&nbsp;&nbsp;&nbsp;This&nbsp;would&nbsp;fix&nbsp;up&nbsp;the&nbsp;database&nbsp;and&nbsp;reduce&nbsp;the&nbsp;number&nbsp;of&nbsp;keywords&nbsp;on&nbsp;a<br>
&nbsp;&nbsp;&nbsp;bug,&nbsp;but&nbsp;it&nbsp;might&nbsp;confuse&nbsp;users&nbsp;who&nbsp;don't&nbsp;see&nbsp;the&nbsp;keyword.<br>
&nbsp;&nbsp;&nbsp;Alternatively,&nbsp;the&nbsp;implied&nbsp;keywords&nbsp;could&nbsp;be&nbsp;listed&nbsp;separately.<br>
<br>
Notifications<br>
<br>
&nbsp;&nbsp;&nbsp;Every&nbsp;time&nbsp;a&nbsp;bug&nbsp;gets&nbsp;changed&nbsp;notifications&nbsp;get&nbsp;sent&nbsp;out&nbsp;to&nbsp;people<br>
&nbsp;&nbsp;&nbsp;letting&nbsp;them&nbsp;know&nbsp;about&nbsp;what&nbsp;changes&nbsp;have&nbsp;been&nbsp;made.&nbsp;&nbsp;This&nbsp;is&nbsp;a<br>
&nbsp;&nbsp;&nbsp;significant&nbsp;feature,&nbsp;and&nbsp;all&nbsp;sorts&nbsp;of&nbsp;questions&nbsp;can&nbsp;be&nbsp;raised,&nbsp;but<br>
&nbsp;&nbsp;&nbsp;they&nbsp;mainly&nbsp;boil&nbsp;down&nbsp;to&nbsp;when&nbsp;they&nbsp;should&nbsp;be&nbsp;sent&nbsp;and&nbsp;what&nbsp;they&nbsp;should<br>
&nbsp;&nbsp;&nbsp;look&nbsp;like.<br>
<br>
&nbsp;&nbsp;Changes&nbsp;You're&nbsp;Interested&nbsp;In<br>
<br>
&nbsp;&nbsp;&nbsp;As&nbsp;of&nbsp;version&nbsp;2.12&nbsp;users&nbsp;can&nbsp;specify&nbsp;what&nbsp;sort&nbsp;of&nbsp;changes&nbsp;they&nbsp;are<br>
&nbsp;&nbsp;&nbsp;interested&nbsp;in&nbsp;receiving&nbsp;notifications&nbsp;for.&nbsp;&nbsp;However,&nbsp;this&nbsp;is&nbsp;still<br>
&nbsp;&nbsp;&nbsp;limited.&nbsp;&nbsp;As&nbsp;yet&nbsp;there&nbsp;is&nbsp;no&nbsp;facility&nbsp;to&nbsp;specify&nbsp;which&nbsp;keywords&nbsp;you<br>
&nbsp;&nbsp;&nbsp;care&nbsp;about,&nbsp;and&nbsp;whether&nbsp;you&nbsp;care&nbsp;about&nbsp;changes&nbsp;to&nbsp;fields&nbsp;such&nbsp;as&nbsp;the<br>
&nbsp;&nbsp;&nbsp;QA&nbsp;contact&nbsp;changes.<br>
&nbsp;&nbsp;&nbsp;Furthermore,&nbsp;often&nbsp;an&nbsp;unnecessary&nbsp;comment&nbsp;will&nbsp;go&nbsp;along&nbsp;with&nbsp;a&nbsp;change,<br>
&nbsp;&nbsp;&nbsp;either&nbsp;because&nbsp;it&nbsp;is&nbsp;required,&nbsp;or&nbsp;the&nbsp;commenter&nbsp;is&nbsp;ignorant&nbsp;of&nbsp;how&nbsp;the<br>
&nbsp;&nbsp;&nbsp;new&nbsp;system&nbsp;works.&nbsp;&nbsp;While&nbsp;explaining&nbsp;why&nbsp;you&nbsp;did&nbsp;something&nbsp;is&nbsp;useful,<br>
&nbsp;&nbsp;&nbsp;merely&nbsp;commenting&nbsp;on&nbsp;what&nbsp;you&nbsp;did&nbsp;is&nbsp;not&nbsp;because&nbsp;that&nbsp;information&nbsp;is<br>
&nbsp;&nbsp;&nbsp;already&nbsp;accessible&nbsp;view&nbsp;"Bug&nbsp;Activity".<br>
<br>
&nbsp;&nbsp;&nbsp;Because&nbsp;of&nbsp;this&nbsp;unnecessary&nbsp;comment,&nbsp;a&nbsp;lot&nbsp;of&nbsp;changes&nbsp;that&nbsp;would<br>
&nbsp;&nbsp;&nbsp;otherwise&nbsp;not&nbsp;generate&nbsp;notifications&nbsp;for&nbsp;certain&nbsp;people&nbsp;do&nbsp;so,&nbsp;because<br>
&nbsp;&nbsp;&nbsp;few&nbsp;people&nbsp;are&nbsp;willing&nbsp;to&nbsp;turn&nbsp;off&nbsp;comments.&nbsp;&nbsp;One&nbsp;way&nbsp;to&nbsp;deal&nbsp;with<br>
&nbsp;&nbsp;&nbsp;this&nbsp;problem&nbsp;is&nbsp;to&nbsp;allow&nbsp;people&nbsp;to&nbsp;specify&nbsp;that&nbsp;their&nbsp;comments&nbsp;are<br>
&nbsp;&nbsp;&nbsp;purely&nbsp;explanatory,&nbsp;and&nbsp;that&nbsp;anyone&nbsp;who&nbsp;is&nbsp;not&nbsp;interested&nbsp;in&nbsp;the<br>
&nbsp;&nbsp;&nbsp;change&nbsp;will&nbsp;not&nbsp;be&nbsp;interested&nbsp;in&nbsp;the&nbsp;comment.<br>
<br>
&nbsp;&nbsp;&nbsp;Furthermore,&nbsp;one&nbsp;possible&nbsp;rationale&nbsp;for&nbsp;unnecessary&nbsp;comments&nbsp;is&nbsp;that<br>
&nbsp;&nbsp;&nbsp;the&nbsp;bug&nbsp;activity&nbsp;does&nbsp;not&nbsp;display&nbsp;on&nbsp;the&nbsp;normal&nbsp;page&nbsp;and&nbsp;hence&nbsp;it&nbsp;is<br>
&nbsp;&nbsp;&nbsp;difficult&nbsp;to&nbsp;cross&nbsp;reference&nbsp;comments&nbsp;and&nbsp;actions.&nbsp;&nbsp;Hence,&nbsp;it&nbsp;would&nbsp;be<br>
&nbsp;&nbsp;&nbsp;beneficial&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;do&nbsp;this.<br>
<br>
&nbsp;&nbsp;Bugs&nbsp;You're&nbsp;Watching<br>
<br>
&nbsp;&nbsp;&nbsp;Currently&nbsp;to&nbsp;receive&nbsp;a&nbsp;notification&nbsp;about&nbsp;a&nbsp;bug&nbsp;you&nbsp;need&nbsp;to&nbsp;have&nbsp;your<br>
&nbsp;&nbsp;&nbsp;name&nbsp;on&nbsp;it.&nbsp;&nbsp;This&nbsp;is&nbsp;suboptimal&nbsp;because&nbsp;you&nbsp;need&nbsp;to&nbsp;know&nbsp;about&nbsp;a&nbsp;bug<br>
&nbsp;&nbsp;&nbsp;before&nbsp;you&nbsp;can&nbsp;receive&nbsp;notifications&nbsp;on&nbsp;it.&nbsp;&nbsp;Often&nbsp;you&nbsp;are&nbsp;interested<br>
&nbsp;&nbsp;&nbsp;in&nbsp;any&nbsp;bug&nbsp;with&nbsp;a&nbsp;field&nbsp;set&nbsp;to&nbsp;a&nbsp;specific&nbsp;value.&nbsp;&nbsp;For&nbsp;example,&nbsp;you<br>
&nbsp;&nbsp;&nbsp;might&nbsp;be&nbsp;interested&nbsp;in&nbsp;all&nbsp;bugs&nbsp;with&nbsp;a&nbsp;specific&nbsp;product,&nbsp;component&nbsp;or<br>
&nbsp;&nbsp;&nbsp;keyword.<br>
<br>
&nbsp;&nbsp;&nbsp;If&nbsp;someone&nbsp;could&nbsp;automatically&nbsp;receive&nbsp;notifications&nbsp;about&nbsp;these&nbsp;bugs,<br>
&nbsp;&nbsp;&nbsp;it&nbsp;would&nbsp;make&nbsp;everyone's&nbsp;lives&nbsp;easier.&nbsp;&nbsp;Currently&nbsp;the&nbsp;default&nbsp;assignee<br>
&nbsp;&nbsp;&nbsp;and&nbsp;QA&nbsp;contact&nbsp;for&nbsp;a&nbsp;component&nbsp;will&nbsp;automatically&nbsp;receive<br>
&nbsp;&nbsp;&nbsp;notifications&nbsp;for<br>
<br>
&nbsp;&nbsp;&nbsp;Question:&nbsp;&nbsp;This&nbsp;moves&nbsp;half&nbsp;way&nbsp;to&nbsp;a&nbsp;BCC.<br>
<br>
&nbsp;&nbsp;Bulk&nbsp;Changes<br>
<br>
&nbsp;&nbsp;&nbsp;A&nbsp;very&nbsp;useful&nbsp;feature&nbsp;of&nbsp;Bugzilla&nbsp;is&nbsp;the&nbsp;ability&nbsp;to&nbsp;perform&nbsp;an&nbsp;action<br>
&nbsp;&nbsp;&nbsp;on&nbsp;multiple&nbsp;bugs&nbsp;at&nbsp;once.&nbsp;&nbsp;However,&nbsp;this&nbsp;means&nbsp;that&nbsp;similar<br>
&nbsp;&nbsp;&nbsp;notifications&nbsp;are&nbsp;currently&nbsp;generated&nbsp;for&nbsp;each&nbsp;bug&nbsp;modified.<br>
<br>
&nbsp;&nbsp;&nbsp;This&nbsp;can&nbsp;result&nbsp;in&nbsp;a&nbsp;torrent&nbsp;of&nbsp;notifications&nbsp;that&nbsp;can&nbsp;annoy.<br>
<br>
&nbsp;&nbsp;&nbsp;Furthermore,&nbsp;since&nbsp;the&nbsp;bugs&nbsp;are&nbsp;all&nbsp;changed&nbsp;close&nbsp;to&nbsp;each&nbsp;other&nbsp;in<br>
&nbsp;&nbsp;&nbsp;time,&nbsp;it&nbsp;is&nbsp;easy&nbsp;for&nbsp;someone&nbsp;to&nbsp;mass&nbsp;delete&nbsp;all&nbsp;the&nbsp;notifications<br>
&nbsp;&nbsp;&nbsp;generated&nbsp;by&nbsp;a&nbsp;bulk&nbsp;change&nbsp;and&nbsp;miss&nbsp;an&nbsp;unrelated&nbsp;notification&nbsp;in&nbsp;the<br>
&nbsp;&nbsp;&nbsp;middle.<br>
<br>
&nbsp;&nbsp;&nbsp;These&nbsp;factors&nbsp;can&nbsp;lead&nbsp;to&nbsp;a&nbsp;tendency&nbsp;for&nbsp;people&nbsp;to&nbsp;delay&nbsp;bulk&nbsp;changes,<br>
&nbsp;&nbsp;&nbsp;or&nbsp;avoid&nbsp;them&nbsp;entirely.&nbsp;&nbsp;This&nbsp;is&nbsp;suboptimal.<br>
<br>
&nbsp;&nbsp;&nbsp;It&nbsp;would&nbsp;be&nbsp;better&nbsp;if&nbsp;a&nbsp;bulk&nbsp;change&nbsp;generated&nbsp;only&nbsp;one&nbsp;notification<br>
&nbsp;&nbsp;&nbsp;mail.&nbsp;&nbsp;This&nbsp;would&nbsp;vastly&nbsp;reduce&nbsp;the&nbsp;annoyance&nbsp;factor,&nbsp;and&nbsp;prevent<br>
&nbsp;&nbsp;&nbsp;accidental&nbsp;deletion&nbsp;of&nbsp;notifications.<br>
<br>
&nbsp;&nbsp;&nbsp;One&nbsp;problem&nbsp;with&nbsp;this&nbsp;change&nbsp;is&nbsp;that&nbsp;some&nbsp;people&nbsp;separate&nbsp;out<br>
&nbsp;&nbsp;&nbsp;notifications&nbsp;using&nbsp;filtering.&nbsp;&nbsp;This&nbsp;means&nbsp;that&nbsp;they&nbsp;would&nbsp;no&nbsp;longer<br>
&nbsp;&nbsp;&nbsp;be&nbsp;match&nbsp;parts&nbsp;of&nbsp;a&nbsp;bulk&nbsp;change&nbsp;under&nbsp;different&nbsp;filtering&nbsp;rules.<br>
<br>
&nbsp;&nbsp;&nbsp;One&nbsp;possibility&nbsp;to&nbsp;resolve&nbsp;this&nbsp;is&nbsp;to&nbsp;allow&nbsp;people&nbsp;to&nbsp;specify&nbsp;groups<br>
&nbsp;&nbsp;&nbsp;of&nbsp;bugs.&nbsp;&nbsp;All&nbsp;bugs&nbsp;within&nbsp;a&nbsp;group&nbsp;would&nbsp;go&nbsp;into&nbsp;the&nbsp;same<br>
&nbsp;&nbsp;&nbsp;notification.&nbsp;&nbsp;The&nbsp;filters&nbsp;could&nbsp;then&nbsp;distinguish&nbsp;the&nbsp;different&nbsp;bug<br>
&nbsp;&nbsp;&nbsp;groups.<br>
<br>
&nbsp;&nbsp;&nbsp;In&nbsp;any&nbsp;case,&nbsp;it&nbsp;is&nbsp;likely&nbsp;there&nbsp;would&nbsp;need&nbsp;to&nbsp;be&nbsp;a&nbsp;transition&nbsp;period<br>
&nbsp;&nbsp;&nbsp;to&nbsp;allow&nbsp;people&nbsp;to&nbsp;alter&nbsp;their&nbsp;filters.<br>
<br>
Nominations<br>
<br>
&nbsp;&nbsp;&nbsp;?<br>
<br>
Linking&nbsp;Bugzilla&nbsp;Installations<br>
<br>
&nbsp;&nbsp;&nbsp;The&nbsp;first&nbsp;example&nbsp;of&nbsp;linking&nbsp;Bugzilla&nbsp;installations&nbsp;together&nbsp;has&nbsp;is<br>
&nbsp;&nbsp;&nbsp;the&nbsp;introduction&nbsp;of&nbsp;bug&nbsp;moving&nbsp;in&nbsp;version&nbsp;2.12.&nbsp;&nbsp;However,&nbsp;it&nbsp;would&nbsp;be<br>
&nbsp;&nbsp;&nbsp;useful&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;link&nbsp;installations&nbsp;in&nbsp;more&nbsp;ways.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Dependencies&nbsp;and&nbsp;other&nbsp;relationships&nbsp;between&nbsp;bugs&nbsp;in&nbsp;other<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;installations.&nbsp;&nbsp;This&nbsp;is&nbsp;difficult&nbsp;because&nbsp;dependencies&nbsp;are<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;synchronised&nbsp;on&nbsp;both&nbsp;bugs,&nbsp;so&nbsp;the&nbsp;installation&nbsp;that&nbsp;changes<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dependencies&nbsp;would&nbsp;need&nbsp;to&nbsp;communicate&nbsp;the&nbsp;new&nbsp;state&nbsp;to&nbsp;the&nbsp;other<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;installation.&nbsp;&nbsp;It&nbsp;would&nbsp;also&nbsp;mean&nbsp;that&nbsp;relationships&nbsp;and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notifications&nbsp;that&nbsp;refer&nbsp;to&nbsp;other&nbsp;bugs&nbsp;would&nbsp;need&nbsp;to&nbsp;communicate<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;the&nbsp;other&nbsp;installation.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;References&nbsp;to&nbsp;bugs&nbsp;in&nbsp;other&nbsp;installations.&nbsp;&nbsp;Currently&nbsp;if&nbsp;you&nbsp;type<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"bug&nbsp;XXX"&nbsp;or&nbsp;"bug&nbsp;#XXX"&nbsp;where&nbsp;XXX&nbsp;is&nbsp;a&nbsp;number,&nbsp;you&nbsp;get&nbsp;an<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;automatic&nbsp;hyperlink&nbsp;to&nbsp;that&nbsp;bug.&nbsp;&nbsp;It&nbsp;would&nbsp;be&nbsp;useful&nbsp;if&nbsp;you&nbsp;could<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;say&nbsp;"YYY&nbsp;bug&nbsp;#XXX"&nbsp;where&nbsp;YYY&nbsp;is&nbsp;the&nbsp;name&nbsp;of&nbsp;another&nbsp;installation.<br>
<br>
Retirement<br>
<br>
&nbsp;&nbsp;&nbsp;?<br>
<br>
Whiny&nbsp;Reports<br>
<br>
&nbsp;&nbsp;&nbsp;?<br>
<br>
&nbsp;&nbsp;Group&nbsp;Redesign<br>
<br>
&nbsp;&nbsp;&nbsp;?<br>
<br>
&nbsp;&nbsp;Hard&nbsp;Wrapping&nbsp;Comments<br>
<br>
&nbsp;&nbsp;&nbsp;Currently&nbsp;Bugzilla&nbsp;"hard&nbsp;wraps"&nbsp;its&nbsp;comments&nbsp;to&nbsp;a&nbsp;specific&nbsp;line&nbsp;size,<br>
&nbsp;&nbsp;&nbsp;similar&nbsp;to&nbsp;E-Mail.&nbsp;&nbsp;This&nbsp;has&nbsp;various&nbsp;problems:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;The&nbsp;way&nbsp;it&nbsp;currently&nbsp;works,&nbsp;wrapping&nbsp;is&nbsp;done&nbsp;in&nbsp;the&nbsp;browser&nbsp;at<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;submission&nbsp;time&nbsp;using&nbsp;a&nbsp;non-standard&nbsp;HTML&nbsp;extension&nbsp;not&nbsp;supported<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;by&nbsp;some&nbsp;(uncommon)&nbsp;browsers.&nbsp;&nbsp;These&nbsp;browsers&nbsp;generate&nbsp;comments<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that&nbsp;scroll&nbsp;off&nbsp;the&nbsp;right&nbsp;side&nbsp;of&nbsp;the&nbsp;screen.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Because&nbsp;comments&nbsp;are&nbsp;of&nbsp;fixed&nbsp;width,&nbsp;when&nbsp;you&nbsp;expand&nbsp;your&nbsp;browser<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window,&nbsp;the&nbsp;comments&nbsp;do&nbsp;not&nbsp;expand&nbsp;to&nbsp;fit&nbsp;available&nbsp;space.<br>
<br>
&nbsp;&nbsp;&nbsp;It&nbsp;would&nbsp;be&nbsp;much&nbsp;better&nbsp;to&nbsp;move&nbsp;to&nbsp;a&nbsp;world&nbsp;of&nbsp;soft&nbsp;wrapping,&nbsp;where&nbsp;the<br>
&nbsp;&nbsp;&nbsp;browser&nbsp;wraps&nbsp;the&nbsp;text&nbsp;at&nbsp;display&nbsp;time,&nbsp;similar&nbsp;to&nbsp;a&nbsp;world&nbsp;processor.<br>
&nbsp;&nbsp;&nbsp;&nbsp;And&nbsp;as&nbsp;in&nbsp;a&nbsp;word&nbsp;processor,&nbsp;soft&nbsp;wrapping&nbsp;does&nbsp;not&nbsp;preclude&nbsp;the<br>
&nbsp;&nbsp;&nbsp;insertion&nbsp;of&nbsp;newlines.<br>
<br>
&nbsp;&nbsp;&nbsp;Hard&nbsp;wrapping&nbsp;is&nbsp;too&nbsp;entrenched&nbsp;into&nbsp;text&nbsp;E-Mail&nbsp;to&nbsp;fix,&nbsp;but&nbsp;we&nbsp;can<br>
&nbsp;&nbsp;&nbsp;fix&nbsp;Bugzilla&nbsp;without&nbsp;causing&nbsp;any&nbsp;problems.&nbsp;&nbsp;The&nbsp;old&nbsp;content&nbsp;will&nbsp;still<br>
&nbsp;&nbsp;&nbsp;be&nbsp;wrapped&nbsp;too&nbsp;early,&nbsp;but&nbsp;at&nbsp;least&nbsp;new&nbsp;content&nbsp;will&nbsp;work.<br>
&nbsp;&nbsp;&nbsp;</P
>
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="tinderbox.html"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="variants.html"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Tinderbox/Tinderbox2</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Bugzilla Variants and Competitors</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -4,7 +4,7 @@
>Installation General Notes</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="bsdinstall.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="win32.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,13 +70,17 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="geninstall">3.5. Installation General Notes</H1
NAME="geninstall"
>3.5. Installation General Notes</A
></H1
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN874">3.5.1. Modifying Your Running System</H2
NAME="AEN941"
>3.5.1. Modifying Your Running System</A
></H2
><P
>&#13; Bugzilla optimizes database lookups by storing all relatively static
information in the versioncache file, located in the data/ subdirectory
@@ -110,26 +111,15 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN881">3.5.2. Upgrading From Previous Versions</H2
NAME="AEN948"
>3.5.2. Upgrading From Previous Versions</A
></H2
><P
>&#13; A plain Bugzilla is fairly easy to upgrade from one version to a newer one.
However, things get a bit more complicated if you've made changes to
Bugzilla's code. In this case, you may have to re-make or reapply those
changes.
It is recommended that you take a backup of your database and your entire
Bugzilla installation before attempting an upgrade. You can upgrade a 'clean'
installation by untarring a new tarball over the old installation. If you
are upgrading from 2.12 or later, you can type <TT
CLASS="filename"
>cvs -z3
update</TT
>, and resolve conflicts if there are any.
</P
><P
>&#13; Because the developers of Bugzilla are constantly adding new tables, columns
and fields, you'll probably get SQL errors if you just update the code and
attempt to use Bugzilla. Always run the checksetup.pl script whenever
you upgrade your installation.
>&#13; The developers of Bugzilla are constantly adding new tables, columns and
fields. You'll get SQL errors if you just update the code. The strategy
to update is to simply always run the checksetup.pl script whenever
you upgrade your installation of Bugzilla. If you want to see what has
changed, you can read the comments in that file, starting from the end.
</P
><P
>&#13; If you are running Bugzilla version 2.8 or lower, and wish to upgrade to
@@ -142,10 +132,12 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="htaccess">3.5.3. <TT
NAME="htaccess"
>3.5.3. <TT
CLASS="filename"
>.htaccess</TT
> files and security</H2
> files and security</A
></H2
><P
>&#13; To enhance the security of your Bugzilla installation,
Bugzilla will generate
@@ -161,9 +153,7 @@ CLASS="filename"
generate the <TT
CLASS="filename"
>.htaccess</TT
> files. These .htaccess files
will not work with Apache 1.2.x - but this has security holes, so you
shouldn't be using it anyway.
> files.
<DIV
CLASS="note"
@@ -297,10 +287,12 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="mod-throttle">3.5.4. <TT
NAME="mod-throttle"
>3.5.4. <TT
CLASS="filename"
>mod_throttle</TT
> and Security</H2
> and Security</A
></H2
><P
>&#13; It is possible for a user, by mistake or on purpose, to access
the database many times in a row which can result in very slow
@@ -331,7 +323,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="content-type">3.5.5. Preventing untrusted Bugzilla content from executing malicious Javascript code</H2
NAME="content-type"
>3.5.5. Preventing untrusted Bugzilla content from executing malicious Javascript code</A
></H2
><P
>It is possible for a Bugzilla to execute malicious
Javascript code. Due to internationalization concerns, we are
@@ -388,7 +382,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="unixhistory">3.5.6. UNIX Installation Instructions History</H2
NAME="unixhistory"
>3.5.6. UNIX Installation Instructions History</A
></H2
><P
>&#13; This document was originally adapted from the Bonsai
installation instructions by Terry Weissman
@@ -427,7 +423,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -439,7 +434,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="bsdinstall.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -448,7 +442,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -457,7 +450,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="win32.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -473,7 +465,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>PREAMBLE</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-1.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-0">0. PREAMBLE</H1
NAME="gfdl-0"
>0. PREAMBLE</A
></H1
><P
>The purpose of this License is to make a manual, textbook,
or other written document "free" in the sense of freedom: to
@@ -103,7 +102,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -115,7 +113,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -124,7 +121,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -133,7 +129,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-1.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -149,7 +144,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>APPLICABILITY AND DEFINITIONS</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-0.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-2.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-1">1. APPLICABILITY AND DEFINITIONS</H1
NAME="gfdl-1"
>1. APPLICABILITY AND DEFINITIONS</A
></H1
><P
>This License applies to any manual or other work that
contains a notice placed by the copyright holder saying it can be
@@ -144,7 +143,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -156,7 +154,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-0.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -165,7 +162,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -174,7 +170,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-2.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -190,7 +185,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>FUTURE REVISIONS OF THIS LICENSE</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-9.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-howto.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-10">10. FUTURE REVISIONS OF THIS LICENSE</H1
NAME="gfdl-10"
>10. FUTURE REVISIONS OF THIS LICENSE</A
></H1
><P
>The Free Software Foundation may publish new, revised
versions of the GNU Free Documentation License from time to time.
@@ -100,7 +99,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -112,7 +110,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-9.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -121,7 +118,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -130,7 +126,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-howto.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -146,7 +141,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>VERBATIM COPYING</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-1.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-3.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-2">2. VERBATIM COPYING</H1
NAME="gfdl-2"
>2. VERBATIM COPYING</A
></H1
><P
>You may copy and distribute the Document in any medium,
either commercially or noncommercially, provided that this
@@ -94,7 +93,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -106,7 +104,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-1.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -115,7 +112,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -124,7 +120,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-3.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -140,7 +135,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>COPYING IN QUANTITY</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-2.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-4.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-3">3. COPYING IN QUANTITY</H1
NAME="gfdl-3"
>3. COPYING IN QUANTITY</A
></H1
><P
>If you publish printed copies of the Document numbering more
than 100, and the Document's license notice requires Cover Texts,
@@ -118,7 +117,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -130,7 +128,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-2.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -139,7 +136,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -148,7 +144,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-4.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -164,7 +159,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>MODIFICATIONS</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-3.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-5.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-4">4. MODIFICATIONS</H1
NAME="gfdl-4"
>4. MODIFICATIONS</A
></H1
><P
>You may copy and distribute a Modified Version of the
Document under the conditions of sections 2 and 3 above, provided
@@ -224,7 +223,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -236,7 +234,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-3.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -245,7 +242,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -254,7 +250,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-5.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -270,7 +265,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>COMBINING DOCUMENTS</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-4.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-6.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-5">5. COMBINING DOCUMENTS</H1
NAME="gfdl-5"
>5. COMBINING DOCUMENTS</A
></H1
><P
>You may combine the Document with other documents released
under this License, under the terms defined in section 4 above for
@@ -103,7 +102,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -115,7 +113,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-4.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -124,7 +121,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -133,7 +129,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-6.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -149,7 +144,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>COLLECTIONS OF DOCUMENTS</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-5.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-7.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-6">6. COLLECTIONS OF DOCUMENTS</H1
NAME="gfdl-6"
>6. COLLECTIONS OF DOCUMENTS</A
></H1
><P
>You may make a collection consisting of the Document and
other documents released under this License, and replace the
@@ -93,7 +92,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -105,7 +103,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-5.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -114,7 +111,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -123,7 +119,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-7.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -139,7 +134,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>AGGREGATION WITH INDEPENDENT WORKS</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-6.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-8.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-7">7. AGGREGATION WITH INDEPENDENT WORKS</H1
NAME="gfdl-7"
>7. AGGREGATION WITH INDEPENDENT WORKS</A
></H1
><P
>A compilation of the Document or its derivatives with other
separate and independent documents or works, in or on a volume of
@@ -97,7 +96,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -109,7 +107,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-6.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -118,7 +115,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -127,7 +123,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-8.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -143,7 +138,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>TRANSLATION</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-7.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-9.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-8">8. TRANSLATION</H1
NAME="gfdl-8"
>8. TRANSLATION</A
></H1
><P
>Translation is considered a kind of modification, so you may
distribute translations of the Document under the terms of section
@@ -92,7 +91,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -104,7 +102,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-7.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -113,7 +110,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -122,7 +118,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-9.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -138,7 +133,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>TERMINATION</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-8.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-10.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-9">9. TERMINATION</H1
NAME="gfdl-9"
>9. TERMINATION</A
></H1
><P
>You may not copy, modify, sublicense, or distribute the
Document except as expressly provided for under this License. Any
@@ -89,7 +88,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -101,7 +99,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-8.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -110,7 +107,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -119,7 +115,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-10.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -135,7 +130,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>How to use this License for your documents</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-10.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="glossary.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,13 +70,17 @@ CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="gfdl-howto">How to use this License for your documents</H1
NAME="gfdl-howto"
>How to use this License for your documents</A
></H1
><P
>To use this License in a document you have written, include
a copy of the License in the document and put the following
copyright and license notices just after the title page:</P
><A
NAME="AEN2605"><BLOCKQUOTE
NAME="AEN2673"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>&#13; Copyright (c) YEAR YOUR NAME.
@@ -109,7 +110,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -121,7 +121,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-10.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -130,7 +129,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -139,7 +137,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="glossary.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -155,7 +152,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>GNU Free Documentation License</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -25,7 +25,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -43,7 +42,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="bzhacking.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -57,7 +55,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl-0.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -69,7 +66,9 @@ WIDTH="100%"></DIV
CLASS="appendix"
><H1
><A
NAME="gfdl">Appendix E. GNU Free Documentation License</H1
NAME="gfdl"
>Appendix E. GNU Free Documentation License</A
></H1
><DIV
CLASS="TOC"
><DL
@@ -142,7 +141,9 @@ HREF="gfdl-howto.html"
><P
>Version 1.1, March 2000</P
><A
NAME="AEN2515"><BLOCKQUOTE
NAME="AEN2583"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>Copyright (C) 2000 Free Software Foundation, Inc.
@@ -156,7 +157,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -168,7 +168,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="bzhacking.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -177,7 +176,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -186,7 +184,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="gfdl-0.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

View File

@@ -4,7 +4,7 @@
>Glossary</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -22,7 +22,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -40,7 +39,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="gfdl-howto.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -62,13 +60,17 @@ WIDTH="100%"></DIV
CLASS="GLOSSARY"
><H1
><A
NAME="glossary">Glossary</H1
NAME="glossary"
>Glossary</A
></H1
><DIV
CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="AEN2610">0-9, high ascii</H1
NAME="AEN2678"
>0-9, high ascii</A
></H1
><DL
><DT
><B
@@ -102,7 +104,9 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-a">A</H1
NAME="gloss-a"
>A</A
></H1
><DL
><DT
><B
@@ -135,7 +139,9 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-b">B</H1
NAME="gloss-b"
>B</A
></H1
><DL
><DT
><B
@@ -206,12 +212,16 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-c"></H1
NAME="gloss-c"
></A
></H1
><DL
><DT
><A
NAME="gloss-component"><B
NAME="gloss-component"
><B
>Component</B
></A
></DT
><DD
><P
@@ -224,11 +234,13 @@ NAME="gloss-component"><B
></DD
><DT
><A
NAME="gloss-cpan"><B
NAME="gloss-cpan"
><B
><SPAN
CLASS="acronym"
>CPAN</SPAN
></B
></A
></DT
><DD
><P
@@ -256,7 +268,9 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-d">D</H1
NAME="gloss-d"
>D</A
></H1
><DL
><DT
><B
@@ -284,7 +298,9 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-g"></H1
NAME="gloss-g"
></A
></H1
><DL
><DT
><B
@@ -319,12 +335,16 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-i">I</H1
NAME="gloss-i"
>I</A
></H1
><DL
><DT
><A
NAME="gloss-infiniteloop"><B
NAME="gloss-infiniteloop"
><B
>Infinite Loop</B
></A
></DT
><DD
><P
@@ -337,7 +357,9 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-m">M</H1
NAME="gloss-m"
>M</A
></H1
><DL
><DT
><B
@@ -362,7 +384,9 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-p">P</H1
NAME="gloss-p"
>P</A
></H1
><DL
><DT
><B
@@ -378,7 +402,9 @@ NAME="gloss-p">P</H1
><DIV
CLASS="example"
><A
NAME="AEN2701"><P
NAME="AEN2769"
></A
><P
><B
>Example 1. A Sample Product</B
></P
@@ -443,7 +469,9 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-q">Q</H1
NAME="gloss-q"
>Q</A
></H1
><DL
><DT
><B
@@ -482,12 +510,16 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-r">R</H1
NAME="gloss-r"
>R</A
></H1
><DL
><DT
><A
NAME="gloss-recursion"><B
NAME="gloss-recursion"
><B
>Recursion</B
></A
></DT
><DD
><P
@@ -510,7 +542,9 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-s">S</H1
NAME="gloss-s"
>S</A
></H1
><DL
><DT
><B
@@ -573,12 +607,16 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-t">T</H1
NAME="gloss-t"
>T</A
></H1
><DL
><DT
><A
NAME="gloss-target-milestone"><B
NAME="gloss-target-milestone"
><B
>Target Milestone</B
></A
></DT
><DD
><P
@@ -602,12 +640,16 @@ CLASS="glossdiv"
><H1
CLASS="glossdiv"
><A
NAME="gloss-z">Z</H1
NAME="gloss-z"
>Z</A
></H1
><DL
><DT
><A
NAME="zarro-boogs-found"><B
NAME="zarro-boogs-found"
><B
>Zarro Boogs Found</B
></A
></DT
><DD
><P
@@ -623,7 +665,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -635,7 +676,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="gfdl-howto.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -644,7 +684,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>MySQL Permissions &#38; Grant Tables</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="dbdoc.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="patches.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="granttables">C.3. MySQL Permissions &#38; Grant Tables</H1
NAME="granttables"
>C.3. MySQL Permissions &#38; Grant Tables</A
></H1
><DIV
CLASS="note"
><P
@@ -223,7 +222,7 @@ FILE,<br>
<br>
OR<br>
<br>
mysql&#62;&nbsp;GRANT&nbsp;ALL&nbsp;PRIVILEGES&nbsp;<br>
mysql&#62;&nbsp;GRANT&nbsp;ALL&nbsp;PRIVELEGES&nbsp;<br>
ON&nbsp;keystone.*<br>
TO&nbsp;&#60;$sys_dbuser&nbsp;name&#62;@localhost<br>
IDENTIFIED&nbsp;BY&nbsp;'(password)'<br>
@@ -289,7 +288,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -301,7 +299,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="dbdoc.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -310,7 +307,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -319,7 +315,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="patches.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -335,7 +330,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="database.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -1,431 +0,0 @@
<HTML
><HEAD
><TITLE
>Groups and Group Security</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="Administering Bugzilla"
HREF="administration.html"><LINK
REL="PREVIOUS"
TITLE="Voting"
HREF="voting.html"><LINK
REL="NEXT"
TITLE="Bugzilla Security"
HREF="security.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="voting.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 5. Administering Bugzilla</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="security.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="groups">5.5. Groups and Group Security</H1
><P
>Groups can be very useful in bugzilla, because they allow users
to isolate bugs or products that should only be seen by certain people.
Groups can also be a complicated minefield of interdependencies and
weirdness if mismanaged.
<DIV
CLASS="example"
><A
NAME="AEN1521"><P
><B
>Example 5-5. When to Use Group Security</B
></P
><DIV
CLASS="informalexample"
><A
NAME="AEN1523"><P
></P
><P
>Many Bugzilla sites isolate "Security-related" bugs from all
other bugs. This way, they can have a fix ready before the security
vulnerability is announced to the world. You can create a
"Security" product which, by default, has no members, and only add
members to the group (in their individual User page, as described
under User Administration) who should have priveleged access to
"Security" bugs. Alternately, you may create a Group independently
of any Product, and change the Group mask on individual bugs to
restrict access to members only of certain Groups.</P
><P
></P
></DIV
></DIV
>
Groups only work if you enable the "usebuggroups" paramater. In
addition, if the "usebuggroupsentry" parameter is "On", one can
restrict access to products by groups, so that only members of a
product group are able to view bugs within that product. Group security
in Bugzilla can be divided into two categories: Generic and
Product-Based.</P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Groups in Bugzilla are a complicated beast that evolved out of
very simple user permission bitmasks, apparently itself derived from
common concepts in UNIX access controls. A "bitmask" is a
fixed-length number whose value can describe one, and only one, set
of states. For instance, UNIX file permissions are assigned bitmask
values: "execute" has a value of 1, "write" has a value of 2, and
"read" has a value of 4. Add them together, and a file can be read,
written to, and executed if it has a bitmask of "7". (This is a
simplified example -- anybody who knows UNIX security knows there is
much more to it than this. Please bear with me for the purpose of
this note.) The only way a bitmask scheme can work is by doubling the
bit count for each value. Thus if UNIX wanted to offer another file
permission, the next would have to be a value of 8, then the next 16,
the next 32, etc.</P
><P
>Similarly, Bugzilla offers a bitmask to define group
permissions, with an internal limit of 64. Several are already
occupied by built-in permissions. The way around this limitation is
to avoid assigning groups to products if you have many products,
avoid bloating of group lists, and religiously prune irrelevant
groups. In reality, most installations of Bugzilla support far fewer
than 64 groups, so this limitation has not hit for most sites, but it
is on the table to be revised for Bugzilla 3.0 because it interferes
with the security schemes of some administrators.</P
></TD
></TR
></TABLE
></DIV
><P
>To enable Generic Group Security ("usebuggroups"):</P
><P
></P
><OL
TYPE="1"
><LI
><P
>Turn "On" "usebuggroups" in the "Edit Parameters"
screen.</P
></LI
><LI
><P
>You will generally have no groups set up. Select the "groups"
link in the footer.</P
></LI
><LI
><P
>Take a moment to understand the instructions on the "Edit
Groups" screen. Once you feel confident you understand what is
expected of you, select the "Add Group" link.</P
></LI
><LI
><P
>Fill out the "New Name" (remember, no spaces!), "New
Description", and "New User RegExp" fields. "New User RegExp"
allows you to automatically place all users who fulfill the Regular
Expression into the new group.
<DIV
CLASS="example"
><A
NAME="AEN1538"><P
><B
>Example 5-6. Creating a New Group</B
></P
><DIV
CLASS="informalexample"
><A
NAME="AEN1540"><P
></P
><P
>I created a group called DefaultGroup with a description
of
<SPAN
CLASS="QUOTE"
>"This is simply a group to play with"</SPAN
>
, and a New User RegExp of
<SPAN
CLASS="QUOTE"
>".*@mydomain.tld"</SPAN
>
. This new group automatically includes all Bugzilla users with
"@mydomain.tld" at the end of their user id. When I finished,
my new group was assigned bit #128.</P
><P
></P
></DIV
></DIV
>
When you have finished, select the Add button.</P
></LI
></OL
><P
>To enable Product-Based Group Security
(usebuggroupsentry):</P
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Don't forget that you only have 64 groups masks available,
total, for your installation of Bugzilla! If you plan on having more
than 50 products in your individual Bugzilla installation, and
require group security for your products, you should consider either
running multiple Bugzillas or using Generic Group Security instead of
Product-Based ("usebuggroupsentry") Group Security.</P
></TD
></TR
></TABLE
></DIV
><P
></P
><OL
TYPE="1"
><LI
><P
>Turn "On" "usebuggroups" and "usebuggroupsentry" in the "Edit
Parameters" screen.</P
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>"usebuggroupsentry" has the capacity to prevent the
administrative user from directly altering bugs because of
conflicting group permissions. If you plan on using
"usebuggroupsentry", you should plan on restricting
administrative account usage to administrative duties only. In
other words, manage bugs with an unpriveleged user account, and
manage users, groups, Products, etc. with the administrative
account.</P
></TD
></TR
></TABLE
></DIV
></LI
><LI
><P
>You will generally have no Groups set up, unless you enabled
"usebuggroupsentry" prior to creating any Products. To create
"Generic Group Security" groups, follow the instructions given
above. To create Product-Based Group security, simply follow the
instructions for creating a new Product. If you need to add users
to these new groups as you create them, you will find the option to
add them to the group available under the "Edit User"
screens.</P
></LI
></OL
><P
>You may find this example illustrative for how bug groups work.
<DIV
CLASS="example"
><A
NAME="AEN1555"><P
><B
>Example 5-7. Bugzilla Groups</B
></P
><P
CLASS="literallayout"
>Bugzilla&nbsp;Groups&nbsp;example&nbsp;-----------------------&nbsp;For<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this&nbsp;example,&nbsp;let&nbsp;us&nbsp;suppose&nbsp;we&nbsp;have&nbsp;four&nbsp;groups,&nbsp;call&nbsp;them&nbsp;Group1,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Group2,&nbsp;Group3,&nbsp;and&nbsp;Group4.&nbsp;We&nbsp;have&nbsp;5&nbsp;users,&nbsp;User1,&nbsp;User2,&nbsp;User3,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User4,&nbsp;User5.&nbsp;We&nbsp;have&nbsp;8&nbsp;bugs,&nbsp;Bug1,&nbsp;...,&nbsp;Bug8.&nbsp;Group&nbsp;membership&nbsp;is<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;defined&nbsp;by&nbsp;this&nbsp;chart:&nbsp;(X&nbsp;denotes&nbsp;that&nbsp;user&nbsp;is&nbsp;in&nbsp;that&nbsp;group.)&nbsp;(I<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;apologize&nbsp;for&nbsp;the&nbsp;nasty&nbsp;formatting&nbsp;of&nbsp;this&nbsp;table.&nbsp;Try&nbsp;viewing&nbsp;it&nbsp;in&nbsp;a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text-based&nbsp;browser&nbsp;or&nbsp;something&nbsp;for&nbsp;now.&nbsp;-MPB)&nbsp;G&nbsp;G&nbsp;G&nbsp;G&nbsp;r&nbsp;r&nbsp;r&nbsp;r&nbsp;o&nbsp;o&nbsp;o<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o&nbsp;u&nbsp;u&nbsp;u&nbsp;u&nbsp;p&nbsp;p&nbsp;p&nbsp;p&nbsp;1&nbsp;2&nbsp;3&nbsp;4&nbsp;+-+-+-+-+&nbsp;User1|X|&nbsp;|&nbsp;|&nbsp;|&nbsp;+-+-+-+-+&nbsp;User2|<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|X|&nbsp;|&nbsp;|&nbsp;+-+-+-+-+&nbsp;User3|X|&nbsp;|X|&nbsp;|&nbsp;+-+-+-+-+&nbsp;User4|X|X|X|&nbsp;|&nbsp;+-+-+-+-+<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User5|&nbsp;|&nbsp;|&nbsp;|&nbsp;|&nbsp;+-+-+-+-+&nbsp;Bug&nbsp;restrictions&nbsp;are&nbsp;defined&nbsp;by&nbsp;this&nbsp;chart:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(X&nbsp;denotes&nbsp;that&nbsp;bug&nbsp;is&nbsp;restricted&nbsp;to&nbsp;that&nbsp;group.)&nbsp;G&nbsp;G&nbsp;G&nbsp;G&nbsp;r&nbsp;r&nbsp;r&nbsp;r&nbsp;o&nbsp;o<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o&nbsp;o&nbsp;u&nbsp;u&nbsp;u&nbsp;u&nbsp;p&nbsp;p&nbsp;p&nbsp;p&nbsp;1&nbsp;2&nbsp;3&nbsp;4&nbsp;+-+-+-+-+&nbsp;Bug1|&nbsp;|&nbsp;|&nbsp;|&nbsp;|&nbsp;+-+-+-+-+&nbsp;Bug2|<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|X|&nbsp;|&nbsp;|&nbsp;+-+-+-+-+&nbsp;Bug3|&nbsp;|&nbsp;|X|&nbsp;|&nbsp;+-+-+-+-+&nbsp;Bug4|&nbsp;|&nbsp;|&nbsp;|X|&nbsp;+-+-+-+-+<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bug5|X|X|&nbsp;|&nbsp;|&nbsp;+-+-+-+-+&nbsp;Bug6|X|&nbsp;|X|&nbsp;|&nbsp;+-+-+-+-+&nbsp;Bug7|X|X|X|&nbsp;|<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+-+-+-+-+&nbsp;Bug8|X|X|X|X|&nbsp;+-+-+-+-+&nbsp;Who&nbsp;can&nbsp;see&nbsp;each&nbsp;bug?&nbsp;Bug1&nbsp;has&nbsp;no<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;group&nbsp;restrictions.&nbsp;Therefore,&nbsp;Bug1&nbsp;can&nbsp;be&nbsp;seen&nbsp;by&nbsp;any&nbsp;user,&nbsp;whatever<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;their&nbsp;group&nbsp;membership.&nbsp;This&nbsp;is&nbsp;going&nbsp;to&nbsp;be&nbsp;the&nbsp;only&nbsp;bug&nbsp;that&nbsp;User5<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;can&nbsp;see,&nbsp;because&nbsp;User5&nbsp;isn't&nbsp;in&nbsp;any&nbsp;groups.&nbsp;Bug2&nbsp;can&nbsp;be&nbsp;seen&nbsp;by<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;anyone&nbsp;in&nbsp;Group2,&nbsp;that&nbsp;is&nbsp;User2&nbsp;and&nbsp;User4.&nbsp;Bug3&nbsp;can&nbsp;be&nbsp;seen&nbsp;by&nbsp;anyone<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;Group3,&nbsp;that&nbsp;is&nbsp;User3&nbsp;and&nbsp;User4.&nbsp;Bug4&nbsp;can&nbsp;be&nbsp;seen&nbsp;by&nbsp;anyone&nbsp;in<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Group4.&nbsp;Nobody&nbsp;is&nbsp;in&nbsp;Group4,&nbsp;so&nbsp;none&nbsp;of&nbsp;these&nbsp;users&nbsp;can&nbsp;see&nbsp;Bug4.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bug5&nbsp;can&nbsp;be&nbsp;seen&nbsp;by&nbsp;anyone&nbsp;who&nbsp;is&nbsp;in&nbsp;_both_&nbsp;Group1&nbsp;and&nbsp;Group2.&nbsp;This<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;only&nbsp;User4.&nbsp;User1&nbsp;cannot&nbsp;see&nbsp;it&nbsp;because&nbsp;he&nbsp;is&nbsp;not&nbsp;in&nbsp;Group2,&nbsp;and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User2&nbsp;cannot&nbsp;see&nbsp;it&nbsp;because&nbsp;she&nbsp;is&nbsp;not&nbsp;in&nbsp;Group1.&nbsp;Bug6&nbsp;can&nbsp;be&nbsp;seen&nbsp;by<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;anyone&nbsp;who&nbsp;is&nbsp;in&nbsp;both&nbsp;Group1&nbsp;and&nbsp;Group3.&nbsp;This&nbsp;would&nbsp;include&nbsp;User3&nbsp;and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User4.&nbsp;Similar&nbsp;to&nbsp;Bug5,&nbsp;User1&nbsp;cannot&nbsp;see&nbsp;Bug6&nbsp;because&nbsp;he&nbsp;is&nbsp;not&nbsp;in<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Group3.&nbsp;Bug7&nbsp;can&nbsp;be&nbsp;seen&nbsp;by&nbsp;anyone&nbsp;who&nbsp;is&nbsp;in&nbsp;Group1,&nbsp;Group2,&nbsp;and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Group3.&nbsp;This&nbsp;is&nbsp;only&nbsp;User4.&nbsp;All&nbsp;of&nbsp;the&nbsp;others&nbsp;are&nbsp;missing&nbsp;at&nbsp;least<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;one&nbsp;of&nbsp;those&nbsp;group&nbsp;privileges,&nbsp;and&nbsp;thus&nbsp;cannot&nbsp;see&nbsp;the&nbsp;bug.&nbsp;Bug8&nbsp;can<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;be&nbsp;seen&nbsp;by&nbsp;anyone&nbsp;who&nbsp;is&nbsp;in&nbsp;Group1,&nbsp;Group2,&nbsp;Group3,&nbsp;and&nbsp;Group4.&nbsp;There<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;nobody&nbsp;in&nbsp;all&nbsp;four&nbsp;of&nbsp;these&nbsp;groups,&nbsp;so&nbsp;nobody&nbsp;can&nbsp;see&nbsp;Bug8.&nbsp;It<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doesn't&nbsp;matter&nbsp;that&nbsp;User4&nbsp;is&nbsp;in&nbsp;Group1,&nbsp;Group2,&nbsp;and&nbsp;Group3,&nbsp;since&nbsp;he<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isn't&nbsp;in&nbsp;Group4.</P
></DIV
>
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="voting.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="security.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Voting</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="administration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Bugzilla Security</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -1,296 +0,0 @@
<HTML
><HEAD
><TITLE
>Hints and Tips</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="Using Bugzilla"
HREF="using.html"><LINK
REL="PREVIOUS"
TITLE="How do I use Bugzilla?"
HREF="how.html"><LINK
REL="NEXT"
TITLE="User Preferences"
HREF="userpreferences.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="how.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 3. Using Bugzilla</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="userpreferences.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="hintsandtips">3.2. Hints and Tips</H1
><P
>This section distills some Bugzilla tips and best practices
that have been developed.</P
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN434">3.2.1. Autolinkification</H2
><P
>Bugzilla comments are plain text - so posting HTML will result
in literal HTML tags rather than being interpreted by a browser.
However, Bugzilla will automatically make hyperlinks out of certain
sorts of text in comments. For example, the text
http://www.bugzilla.org will be turned into
<A
HREF="http://www.bugzilla.org"
TARGET="_top"
>http://www.bugzilla.org</A
>.
Other strings which get linkified in the obvious manner are:
<P
></P
><TABLE
BORDER="0"
><TBODY
><TR
><TD
>bug 12345</TD
></TR
><TR
><TD
>bug 23456, comment 53</TD
></TR
><TR
><TD
>attachment 4321</TD
></TR
><TR
><TD
>mailto:george@example.com</TD
></TR
><TR
><TD
>ftp://ftp.mozilla.org</TD
></TR
><TR
><TD
>Most other sorts of URL</TD
></TR
></TBODY
></TABLE
><P
></P
>
</P
><P
>A corollary here is that if you type a bug number in a comment,
you should put the word "bug" before it, so it gets autolinkified
for the convenience of others.
</P
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="quicksearch">3.2.2. Quicksearch</H2
><P
>Quicksearch is a single-text-box query tool which uses
metacharacters to indicate what is to be searched. For example, typing
"foo|bar" into Quicksearch would search for "foo" or "bar" in the
summary and status whiteboard of a bug; adding ":BazProduct" would
search only in that product.
</P
><P
>You'll find the Quicksearch box on Bugzilla's
front page, along with a
<A
HREF="../../quicksearch.html"
TARGET="_top"
>Help</A
>
link which details how to use it.</P
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="commenting">3.2.3. Comments</H2
><P
>If you are changing the fields on a bug, only comment if
either you have something pertinent to say, or Bugzilla requires it.
Otherwise, you may spam people unnecessarily with bug mail.
To take an example: a user sets up their account to filter out messages
where someone just adds themselves to the CC field of a bug
(which happens a lot.) If you come along, add yourself to the CC field,
and add a comment saying "Adding self to CC", then that person
gets a pointless piece of mail they would otherwise have avoided.
</P
><P
>&#13; Don't use sigs in comments. Signing your name ("Bill") is acceptable,
particularly if you do it out of habit, but full mail/news-style
four line ASCII art creations are not.
</P
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="attachments">3.2.4. Attachments</H2
><P
>&#13; Use attachments, rather than comments, for large chunks of ASCII data,
such as trace, debugging output files, or log files. That way, it doesn't
bloat the bug for everyone who wants to read it, and cause people to
receive fat, useless mails.
</P
><P
>Trim screenshots. There's no need to show the whole screen if
you are pointing out a single-pixel problem.
</P
><P
>Don't attach simple test cases (e.g. one html file and one
css file and one image) as a ZIP file. Instead, upload them in
reverse order and edit the referring file so that they point to the
attached files. This way, the test case works immediately
out of the bug.
</P
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN460">3.2.5. Filing Bugs</H2
><P
>Try to make sure that everything said in the summary is also
said in the first comment. Summaries are often updated and this will
ensure your original information is easily accessible.
</P
><P
>&#13; You do not need to put "any" or similar strings in the URL field.
If there is no specific URL associated with the bug, leave this
field blank.
</P
><P
>If you feel a bug you filed was incorrectly marked as a
DUPLICATE of another, please question it in your bug, not
the bug it was duped to. Feel free to CC the person who duped it
if they are not already CCed.
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="how.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="userpreferences.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>How do I use Bugzilla?</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="using.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>User Preferences</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
>The Bugzilla Guide</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="NEXT"
TITLE="About This Guide"
@@ -37,42 +37,180 @@ ALINK="#0000FF"
><DIV
CLASS="BOOK"
><A
NAME="index"><DIV
NAME="index"
></A
><DIV
CLASS="TITLEPAGE"
><H1
CLASS="title"
><A
NAME="AEN2">The Bugzilla Guide</H1
NAME="AEN2"
>The Bugzilla Guide</A
></H1
><H3
CLASS="author"
><A
NAME="AEN5">Matthew P. Barnson</H3
NAME="AEN27"
>Matthew P. Barnson</A
></H3
><DIV
CLASS="affiliation"
><DIV
CLASS="address"
><P
CLASS="address"
>mbarnson@sisna.com</P
>barnboy@trilobyte.net</P
></DIV
></DIV
><SPAN
CLASS="collab"
><SPAN
CLASS="collabname"
>Zach Lipton</SPAN
><DIV
CLASS="affiliation"
><DIV
CLASS="address"
><P
CLASS="address"
>zach AT zachlipton DOT com</P
></DIV
></DIV
><BR></SPAN
><DIV
CLASS="revhistory"
><TABLE
WIDTH="100%"
BORDER="0"
><TR
><TH
ALIGN="LEFT"
VALIGN="TOP"
COLSPAN="3"
><B
>Revision History</B
></TH
></TR
><TR
><TD
ALIGN="LEFT"
>Revision v2.11</TD
><TD
ALIGN="LEFT"
>20 December 2000</TD
><TD
ALIGN="LEFT"
>Revised by: MPB</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Converted the README, FAQ, and DATABASE information into
SGML docbook format.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 2.11.1</TD
><TD
ALIGN="LEFT"
>06 March 2001</TD
><TD
ALIGN="LEFT"
>Revised by: MPB</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Took way too long to revise this for 2.12 release. Updated
FAQ to use qandaset tags instead of literallayout, cleaned
up administration section, added User Guide section,
miscellaneous FAQ updates and third-party integration
information. From this point on all new tags are lowercase
in preparation for the 2.13 release of the Guide in XML
format instead of SGML.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 2.12.0</TD
><TD
ALIGN="LEFT"
>24 April 2001</TD
><TD
ALIGN="LEFT"
>Revised by: MPB</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Things fixed this release: Elaborated on queryhelp
interface, added FAQ regarding moving bugs from one keyword
to another, clarified possible problems with the Landfill
tutorial, fixed a boatload of typos and unclear sentence
structures. Incorporated the README into the UNIX
installation section, and changed the README to indicate the
deprecated status. Things I know need work: Used
"simplelist" a lot, where I should have used "procedure" to
tag things. Need to lowercase all tags to be XML compliant.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 2.14.0</TD
><TD
ALIGN="LEFT"
>07 August 2001</TD
><TD
ALIGN="LEFT"
>Revised by: MPB</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Attempted to integrate relevant portions of the UNIX and
Windows installation instructions, moved some data from FAQ
to Install, removed references to README from text, added
Mac OS X install instructions, fixed a bunch
of tpyos (Mark Harig), linked text that referenced other
parts of the Guide, and nuked the old MySQL permissions
section.</TD
></TR
></TABLE
></DIV
><DIV
><DIV
CLASS="abstract"
><A
NAME="AEN12"><P
NAME="AEN39"
></A
><P
></P
><P
>&#13; This is the documentation for Bugzilla, the mozilla.org
>&#13; This is the documentation for Bugzilla, the Mozilla
bug-tracking system.
Bugzilla is an enterprise-class piece of software
that powers issue-tracking for hundreds of
organizations around the world, tracking millions of bugs.
</P
><P
>&#13; This documentation is maintained in DocBook 4.1.2 XML format.
Changes are best submitted as plain text or SGML diffs, attached
to a Bugzilla bug.
>&#13; Bugzilla is an enterprise-class set of software utilities
that, when used together, power issue-tracking for hundreds of
organizations around the world, tracking millions of bugs.
While it is easy to use and quite flexible, it is
difficult for a novice to install and maintain. Although we
have provided step-by-step directions, Bugzilla is not always
easy to get working. Please be sure the person responsible
for installing and maintaining this software is a qualified
professional for the operating system upon which you install
Bugzilla.
</P
><P
>&#13; THIS DOCUMENTATION IS MAINTAINED IN DOCBOOK 4.1.2 XML FORMAT.
IF YOU WISH TO MAKE CORRECTIONS, PLEASE MAKE THEM IN PLAIN
TEXT OR SGML DIFFS AGAINST THE SOURCE. I CANNOT ACCEPT
ADDITIONS TO THE GUIDE WRITTEN IN HTML!
</P
><P
></P
@@ -120,11 +258,21 @@ HREF="credits.html"
></DT
><DT
>1.6. <A
HREF="contributors.html"
>Contributors</A
></DT
><DT
>1.7. <A
HREF="feedback.html"
>Feedback</A
></DT
><DT
>1.8. <A
HREF="translations.html"
>Translations</A
></DT
><DT
>1.7. <A
>1.9. <A
HREF="conventions.html"
>Document Conventions</A
></DT
@@ -152,11 +300,87 @@ HREF="why.html"
HREF="how.html"
>How do I use Bugzilla?</A
></DT
><DD
><DL
><DT
>2.3.1. <A
HREF="how.html#myaccount"
>Create a Bugzilla Account</A
></DT
><DT
>2.3.2. <A
HREF="how.html#query"
>The Bugzilla Query Page</A
></DT
><DT
>2.3.3. <A
HREF="how.html#bugreports"
>Creating and Managing Bug Reports</A
></DT
><DD
><DL
><DT
>2.3.3.1. <A
HREF="how.html#bug-writing"
>Writing a Great Bug Report</A
></DT
><DT
>2.3.3.2. <A
HREF="how.html#bug-manage"
>Managing your Bug Reports</A
></DT
></DL
></DD
></DL
></DD
><DT
>2.4. <A
HREF="init4me.html"
>Where can I find my user preferences?</A
></DT
><DD
><DL
><DT
>2.4.1. <A
HREF="init4me.html#accountsettings"
>Account Settings</A
></DT
><DT
>2.4.2. <A
HREF="init4me.html#emailsettings"
>Email Settings</A
></DT
><DD
><DL
><DT
>2.4.2.1. <A
HREF="init4me.html#notification"
>Email Notification</A
></DT
><DT
>2.4.2.2. <A
HREF="init4me.html#newemailtech"
>New Email Technology</A
></DT
><DT
>2.4.2.3. <A
HREF="init4me.html#watchsettings"
>"Watching" Users</A
></DT
></DL
></DD
><DT
>2.4.3. <A
HREF="init4me.html#footersettings"
>Page Footer</A
></DT
><DT
>2.4.4. <A
HREF="init4me.html#permissionsettings"
>Permissions</A
></DT
></DL
></DD
><DT
>2.5. <A
HREF="usingbz-conc.html"
@@ -181,6 +405,108 @@ HREF="errata.html"
HREF="stepbystep.html"
>Step-by-step Install</A
></DT
><DD
><DL
><DT
>3.2.1. <A
HREF="stepbystep.html#AEN509"
>Introduction</A
></DT
><DT
>3.2.2. <A
HREF="stepbystep.html#AEN515"
>Installing the Prerequisites</A
></DT
><DT
>3.2.3. <A
HREF="stepbystep.html#install-mysql"
>Installing MySQL Database</A
></DT
><DT
>3.2.4. <A
HREF="stepbystep.html#install-perl"
>Perl (5.004 or greater)</A
></DT
><DT
>3.2.5. <A
HREF="stepbystep.html#AEN602"
>DBI Perl Module</A
></DT
><DT
>3.2.6. <A
HREF="stepbystep.html#AEN640"
>Data::Dumper Perl Module</A
></DT
><DT
>3.2.7. <A
HREF="stepbystep.html#AEN645"
>MySQL related Perl Module Collection</A
></DT
><DT
>3.2.8. <A
HREF="stepbystep.html#AEN654"
>TimeDate Perl Module Collection</A
></DT
><DT
>3.2.9. <A
HREF="stepbystep.html#AEN658"
>GD Perl Module (1.8.3)</A
></DT
><DT
>3.2.10. <A
HREF="stepbystep.html#AEN667"
>Chart::Base Perl Module (0.99c)</A
></DT
><DT
>3.2.11. <A
HREF="stepbystep.html#AEN671"
>DB_File Perl Module</A
></DT
><DT
>3.2.12. <A
HREF="stepbystep.html#AEN674"
>HTTP Server</A
></DT
><DT
>3.2.13. <A
HREF="stepbystep.html#AEN692"
>Installing the Bugzilla Files</A
></DT
><DT
>3.2.14. <A
HREF="stepbystep.html#AEN721"
>Setting Up the MySQL Database</A
></DT
><DT
>3.2.15. <A
HREF="stepbystep.html#AEN768"
>Tweaking <TT
CLASS="filename"
>localconfig</TT
></A
></DT
><DT
>3.2.16. <A
HREF="stepbystep.html#AEN806"
>Setting Up Maintainers Manually (Optional)</A
></DT
><DT
>3.2.17. <A
HREF="stepbystep.html#AEN817"
>The Whining Cron (Optional)</A
></DT
><DT
>3.2.18. <A
HREF="stepbystep.html#AEN827"
>Bug Graphs (Optional)</A
></DT
><DT
>3.2.19. <A
HREF="stepbystep.html#AEN839"
>Securing MySQL</A
></DT
></DL
></DD
><DT
>3.3. <A
HREF="osx.html"
@@ -196,11 +522,70 @@ HREF="bsdinstall.html"
HREF="geninstall.html"
>Installation General Notes</A
></DT
><DD
><DL
><DT
>3.5.1. <A
HREF="geninstall.html#AEN941"
>Modifying Your Running System</A
></DT
><DT
>3.5.2. <A
HREF="geninstall.html#AEN948"
>Upgrading From Previous Versions</A
></DT
><DT
>3.5.3. <A
HREF="geninstall.html#htaccess"
><TT
CLASS="filename"
>.htaccess</TT
> files and security</A
></DT
><DT
>3.5.4. <A
HREF="geninstall.html#mod-throttle"
><TT
CLASS="filename"
>mod_throttle</TT
> and Security</A
></DT
><DT
>3.5.5. <A
HREF="geninstall.html#content-type"
>Preventing untrusted Bugzilla content from executing malicious Javascript code</A
></DT
><DT
>3.5.6. <A
HREF="geninstall.html#unixhistory"
>UNIX Installation Instructions History</A
></DT
></DL
></DD
><DT
>3.6. <A
HREF="win32.html"
>Win32 Installation Notes</A
></DT
><DD
><DL
><DT
>3.6.1. <A
HREF="win32.html#wininstall"
>Win32 Installation: Step-by-step</A
></DT
><DT
>3.6.2. <A
HREF="win32.html#addlwintips"
>Additional Windows Tips</A
></DT
><DT
>3.6.3. <A
HREF="win32.html#bzldap"
>Bugzilla LDAP Integration</A
></DT
></DL
></DD
></DL
></DD
><DT
@@ -220,12 +605,84 @@ HREF="postinstall-check.html"
HREF="useradmin.html"
>User Administration</A
></DT
><DD
><DL
><DT
>4.2.1. <A
HREF="useradmin.html#defaultuser"
>Creating the Default User</A
></DT
><DT
>4.2.2. <A
HREF="useradmin.html#manageusers"
>Managing Other Users</A
></DT
><DD
><DL
><DT
>4.2.2.1. <A
HREF="useradmin.html#login"
>Logging In</A
></DT
><DT
>4.2.2.2. <A
HREF="useradmin.html#createnewusers"
>Creating new users</A
></DT
><DT
>4.2.2.3. <A
HREF="useradmin.html#disableusers"
>Disabling Users</A
></DT
><DT
>4.2.2.4. <A
HREF="useradmin.html#modifyusers"
>Modifying Users</A
></DT
></DL
></DD
></DL
></DD
><DT
>4.3. <A
HREF="programadmin.html"
>Product, Component, Milestone, and Version
Administration</A
></DT
><DD
><DL
><DT
>4.3.1. <A
HREF="programadmin.html#products"
>Products</A
></DT
><DT
>4.3.2. <A
HREF="programadmin.html#components"
>Components</A
></DT
><DT
>4.3.3. <A
HREF="programadmin.html#versions"
>Versions</A
></DT
><DT
>4.3.4. <A
HREF="programadmin.html#milestones"
>Milestones</A
></DT
><DT
>4.3.5. <A
HREF="programadmin.html#voting"
>Voting</A
></DT
><DT
>4.3.6. <A
HREF="programadmin.html#groups"
>Groups and Group Security</A
></DT
></DL
></DD
><DT
>4.4. <A
HREF="security.html"
@@ -264,38 +721,43 @@ HREF="tinderbox.html"
></DD
><DT
>6. <A
HREF="future.html"
>The Future of Bugzilla</A
></DT
><DT
>7. <A
HREF="variants.html"
>Bugzilla Variants and Competitors</A
></DT
><DD
><DL
><DT
>6.1. <A
>7.1. <A
HREF="rhbugzilla.html"
>Red Hat Bugzilla</A
></DT
><DT
>6.2. <A
>7.2. <A
HREF="variant-fenris.html"
>Loki Bugzilla (Fenris)</A
></DT
><DT
>6.3. <A
>7.3. <A
HREF="variant-issuezilla.html"
>Issuezilla</A
></DT
><DT
>6.4. <A
>7.4. <A
HREF="variant-scarab.html"
>Scarab</A
></DT
><DT
>6.5. <A
>7.5. <A
HREF="variant-perforce.html"
>Perforce SCM</A
></DT
><DT
>6.6. <A
>7.6. <A
HREF="variant-sourceforge.html"
>SourceForge</A
></DT
@@ -328,6 +790,24 @@ HREF="dbschema.html"
HREF="dbdoc.html"
>MySQL Bugzilla Database Introduction</A
></DT
><DD
><DL
><DT
>C.2.1. <A
HREF="dbdoc.html#AEN2340"
>Bugzilla Database Basics</A
></DT
><DD
><DL
><DT
>C.2.1.1. <A
HREF="dbdoc.html#AEN2369"
>Bugzilla Database Tables</A
></DT
></DL
></DD
></DL
></DD
><DT
>C.3. <A
HREF="granttables.html"
@@ -370,6 +850,20 @@ HREF="quicksearch.html"
HREF="bzhacking.html"
>Hacking Bugzilla</A
></DT
><DD
><DL
><DT
>D.5.1. <A
HREF="bzhacking.html#AEN2504"
>Things that have caused problems and should be avoided</A
></DT
><DT
>D.5.2. <A
HREF="bzhacking.html#AEN2518"
>Coding Style for Bugzilla</A
></DT
></DL
></DD
></DL
></DD
><DT
@@ -457,75 +951,79 @@ CLASS="LOT"
>List of Examples</B
></DT
><DT
>2-1. <A
HREF="how.html#AEN307"
>Some Famous Software Versions</A
></DT
><DT
>2-2. <A
HREF="how.html#AEN317"
>Mozilla's Bugzilla Components</A
></DT
><DT
>3-1. <A
HREF="stepbystep.html#AEN641"
HREF="stepbystep.html#AEN708"
>Setting up bonsaitools symlink</A
></DT
><DT
>3-2. <A
HREF="stepbystep.html#AEN732"
HREF="stepbystep.html#AEN799"
>Running checksetup.pl as the web user</A
></DT
><DT
>3-3. <A
HREF="win32.html#AEN985"
HREF="win32.html#AEN1048"
>Installing ActivePerl ppd Modules on Microsoft Windows</A
></DT
><DT
>3-4. <A
HREF="win32.html#AEN998"
>Installing OpenInteract ppd Modules manually on Microsoft
Windows</A
></DT
><DT
>3-5. <A
HREF="win32.html#AEN1180"
HREF="win32.html#AEN1233"
>Removing encrypt() for Windows NT Bugzilla version
2.12 or earlier</A
></DT
><DT
>4-1. <A
HREF="programadmin.html#AEN1405"
HREF="programadmin.html#AEN1470"
>Creating some Components</A
></DT
><DT
>4-2. <A
HREF="programadmin.html#AEN1434"
HREF="programadmin.html#AEN1499"
>Common Use of Versions</A
></DT
><DT
>4-3. <A
HREF="programadmin.html#AEN1438"
HREF="programadmin.html#AEN1503"
>A Different Use of Versions</A
></DT
><DT
>4-4. <A
HREF="programadmin.html#AEN1466"
HREF="programadmin.html#AEN1531"
>Using SortKey with Target Milestone</A
></DT
><DT
>4-5. <A
HREF="programadmin.html#AEN1502"
HREF="programadmin.html#AEN1567"
>When to Use Group Security</A
></DT
><DT
>4-6. <A
HREF="programadmin.html#AEN1519"
HREF="programadmin.html#AEN1584"
>Creating a New Group</A
></DT
><DT
>4-7. <A
HREF="programadmin.html#AEN1536"
HREF="programadmin.html#AEN1601"
>Bugzilla Groups</A
></DT
><DT
>D-1. <A
HREF="setperl.html#AEN2380"
HREF="setperl.html#AEN2448"
>Using Setperl to set your perl path</A
></DT
><DT
>1. <A
HREF="glossary.html#AEN2701"
HREF="glossary.html#AEN2769"
>A Sample Product</A
></DT
></DL
@@ -536,7 +1034,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -558,7 +1055,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

View File

@@ -4,7 +4,7 @@
>Where can I find my user preferences?</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="how.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="usingbz-conc.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="init4me">2.4. Where can I find my user preferences?</H1
NAME="init4me"
>2.4. Where can I find my user preferences?</A
></H1
><TABLE
BORDER="0"
WIDTH="100%"
@@ -116,7 +115,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="accountsettings">2.4.1. Account Settings</H2
NAME="accountsettings"
>2.4.1. Account Settings</A
></H2
><P
>&#13; On this page, you can change your basic Account Settings,
including your password and full name. For security reasons,
@@ -149,13 +150,17 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="emailsettings">2.4.2. Email Settings</H2
NAME="emailsettings"
>2.4.2. Email Settings</A
></H2
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="notification">2.4.2.1. Email Notification</H3
NAME="notification"
>2.4.2.1. Email Notification</A
></H3
><P
>&#13; Here you can reduce or increase the amount of email sent you
from Bugzilla. Although this is referred to as
@@ -187,7 +192,9 @@ CLASS="section"
><H3
CLASS="section"
><A
NAME="newemailtech">2.4.2.2. New Email Technology</H3
NAME="newemailtech"
>2.4.2.2. New Email Technology</A
></H3
><DIV
CLASS="note"
><P
@@ -240,7 +247,9 @@ CLASS="section"
><H3
CLASS="section"
><A
NAME="watchsettings">2.4.2.3. "Watching" Users</H3
NAME="watchsettings"
>2.4.2.3. "Watching" Users</A
></H3
><DIV
CLASS="note"
><P
@@ -289,7 +298,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="footersettings">2.4.3. Page Footer</H2
NAME="footersettings"
>2.4.3. Page Footer</A
></H2
><DIV
CLASS="note"
><P
@@ -373,7 +384,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="permissionsettings">2.4.4. Permissions</H2
NAME="permissionsettings"
>2.4.4. Permissions</A
></H2
><P
>&#13; This is a purely informative page which outlines your current
permissions on this installation of Bugzilla. If you have
@@ -389,7 +402,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -401,7 +413,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="how.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -410,7 +421,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -419,7 +429,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="usingbz-conc.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -435,7 +444,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="using.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Installation</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -25,7 +25,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -43,7 +42,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="usingbz-conc.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -57,7 +55,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="errata.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -69,7 +66,9 @@ WIDTH="100%"></DIV
CLASS="chapter"
><H1
><A
NAME="installation">Chapter 3. Installation</H1
NAME="installation"
>Chapter 3. Installation</A
></H1
><DIV
CLASS="TOC"
><DL
@@ -91,12 +90,12 @@ HREF="stepbystep.html"
><DL
><DT
>3.2.1. <A
HREF="stepbystep.html#AEN441"
HREF="stepbystep.html#AEN509"
>Introduction</A
></DT
><DT
>3.2.2. <A
HREF="stepbystep.html#AEN447"
HREF="stepbystep.html#AEN515"
>Installing the Prerequisites</A
></DT
><DT
@@ -111,57 +110,57 @@ HREF="stepbystep.html#install-perl"
></DT
><DT
>3.2.5. <A
HREF="stepbystep.html#AEN534"
HREF="stepbystep.html#AEN602"
>DBI Perl Module</A
></DT
><DT
>3.2.6. <A
HREF="stepbystep.html#AEN572"
HREF="stepbystep.html#AEN640"
>Data::Dumper Perl Module</A
></DT
><DT
>3.2.7. <A
HREF="stepbystep.html#AEN577"
HREF="stepbystep.html#AEN645"
>MySQL related Perl Module Collection</A
></DT
><DT
>3.2.8. <A
HREF="stepbystep.html#AEN586"
HREF="stepbystep.html#AEN654"
>TimeDate Perl Module Collection</A
></DT
><DT
>3.2.9. <A
HREF="stepbystep.html#AEN590"
HREF="stepbystep.html#AEN658"
>GD Perl Module (1.8.3)</A
></DT
><DT
>3.2.10. <A
HREF="stepbystep.html#AEN599"
HREF="stepbystep.html#AEN667"
>Chart::Base Perl Module (0.99c)</A
></DT
><DT
>3.2.11. <A
HREF="stepbystep.html#AEN603"
HREF="stepbystep.html#AEN671"
>DB_File Perl Module</A
></DT
><DT
>3.2.12. <A
HREF="stepbystep.html#AEN606"
HREF="stepbystep.html#AEN674"
>HTTP Server</A
></DT
><DT
>3.2.13. <A
HREF="stepbystep.html#AEN625"
HREF="stepbystep.html#AEN692"
>Installing the Bugzilla Files</A
></DT
><DT
>3.2.14. <A
HREF="stepbystep.html#AEN654"
HREF="stepbystep.html#AEN721"
>Setting Up the MySQL Database</A
></DT
><DT
>3.2.15. <A
HREF="stepbystep.html#AEN701"
HREF="stepbystep.html#AEN768"
>Tweaking <TT
CLASS="filename"
>localconfig</TT
@@ -169,22 +168,22 @@ CLASS="filename"
></DT
><DT
>3.2.16. <A
HREF="stepbystep.html#AEN739"
HREF="stepbystep.html#AEN806"
>Setting Up Maintainers Manually (Optional)</A
></DT
><DT
>3.2.17. <A
HREF="stepbystep.html#AEN750"
HREF="stepbystep.html#AEN817"
>The Whining Cron (Optional)</A
></DT
><DT
>3.2.18. <A
HREF="stepbystep.html#AEN760"
HREF="stepbystep.html#AEN827"
>Bug Graphs (Optional)</A
></DT
><DT
>3.2.19. <A
HREF="stepbystep.html#AEN772"
HREF="stepbystep.html#AEN839"
>Securing MySQL</A
></DT
></DL
@@ -208,12 +207,12 @@ HREF="geninstall.html"
><DL
><DT
>3.5.1. <A
HREF="geninstall.html#AEN874"
HREF="geninstall.html#AEN941"
>Modifying Your Running System</A
></DT
><DT
>3.5.2. <A
HREF="geninstall.html#AEN881"
HREF="geninstall.html#AEN948"
>Upgrading From Previous Versions</A
></DT
><DT
@@ -283,7 +282,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -295,7 +293,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="usingbz-conc.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -304,7 +301,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -313,7 +309,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="errata.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

View File

@@ -4,7 +4,7 @@
>Integrating Bugzilla with Third-Party Tools</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -25,7 +25,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -43,7 +42,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="security.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -57,7 +55,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="bonsai.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -69,7 +66,9 @@ WIDTH="100%"></DIV
CLASS="chapter"
><H1
><A
NAME="integration">Chapter 5. Integrating Bugzilla with Third-Party Tools</H1
NAME="integration"
>Chapter 5. Integrating Bugzilla with Third-Party Tools</A
></H1
><DIV
CLASS="TOC"
><DL
@@ -105,7 +104,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -117,7 +115,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="security.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -126,7 +123,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -135,7 +131,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="bonsai.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

View File

@@ -1,153 +0,0 @@
<HTML
><HEAD
><TITLE
>Introduction</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Document Conventions"
HREF="conventions.html"><LINK
REL="NEXT"
TITLE="What is Bugzilla?"
HREF="whatis.html"></HEAD
><BODY
CLASS="chapter"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="conventions.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="whatis.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="chapter"
><H1
><A
NAME="introduction">Chapter 2. Introduction</H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
>2.1. <A
HREF="whatis.html"
>What is Bugzilla?</A
></DT
><DT
>2.2. <A
HREF="why.html"
>Why Should We Use Bugzilla?</A
></DT
></DL
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="conventions.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="whatis.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Document Conventions</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>What is Bugzilla?</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -4,7 +4,7 @@
>New Versions</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="disclaimer.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="credits.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,9 +70,11 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="newversions">1.4. New Versions</H1
NAME="newversions"
>1.4. New Versions</A
></H1
><P
>&#13; This is the 2.16 version of The Bugzilla Guide. If you are
>&#13; This is the 2.14 version of The Bugzilla Guide. If you are
reading this from any source other than those below, please
check one of these mirrors to make sure you are reading an
up-to-date version of the Guide.
@@ -90,9 +89,18 @@ NAME="newversions">1.4. New Versions</H1
><LI
><P
>&#13; <A
HREF="http://www.bugzilla.org/"
HREF="http://www.trilobyte.net/barnsons/"
TARGET="_top"
>bugzilla.org</A
>TriloBYTE</A
>
</P
></LI
><LI
><P
>&#13; <A
HREF="http://www.mozilla.org/projects/bugzilla/"
TARGET="_top"
>Mozilla.org</A
>
</P
></LI
@@ -115,10 +123,7 @@ TARGET="_top"
HREF="http://www.mozilla.org/cvs.html"
TARGET="_top"
>the Mozilla CVS page</A
>, and check out the <TT
CLASS="filename"
>mozilla/webtools/bugzilla/docs/</TT
> branch.
>, and check out the mozilla/webtools/bugzilla/docs/ branch.
</P
></DIV
><DIV
@@ -126,7 +131,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -138,7 +142,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="disclaimer.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -147,7 +150,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -156,7 +158,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="credits.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -172,7 +173,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Mac OS X Installation Notes</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="stepbystep.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="bsdinstall.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="osx">3.3. Mac OS X Installation Notes</H1
NAME="osx"
>3.3. Mac OS X Installation Notes</A
></H1
><P
>&#13; There are a lot of common libraries and utilities out there
that Apple did not include with Mac OS X, but which run
@@ -234,7 +233,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -246,7 +244,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="stepbystep.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -255,7 +252,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -264,7 +260,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="bsdinstall.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -280,7 +275,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Useful Patches and Utilities for Bugzilla</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -25,7 +25,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -43,7 +42,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="granttables.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -57,7 +55,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="rewrite.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -69,7 +66,9 @@ WIDTH="100%"></DIV
CLASS="appendix"
><H1
><A
NAME="patches">Appendix D. Useful Patches and Utilities for Bugzilla</H1
NAME="patches"
>Appendix D. Useful Patches and Utilities for Bugzilla</A
></H1
><DIV
CLASS="TOC"
><DL
@@ -109,12 +108,12 @@ HREF="bzhacking.html"
><DL
><DT
>D.5.1. <A
HREF="bzhacking.html#AEN2436"
HREF="bzhacking.html#AEN2504"
>Things that have caused problems and should be avoided</A
></DT
><DT
>D.5.2. <A
HREF="bzhacking.html#AEN2450"
HREF="bzhacking.html#AEN2518"
>Coding Style for Bugzilla</A
></DT
></DL
@@ -129,7 +128,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -141,7 +139,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="granttables.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -150,7 +147,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -159,7 +155,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="rewrite.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

View File

@@ -4,7 +4,7 @@
>Post-Installation Checklist</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="administration.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="useradmin.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="postinstall-check">4.1. Post-Installation Checklist</H1
NAME="postinstall-check"
>4.1. Post-Installation Checklist</A
></H1
><P
>&#13; After installation, follow the checklist below to help ensure
that you have a successful installation. If you do not see a
@@ -475,7 +474,7 @@ CLASS="QUOTE"
> would not normally be
allowed to view a bug, the watcher cannot get around the
system by setting herself up to watch the bugs of someone
with bugs outside her privileges. She would still only
with bugs outside her priveleges. She would still only
receive email updates for those bugs she could normally
view.</P
><P
@@ -503,7 +502,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -515,7 +513,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="administration.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -524,7 +521,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -533,7 +529,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="useradmin.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -549,7 +544,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="administration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -5,7 +5,7 @@
Administration</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -29,7 +29,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -47,7 +46,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="useradmin.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -61,7 +59,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="security.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -74,8 +71,10 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="programadmin">4.3. Product, Component, Milestone, and Version
Administration</H1
NAME="programadmin"
>4.3. Product, Component, Milestone, and Version
Administration</A
></H1
><TABLE
BORDER="0"
WIDTH="100%"
@@ -104,7 +103,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="products">4.3.1. Products</H2
NAME="products"
>4.3.1. Products</A
></H2
><FONT
COLOR="RED"
>Formerly, and in some spots still, called
@@ -222,21 +223,27 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="components">4.3.2. Components</H2
NAME="components"
>4.3.2. Components</A
></H2
><P
>&#13; Components are subsections of a Product.
<DIV
CLASS="example"
><A
NAME="AEN1405"><P
NAME="AEN1470"
></A
><P
><B
>Example 4-1. Creating some Components</B
></P
><DIV
CLASS="informalexample"
><A
NAME="AEN1407"><P
NAME="AEN1472"
></A
><P
></P
><P
>&#13; The computer game you are designing may have a "UI"
@@ -369,7 +376,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="versions">4.3.3. Versions</H2
NAME="versions"
>4.3.3. Versions</A
></H2
><P
>&#13; Versions are the revisions of the product, such as "Flinders
3.1", "Flinders 95", and "Flinders 2000". Using Versions
@@ -378,14 +387,18 @@ NAME="versions">4.3.3. Versions</H2
<DIV
CLASS="example"
><A
NAME="AEN1434"><P
NAME="AEN1499"
></A
><P
><B
>Example 4-2. Common Use of Versions</B
></P
><DIV
CLASS="informalexample"
><A
NAME="AEN1436"><P
NAME="AEN1501"
></A
><P
></P
><P
>&#13; A user reports a bug against Version "Beta 2.0" of your
@@ -405,14 +418,18 @@ NAME="AEN1436"><P
<DIV
CLASS="example"
><A
NAME="AEN1438"><P
NAME="AEN1503"
></A
><P
><B
>Example 4-3. A Different Use of Versions</B
></P
><DIV
CLASS="informalexample"
><A
NAME="AEN1440"><P
NAME="AEN1505"
></A
><P
></P
><P
>&#13; This field has been used to good effect by an online
@@ -479,7 +496,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="milestones">4.3.4. Milestones</H2
NAME="milestones"
>4.3.4. Milestones</A
></H2
><P
>&#13; Milestones are "targets" that you plan to get a bug fixed by.
For example, you have a bug that you plan to fix for your 3.0
@@ -545,14 +564,18 @@ TYPE="1"
><DIV
CLASS="example"
><A
NAME="AEN1466"><P
NAME="AEN1531"
></A
><P
><B
>Example 4-4. Using SortKey with Target Milestone</B
></P
><DIV
CLASS="informalexample"
><A
NAME="AEN1468"><P
NAME="AEN1533"
></A
><P
></P
><P
>&#13; Let's say you create a target milestone called
@@ -643,7 +666,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="voting">4.3.5. Voting</H2
NAME="voting"
>4.3.5. Voting</A
></H2
><P
>&#13; The concept of "voting" is a poorly understood, yet powerful
feature for the management of open-source projects. Each user
@@ -750,7 +775,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="groups">4.3.6. Groups and Group Security</H2
NAME="groups"
>4.3.6. Groups and Group Security</A
></H2
><P
>&#13; Groups can be very useful in bugzilla, because they allow
users to isolate bugs or products that should only be seen by
@@ -760,14 +787,18 @@ NAME="groups">4.3.6. Groups and Group Security</H2
<DIV
CLASS="example"
><A
NAME="AEN1502"><P
NAME="AEN1567"
></A
><P
><B
>Example 4-5. When to Use Group Security</B
></P
><DIV
CLASS="informalexample"
><A
NAME="AEN1504"><P
NAME="AEN1569"
></A
><P
></P
><P
>&#13; Many Bugzilla sites isolate "Security-related" bugs from
@@ -882,14 +913,18 @@ TYPE="1"
<DIV
CLASS="example"
><A
NAME="AEN1519"><P
NAME="AEN1584"
></A
><P
><B
>Example 4-6. Creating a New Group</B
></P
><DIV
CLASS="informalexample"
><A
NAME="AEN1521"><P
NAME="AEN1586"
></A
><P
></P
><P
>&#13; I created a group called DefaultGroup with a
@@ -1013,7 +1048,9 @@ VALIGN="TOP"
<DIV
CLASS="example"
><A
NAME="AEN1536"><P
NAME="AEN1601"
></A
><P
><B
>Example 4-7. Bugzilla Groups</B
></P
@@ -1103,7 +1140,7 @@ because&nbsp;he&nbsp;is&nbsp;not&nbsp;in&nbsp;Group3.<br>
<br>
Bug7&nbsp;can&nbsp;be&nbsp;seen&nbsp;by&nbsp;anyone&nbsp;who&nbsp;is&nbsp;in&nbsp;Group1,&nbsp;Group2,&nbsp;and&nbsp;Group3.&nbsp;&nbsp;This<br>
is&nbsp;only&nbsp;User4.&nbsp;&nbsp;All&nbsp;of&nbsp;the&nbsp;others&nbsp;are&nbsp;missing&nbsp;at&nbsp;least&nbsp;one&nbsp;of&nbsp;those<br>
group&nbsp;privileges,&nbsp;and&nbsp;thus&nbsp;cannot&nbsp;see&nbsp;the&nbsp;bug.<br>
group&nbsp;priveleges,&nbsp;and&nbsp;thus&nbsp;cannot&nbsp;see&nbsp;the&nbsp;bug.<br>
<br>
Bug8&nbsp;can&nbsp;be&nbsp;seen&nbsp;by&nbsp;anyone&nbsp;who&nbsp;is&nbsp;in&nbsp;Group1,&nbsp;Group2,&nbsp;Group3,&nbsp;and<br>
Group4.&nbsp;&nbsp;There&nbsp;is&nbsp;nobody&nbsp;in&nbsp;all&nbsp;four&nbsp;of&nbsp;these&nbsp;groups,&nbsp;so&nbsp;nobody&nbsp;can<br>
@@ -1120,7 +1157,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -1132,7 +1168,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="useradmin.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -1141,7 +1176,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -1150,7 +1184,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="security.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -1166,7 +1199,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="administration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>The Quicksearch Utility</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="cmdline.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="bzhacking.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="quicksearch">D.4. The Quicksearch Utility</H1
NAME="quicksearch"
>D.4. The Quicksearch Utility</A
></H1
><P
>&#13; Quicksearch is a new, experimental feature of the 2.12 release.
It consist of two Javascript files, "quicksearch.js" and
@@ -135,7 +134,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -147,7 +145,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="cmdline.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -156,7 +153,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -165,7 +161,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="bzhacking.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -181,7 +176,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="patches.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Apache mod_rewrite magic</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="patches.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="setperl.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,10 +70,12 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="rewrite">D.1. Apache <TT
NAME="rewrite"
>D.1. Apache <TT
CLASS="filename"
>mod_rewrite</TT
> magic</H1
> magic</A
></H1
><P
>Apache's <TT
CLASS="filename"
@@ -137,7 +136,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -149,7 +147,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="patches.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -158,7 +155,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -167,7 +163,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="setperl.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -183,7 +178,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="patches.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Red Hat Bugzilla</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,21 +45,19 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="variants.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 6. Bugzilla Variants and Competitors</TD
>Chapter 7. Bugzilla Variants and Competitors</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="variant-fenris.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="rhbugzilla">6.1. Red Hat Bugzilla</H1
NAME="rhbugzilla"
>7.1. Red Hat Bugzilla</A
></H1
><P
>&#13; Red Hat Bugzilla is probably the most popular Bugzilla variant
on the planet. One of the major benefits of Red Hat Bugzilla is
@@ -95,7 +94,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -107,7 +105,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="variants.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -116,7 +113,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -125,7 +121,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="variant-fenris.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -141,7 +136,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="variants.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Perforce SCM</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="cvs.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="tinderbox.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="scm">5.3. Perforce SCM</H1
NAME="scm"
>5.3. Perforce SCM</A
></H1
><P
>&#13; You can find the project page for Bugzilla and Teamtrack
Perforce integration (p4dti) at: <A
@@ -104,7 +103,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -116,7 +114,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="cvs.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -125,7 +122,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -134,7 +130,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="tinderbox.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -150,7 +145,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="integration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Bugzilla Security</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -29,7 +29,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -47,7 +46,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="programadmin.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -61,7 +59,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="integration.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -74,7 +71,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="security">4.4. Bugzilla Security</H1
NAME="security"
>4.4. Bugzilla Security</A
></H1
><TABLE
BORDER="0"
WIDTH="100%"
@@ -323,45 +322,6 @@ TARGET="_top"
></TABLE
></DIV
><P
>&#13; When you run checksetup.pl, the script will attempt to modify various
permissions on files which Bugzilla uses. If you do not have a
webservergroup set in the localconfig file, then Bugzilla will have to
make certain files world readable and/or writable. <EM
>THIS IS
INSECURE!</EM
>. This means that anyone who can get access to
your system can do whatever they want to your Bugzilla installation.
</P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13; This also means that if your webserver runs all cgi scripts as the
same user/group, anyone on the system who can run cgi scripts will
be able to take control of your Bugzilla installation.
</P
></TD
></TR
></TABLE
></DIV
><P
>&#13; On Apache, you can use .htaccess files to protect access
to these directories, as outlined in <A
HREF="http://bugzilla.mozilla.org/show_bug.cgi?id=57161"
@@ -415,7 +375,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -427,7 +386,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="programadmin.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -436,7 +394,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -445,7 +402,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="integration.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -462,7 +418,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="administration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>The setperl.csh Utility</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="rewrite.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="cmdline.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="setperl">D.2. The setperl.csh Utility</H1
NAME="setperl"
>D.2. The setperl.csh Utility</A
></H1
><P
> You can use the "setperl.csh" utility to quickly and
easily change the path to perl on all your Bugzilla files. This
@@ -217,7 +216,9 @@ CLASS="command"
<DIV
CLASS="example"
><A
NAME="AEN2380"><P
NAME="AEN2448"
></A
><P
><B
>Example D-1. Using Setperl to set your perl path</B
></P
@@ -247,7 +248,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -259,7 +259,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="rewrite.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -268,7 +267,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -277,7 +275,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="cmdline.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -296,7 +293,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="patches.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Step-by-step Install</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="errata.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="osx.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,13 +70,17 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="stepbystep">3.2. Step-by-step Install</H1
NAME="stepbystep"
>3.2. Step-by-step Install</A
></H1
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN441">3.2.1. Introduction</H2
NAME="AEN509"
>3.2.1. Introduction</A
></H2
><P
>&#13; Installation of bugzilla is pretty straightforward, particularly if your
machine already has MySQL and the MySQL-related perl packages installed.
@@ -108,7 +109,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN447">3.2.2. Installing the Prerequisites</H2
NAME="AEN515"
>3.2.2. Installing the Prerequisites</A
></H2
><DIV
CLASS="note"
><P
@@ -358,7 +361,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="install-mysql">3.2.3. Installing MySQL Database</H2
NAME="install-mysql"
>3.2.3. Installing MySQL Database</A
></H2
><P
>&#13; Visit MySQL homepage at <A
HREF="http://www.mysql.com"
@@ -473,7 +478,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="install-perl">3.2.4. Perl (5.004 or greater)</H2
NAME="install-perl"
>3.2.4. Perl (5.004 or greater)</A
></H2
><P
>&#13; Any machine that doesn't have perl on it is a sad machine
indeed. Perl for *nix systems can be gotten in source form
@@ -538,7 +545,9 @@ CLASS="QUOTE"
><DIV
CLASS="tip"
><A
NAME="bundlebugzilla"><P
NAME="bundlebugzilla"
></A
><P
></P
><TABLE
CLASS="tip"
@@ -604,7 +613,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN534">3.2.5. DBI Perl Module</H2
NAME="AEN602"
>3.2.5. DBI Perl Module</A
></H2
><P
>&#13; The DBI module is a generic Perl module used by other database related
Perl modules. For our purposes it's required by the MySQL-related
@@ -631,7 +642,9 @@ HREF="downloadlinks.html"
<DIV
CLASS="informalexample"
><A
NAME="AEN541"><P
NAME="AEN609"
></A
><P
></P
><P
>&#13; <TT
@@ -683,7 +696,9 @@ VALIGN="TOP"
<DIV
CLASS="informalexample"
><A
NAME="AEN548"><P
NAME="AEN616"
></A
><P
></P
><P
>&#13; Untar the module tarball -- it should create its own directory
@@ -774,7 +789,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN572">3.2.6. Data::Dumper Perl Module</H2
NAME="AEN640"
>3.2.6. Data::Dumper Perl Module</A
></H2
><P
>&#13; The Data::Dumper module provides data structure persistence for Perl
(similar to Java's serialization). It comes with later sub-releases of
@@ -797,7 +814,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN577">3.2.7. MySQL related Perl Module Collection</H2
NAME="AEN645"
>3.2.7. MySQL related Perl Module Collection</A
></H2
><P
>&#13; The Perl/MySQL interface requires a few mutually-dependent perl
modules. These modules are grouped together into the the
@@ -841,7 +860,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN586">3.2.8. TimeDate Perl Module Collection</H2
NAME="AEN654"
>3.2.8. TimeDate Perl Module Collection</A
></H2
><P
>&#13; Many of the more common date/time/calendar related Perl
modules have been grouped into a bundle similar to the MySQL
@@ -861,7 +882,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN590">3.2.9. GD Perl Module (1.8.3)</H2
NAME="AEN658"
>3.2.9. GD Perl Module (1.8.3)</A
></H2
><P
>&#13; The GD library was written by Thomas Boutell a long while
ago to programatically generate images in C. Since then it's
@@ -925,7 +948,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN599">3.2.10. Chart::Base Perl Module (0.99c)</H2
NAME="AEN667"
>3.2.10. Chart::Base Perl Module (0.99c)</A
></H2
><P
>&#13; The Chart module provides bugzilla with on-the-fly charting
abilities. It can be installed in the usual fashion after it
@@ -944,7 +969,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN603">3.2.11. DB_File Perl Module</H2
NAME="AEN671"
>3.2.11. DB_File Perl Module</A
></H2
><P
>&#13; DB_File is a module which allows Perl programs to make use
of the facilities provided by Berkeley DB version 1.x. This
@@ -958,7 +985,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN606">3.2.12. HTTP Server</H2
NAME="AEN674"
>3.2.12. HTTP Server</A
></H2
><P
>&#13; You have a freedom of choice here - Apache, Netscape or any
other server on UNIX would do. You can easily run the web
@@ -1037,7 +1066,6 @@ COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;Options ExecCGI
AllowOverride Limit
</PRE
></FONT
></TD
@@ -1068,10 +1096,6 @@ ALT="Note"></TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13; AllowOverride Limit allows the use of a Deny statement in the
.htaccess file generated by checksetup.pl
</P
><P
>&#13; Users of newer versions of Apache will generally find both
of the above lines will be in the httpd.conf file, rather
than srm.conf or access.conf.
@@ -1133,7 +1157,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN625">3.2.13. Installing the Bugzilla Files</H2
NAME="AEN692"
>3.2.13. Installing the Bugzilla Files</A
></H2
><P
>&#13; You should untar the Bugzilla files into a directory that
you're willing to make writable by the default web server user
@@ -1222,7 +1248,9 @@ HREF="patches.html"
<DIV
CLASS="example"
><A
NAME="AEN641"><P
NAME="AEN708"
></A
><P
><B
>Example 3-1. Setting up bonsaitools symlink</B
></P
@@ -1277,8 +1305,7 @@ WIDTH="100%"
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;perl -pi -e 's@#\!/usr/bonsaitools/bin/perl@#\!/usr/bin/perl@' *cgi *pl Bug.pm
processmail syncshadowdb
>&#13;perl -pi -e 's@#!/usr/bonsaitools/bin/perl@#!/usr/bin/perl@' *cgi *pl Bug.pm
</PRE
></FONT
></TD
@@ -1332,7 +1359,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN654">3.2.14. Setting Up the MySQL Database</H2
NAME="AEN721"
>3.2.14. Setting Up the MySQL Database</A
></H2
><P
>&#13; After you've gotten all the software installed and working you're ready
to start preparing the database for its life as a the back end to a high
@@ -1568,9 +1597,11 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN701">3.2.15. Tweaking <TT
NAME="AEN768"
>3.2.15. Tweaking <TT
CLASS="filename"
>localconfig</TT
></A
></H2
><P
>&#13; This file contains a variety of settings you may need to tweak including
@@ -1692,7 +1723,9 @@ CLASS="QUOTE"
<DIV
CLASS="example"
><A
NAME="AEN732"><P
NAME="AEN799"
></A
><P
><B
>Example 3-2. Running checksetup.pl as the web user</B
></P
@@ -1770,7 +1803,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN739">3.2.16. Setting Up Maintainers Manually (Optional)</H2
NAME="AEN806"
>3.2.16. Setting Up Maintainers Manually (Optional)</A
></H2
><P
>&#13; If you want to add someone else to every group by hand, you
can do it by typing the appropriate MySQL commands. Run
@@ -1818,7 +1853,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN750">3.2.17. The Whining Cron (Optional)</H2
NAME="AEN817"
>3.2.17. The Whining Cron (Optional)</A
></H2
><P
>&#13; By now you have a fully functional bugzilla, but what good
are bugs if they're not annoying? To help make those bugs
@@ -1902,7 +1939,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN760">3.2.18. Bug Graphs (Optional)</H2
NAME="AEN827"
>3.2.18. Bug Graphs (Optional)</A
></H2
><P
>&#13; As long as you installed the GD and Graph::Base Perl modules
you might as well turn on the nifty bugzilla bug reporting
@@ -1957,7 +1996,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN772">3.2.19. Securing MySQL</H2
NAME="AEN839"
>3.2.19. Securing MySQL</A
></H2
><P
>&#13; If you followed the installation instructions for setting up
your "bugs" and "root" user in MySQL, much of this should not
@@ -2242,7 +2283,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -2254,7 +2294,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="errata.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -2263,7 +2302,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -2272,7 +2310,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="osx.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -2288,7 +2325,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Tinderbox/Tinderbox2</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -16,8 +16,8 @@ REL="PREVIOUS"
TITLE="Perforce SCM"
HREF="scm.html"><LINK
REL="NEXT"
TITLE="Bugzilla Variants and Competitors"
HREF="variants.html"></HEAD
TITLE="The Future of Bugzilla"
HREF="future.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="scm.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -59,8 +57,7 @@ WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="variants.html"
ACCESSKEY="N"
HREF="future.html"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="tinderbox">5.4. Tinderbox/Tinderbox2</H1
NAME="tinderbox"
>5.4. Tinderbox/Tinderbox2</A
></H1
><P
>We need Tinderbox integration information.</P
></DIV
@@ -82,7 +81,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -94,7 +92,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="scm.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -103,7 +100,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -111,8 +107,7 @@ WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="variants.html"
ACCESSKEY="N"
HREF="future.html"
>Next</A
></TD
></TR
@@ -128,14 +123,13 @@ ALIGN="center"
VALIGN="top"
><A
HREF="integration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Bugzilla Variants and Competitors</TD
>The Future of Bugzilla</TD
></TR
></TABLE
></DIV

View File

@@ -4,7 +4,7 @@
>Translations</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -13,8 +13,8 @@ REL="UP"
TITLE="About This Guide"
HREF="about.html"><LINK
REL="PREVIOUS"
TITLE="Credits"
HREF="credits.html"><LINK
TITLE="Feedback"
HREF="feedback.html"><LINK
REL="NEXT"
TITLE="Document Conventions"
HREF="conventions.html"></HEAD
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -45,8 +44,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="credits.html"
ACCESSKEY="P"
HREF="feedback.html"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="conventions.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="translations">1.6. Translations</H1
NAME="translations"
>1.8. Translations</A
></H1
><P
>&#13; The Bugzilla Guide needs translators! Please volunteer your
translation into the language of your choice. If you will
@@ -86,7 +85,7 @@ HREF="mailto:mozilla-webtools@mozilla.org"
>mozilla-webtools@mozilla.org</A
>&#62;</TT
>, and arrange with
The Bugzilla Team to check it into CVS.
Matt Barnson to check it into CVS.
</P
></DIV
><DIV
@@ -94,7 +93,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -105,8 +103,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="credits.html"
ACCESSKEY="P"
HREF="feedback.html"
>Prev</A
></TD
><TD
@@ -115,7 +112,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -124,7 +120,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="conventions.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -133,14 +128,13 @@ ACCESSKEY="N"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Credits</TD
>Feedback</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -1,282 +0,0 @@
<HTML
><HEAD
><TITLE
>Troubleshooting</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="Installation"
HREF="installation.html"><LINK
REL="PREVIOUS"
TITLE="General Installation Notes"
HREF="geninstall.html"><LINK
REL="NEXT"
TITLE="Administering Bugzilla"
HREF="administration.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="geninstall.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 4. Installation</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="administration.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="troubleshooting">4.6. Troubleshooting</H1
><P
>This section gives solutions to common Bugzilla installation
problems.
</P
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN1208">4.6.1. DBD::Sponge::db prepare failed</H2
><P
>&#13; The following error message may appear due to a bug in DBD::mysql
(over which the Bugzilla team have no control):
</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
> "DBD::Sponge::db prepare failed: Cannot determine NUM_OF_FIELDS at D:/Perl/site/lib/DBD/mysql.pm line 248.
SV = NULL(0x0) at 0x20fc444
REFCNT = 1
FLAGS = (PADBUSY,PADMY)"
</PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13; To fix this, go to &#60;path-to-perl&#62;/lib/DBD/sponge.pm in your Perl
installation and replace
</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
> my $numFields;
if ($attribs-&#62;{'NUM_OF_FIELDS'}) {
$numFields = $attribs-&#62;{'NUM_OF_FIELDS'};
} elsif ($attribs-&#62;{'NAME'}) {
$numFields = @{$attribs-&#62;{NAME}};
</PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13; by
</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
> my $numFields;
if ($attribs-&#62;{'NUM_OF_FIELDS'}) {
$numFields = $attribs-&#62;{'NUM_OF_FIELDS'};
} elsif ($attribs-&#62;{'NAMES'}) {
$numFields = @{$attribs-&#62;{NAMES}};
</PRE
></FONT
></TD
></TR
></TABLE
><P
>&#13; (note the S added to NAME.)
</P
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="paranoid-security">4.6.2. cannot chdir(/var/spool/mqueue)</H2
><P
>If you are installing Bugzilla on SuSE Linux, or some other
distributions with
<SPAN
CLASS="QUOTE"
>"paranoid"</SPAN
>
security options, it is possible that the checksetup.pl script may fail
with the error:
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>cannot chdir(/var/spool/mqueue): Permission denied
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13; This is because your
<TT
CLASS="filename"
>/var/spool/mqueue</TT
>
directory has a mode of
<SPAN
CLASS="QUOTE"
>"drwx------"</SPAN
>. Type
<B
CLASS="command"
>chmod 755
<TT
CLASS="filename"
>/var/spool/mqueue</TT
>
</B
>
as root to fix this problem.
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="geninstall.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="administration.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>General Installation Notes</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Administering Bugzilla</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -4,7 +4,7 @@
>User Administration</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -29,7 +29,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -47,7 +46,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="postinstall-check.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -61,7 +59,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="programadmin.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -74,7 +71,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="useradmin">4.2. User Administration</H1
NAME="useradmin"
>4.2. User Administration</A
></H1
><P
>&#13; User administration is one of the easiest parts of Bugzilla.
Keeping it from getting out of hand, however, can become a
@@ -85,7 +84,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="defaultuser">4.2.1. Creating the Default User</H2
NAME="defaultuser"
>4.2.1. Creating the Default User</A
></H2
><P
>&#13; When you first run checksetup.pl after installing Bugzilla, it
will prompt you for the administrative username (email
@@ -155,13 +156,17 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="manageusers">4.2.2. Managing Other Users</H2
NAME="manageusers"
>4.2.2. Managing Other Users</A
></H2
><DIV
CLASS="section"
><H3
CLASS="section"
><A
NAME="login">4.2.2.1. Logging In</H3
NAME="login"
>4.2.2.1. Logging In</A
></H3
><P
></P
><OL
@@ -198,7 +203,9 @@ CLASS="section"
><H3
CLASS="section"
><A
NAME="createnewusers">4.2.2.2. Creating new users</H3
NAME="createnewusers"
>4.2.2.2. Creating new users</A
></H3
><P
>&#13; Your users can create their own user accounts by clicking
the "New Account" link at the bottom of each page. However,
@@ -323,7 +330,9 @@ CLASS="section"
><H3
CLASS="section"
><A
NAME="disableusers">4.2.2.3. Disabling Users</H3
NAME="disableusers"
>4.2.2.3. Disabling Users</A
></H3
><P
>&#13; I bet you noticed that big "Disabled Text" entry box
available from the "Add New User" screen, when you edit an
@@ -377,7 +386,9 @@ CLASS="section"
><H3
CLASS="section"
><A
NAME="modifyusers">4.2.2.4. Modifying Users</H3
NAME="modifyusers"
>4.2.2.4. Modifying Users</A
></H3
><P
>&#13; Here I will attempt to describe the function of each option
on the Edit User screen.
@@ -443,6 +454,75 @@ VALIGN="TOP"
><LI
><P
>&#13; <EM
>Email Notification</EM
>: You may choose
from one of three options:
<P
></P
><OL
TYPE="1"
><LI
><P
>&#13; All qualifying bugs except those which I change:
The user will be notified of any change to any bug
for which she is the reporter, assignee, QA
Contact, CC recipient, or "watcher".
</P
></LI
><LI
><P
>&#13; Only those bugs which I am listed on the CC line:
The user will not be notified of changes to bugs
where she is the assignee, reporter, or QA
Contact, but will receive them if she is on the CC
list.
<DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13; She will still receive whining cron emails if
you set up the "whinemail" feature.
</P
></TD
></TR
></TABLE
></DIV
>
</P
></LI
><LI
><P
>&#13; <EM
>All Qualifying Bugs</EM
>: This
user is a glutton for punishment. If her name is
in the reporter, QA Contact, CC, assignee, or is a
"watcher", she will get email updates regarding
the bug.
</P
></LI
></OL
>
</P
><P
>&#13; <EM
>Disable Text</EM
>: If you type anything
in this box, including just a space, the user account is
@@ -616,7 +696,7 @@ VALIGN="TOP"
>: This flag allows a user
do what you're doing right now: edit other users. This
will allow those with the right to do so to remove
administrator privileges from other users or grant them
administrator priveleges from other users or grant them
to themselves. Enable with care.
</P
></LI
@@ -644,7 +724,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -656,7 +735,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="postinstall-check.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -665,7 +743,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -674,7 +751,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="programadmin.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -690,7 +766,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="administration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -1,241 +0,0 @@
<HTML
><HEAD
><TITLE
>User Preferences</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="Using Bugzilla"
HREF="using.html"><LINK
REL="PREVIOUS"
TITLE="Hints and Tips"
HREF="hintsandtips.html"><LINK
REL="NEXT"
TITLE="Installation"
HREF="installation.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="hintsandtips.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 3. Using Bugzilla</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="installation.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="userpreferences">3.3. User Preferences</H1
><P
>Once you have logged in, you can customise various aspects of
Bugzilla via the "Edit prefs" link in the page footer.
The preferences are split into four tabs:</P
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="accountsettings">3.3.1. Account Settings</H2
><P
>On this tab, you can change your basic account information,
including your password, email address and real name. For security
reasons, in order to change anything on this page you must type your
<EM
>current</EM
>
password into the
<SPAN
CLASS="QUOTE"
>"Password"</SPAN
>
field at the top of the page.
If you attempt to change your email address, a confirmation
email is sent to both the old and new addresses, with a link to use to
confirm the change. This helps to prevent account hijacking.</P
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="emailsettings">3.3.2. Email Settings</H2
><P
>On this tab you can reduce or increase the amount of email sent
you from Bugzilla, opting in our out depending on your relationship to
the bug and the change that was made to it. (Note that you can also do
client-side filtering using the X-Bugzilla-Reason header which Bugzilla
adds to all bugmail.)</P
><P
>By entering user email names, delineated by commas, into the
"Users to watch" text entry box you can receive a copy of all the
bugmail of other users (security settings permitting.) This powerful
functionality enables seamless transitions as developers change
projects, managers wish to get in touch with the issues faced by their
direct reports, or users go on vacation.</P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>The ability to watch other users may not be available in all
Bugzilla installations. If you can't see it, ask your
administrator.</P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="footersettings">3.3.3. Page Footer</H2
><P
>On the Search page, you can store queries in Bugzilla, so if you
regularly run a particular query it is just a drop-down menu away.
Once you have a stored query, you can come
here to request that it also be displayed in your page footer.</P
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="permissionsettings">3.3.4. Permissions</H2
><P
>This is a purely informative page which outlines your current
permissions on this installation of Bugzilla - what product groups you
are in, and whether you can edit bugs or perform various administration
functions.</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="hintsandtips.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Hints and Tips</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="using.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Installation</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -4,7 +4,7 @@
>Using Bugzilla</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -25,7 +25,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -43,7 +42,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="conventions.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -57,7 +55,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="whatis.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -69,7 +66,9 @@ WIDTH="100%"></DIV
CLASS="chapter"
><H1
><A
NAME="using">Chapter 2. Using Bugzilla</H1
NAME="using"
>Chapter 2. Using Bugzilla</A
></H1
><TABLE
BORDER="0"
WIDTH="100%"
@@ -124,24 +123,28 @@ HREF="how.html#myaccount"
></DT
><DT
>2.3.2. <A
HREF="how.html#bug_page"
>Anatomy of a Bug</A
HREF="how.html#query"
>The Bugzilla Query Page</A
></DT
><DT
>2.3.3. <A
HREF="how.html#query"
>Searching for Bugs</A
></DT
><DT
>2.3.4. <A
HREF="how.html#list"
>Bug Lists</A
></DT
><DT
>2.3.5. <A
HREF="how.html#bugreports"
>Filing Bugs</A
>Creating and Managing Bug Reports</A
></DT
><DD
><DL
><DT
>2.3.3.1. <A
HREF="how.html#bug-writing"
>Writing a Great Bug Report</A
></DT
><DT
>2.3.3.2. <A
HREF="how.html#bug-manage"
>Managing your Bug Reports</A
></DT
></DL
></DD
></DL
></DD
><DT
@@ -161,6 +164,25 @@ HREF="init4me.html#accountsettings"
HREF="init4me.html#emailsettings"
>Email Settings</A
></DT
><DD
><DL
><DT
>2.4.2.1. <A
HREF="init4me.html#notification"
>Email Notification</A
></DT
><DT
>2.4.2.2. <A
HREF="init4me.html#newemailtech"
>New Email Technology</A
></DT
><DT
>2.4.2.3. <A
HREF="init4me.html#watchsettings"
>"Watching" Users</A
></DT
></DL
></DD
><DT
>2.4.3. <A
HREF="init4me.html#footersettings"
@@ -186,7 +208,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -198,7 +219,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="conventions.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -207,7 +227,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -216,7 +235,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="whatis.html"
ACCESSKEY="N"
>Next</A
></TD
></TR

View File

@@ -4,7 +4,7 @@
>Using Bugzilla-Conclusion</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="init4me.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="installation.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="usingbz-conc">2.5. Using Bugzilla-Conclusion</H1
NAME="usingbz-conc"
>2.5. Using Bugzilla-Conclusion</A
></H1
><P
>&#13; Thank you for reading through this portion of the Bugzilla
Guide. I anticipate it may not yet meet the needs of all
@@ -90,7 +89,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -102,7 +100,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="init4me.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -111,7 +108,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -120,7 +116,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -136,7 +131,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="using.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Loki Bugzilla (Fenris)</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,21 +45,19 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="rhbugzilla.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 6. Bugzilla Variants and Competitors</TD
>Chapter 7. Bugzilla Variants and Competitors</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="variant-issuezilla.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="variant-fenris">6.2. Loki Bugzilla (Fenris)</H1
NAME="variant-fenris"
>7.2. Loki Bugzilla (Fenris)</A
></H1
><P
>Fenris can be found at <A
HREF="http://fenris.lokigames.com/"
@@ -86,7 +85,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -98,7 +96,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="rhbugzilla.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -107,7 +104,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -116,7 +112,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="variant-issuezilla.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -132,7 +127,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="variants.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Issuezilla</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,21 +45,19 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="variant-fenris.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 6. Bugzilla Variants and Competitors</TD
>Chapter 7. Bugzilla Variants and Competitors</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="variant-scarab.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="variant-issuezilla">6.3. Issuezilla</H1
NAME="variant-issuezilla"
>7.3. Issuezilla</A
></H1
><P
>Issuezilla is another fork from Bugzilla, and seems nearly
as popular as the Red Hat Bugzilla fork. Some Issuezilla team
@@ -97,7 +96,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -109,7 +107,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="variant-fenris.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -118,7 +115,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -127,7 +123,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="variant-scarab.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -143,7 +138,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="variants.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Perforce SCM</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,21 +45,19 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="variant-scarab.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 6. Bugzilla Variants and Competitors</TD
>Chapter 7. Bugzilla Variants and Competitors</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="variant-sourceforge.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="variant-perforce">6.5. Perforce SCM</H1
NAME="variant-perforce"
>7.5. Perforce SCM</A
></H1
><P
>Although Perforce isn't really a bug tracker, it can be used
as such through the <SPAN
@@ -92,7 +91,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -104,7 +102,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="variant-scarab.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -113,7 +110,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -122,7 +118,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="variant-sourceforge.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -138,7 +133,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="variants.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Scarab</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,21 +45,19 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="variant-issuezilla.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 6. Bugzilla Variants and Competitors</TD
>Chapter 7. Bugzilla Variants and Competitors</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="variant-perforce.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="variant-scarab">6.4. Scarab</H1
NAME="variant-scarab"
>7.4. Scarab</A
></H1
><P
>Scarab is a promising new bug-tracking system built using
Java Serlet technology. As of this writing, no source code has
@@ -92,7 +91,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -104,7 +102,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="variant-issuezilla.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -113,7 +110,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -122,7 +118,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="variant-perforce.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -138,7 +133,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="variants.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>SourceForge</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,21 +45,19 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="variant-perforce.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 6. Bugzilla Variants and Competitors</TD
>Chapter 7. Bugzilla Variants and Competitors</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="faq.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="variant-sourceforge">6.6. SourceForge</H1
NAME="variant-sourceforge"
>7.6. SourceForge</A
></H1
><P
>SourceForge is more of a way of coordinating geographically
distributed free software and open source projects over the
@@ -92,7 +91,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -104,7 +102,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="variant-perforce.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -113,7 +110,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -122,7 +118,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="faq.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -138,7 +133,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="variants.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,14 +4,14 @@
>Bugzilla Variants and Competitors</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Tinderbox/Tinderbox2"
HREF="tinderbox.html"><LINK
TITLE="The Future of Bugzilla"
HREF="future.html"><LINK
REL="NEXT"
TITLE="Red Hat Bugzilla"
HREF="rhbugzilla.html"></HEAD
@@ -25,7 +25,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -42,8 +41,7 @@ WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="tinderbox.html"
ACCESSKEY="P"
HREF="future.html"
>Prev</A
></TD
><TD
@@ -57,7 +55,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="rhbugzilla.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -69,7 +66,9 @@ WIDTH="100%"></DIV
CLASS="chapter"
><H1
><A
NAME="variants">Chapter 6. Bugzilla Variants and Competitors</H1
NAME="variants"
>Chapter 7. Bugzilla Variants and Competitors</A
></H1
><DIV
CLASS="TOC"
><DL
@@ -78,32 +77,32 @@ CLASS="TOC"
>Table of Contents</B
></DT
><DT
>6.1. <A
>7.1. <A
HREF="rhbugzilla.html"
>Red Hat Bugzilla</A
></DT
><DT
>6.2. <A
>7.2. <A
HREF="variant-fenris.html"
>Loki Bugzilla (Fenris)</A
></DT
><DT
>6.3. <A
>7.3. <A
HREF="variant-issuezilla.html"
>Issuezilla</A
></DT
><DT
>6.4. <A
>7.4. <A
HREF="variant-scarab.html"
>Scarab</A
></DT
><DT
>6.5. <A
>7.5. <A
HREF="variant-perforce.html"
>Perforce SCM</A
></DT
><DT
>6.6. <A
>7.6. <A
HREF="variant-sourceforge.html"
>SourceForge</A
></DT
@@ -124,7 +123,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -135,8 +133,7 @@ WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="tinderbox.html"
ACCESSKEY="P"
HREF="future.html"
>Prev</A
></TD
><TD
@@ -145,7 +142,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -154,7 +150,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="rhbugzilla.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -163,7 +158,7 @@ ACCESSKEY="N"
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Tinderbox/Tinderbox2</TD
>The Future of Bugzilla</TD
><TD
WIDTH="34%"
ALIGN="center"

View File

@@ -1,235 +0,0 @@
<HTML
><HEAD
><TITLE
>Voting</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="Administering Bugzilla"
HREF="administration.html"><LINK
REL="PREVIOUS"
TITLE="Product, Component, Milestone, and Version Administration"
HREF="programadmin.html"><LINK
REL="NEXT"
TITLE="Groups and Group Security"
HREF="groups.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="programadmin.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 5. Administering Bugzilla</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="groups.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="voting">5.4. Voting</H1
><P
>The concept of "voting" is a poorly understood, yet powerful
feature for the management of open-source projects. Each user is
assigned so many Votes per product, which they can freely reassign (or
assign multiple votes to a single bug). This allows developers to gauge
user need for a particular enhancement or bugfix. By allowing bugs with
a certain number of votes to automatically move from "UNCONFIRMED" to
"NEW", users of the bug system can help high-priority bugs garner
attention so they don't sit for a long time awaiting triage.</P
><P
>The daunting challenge of Votes is deciding where you draw the
line for a "vocal majority". If you only have a user base of 100 users,
setting a low threshold for bugs to move from UNCONFIRMED to NEW makes
sense. As the Bugzilla user base expands, however, these thresholds
must be re-evaluated. You should gauge whether this feature is worth
the time and close monitoring involved, and perhaps forego
implementation until you have a critical mass of users who demand
it.</P
><P
>To modify Voting settings:</P
><P
></P
><OL
TYPE="1"
><LI
><P
>Navigate to the "Edit product" screen for the Product you
wish to modify</P
></LI
><LI
><P
>Set "Maximum Votes per person" to your calculated value.
Setting this field to "0" disables voting.</P
></LI
><LI
><P
>Set "Maximum Votes a person can put on a single bug" to your
calculated value. It should probably be some number lower than the
"Maximum votes per person". Setting this field to "0" disables
voting, but leaves the voting options open to the user. This is
confusing.</P
></LI
><LI
><P
>Set "Number of votes a bug in this product needs to
automatically get out of the UNCONFIRMED state" to your calculated
number. Setting this field to "0" disables the automatic move of
bugs from UNCONFIRMED to NEW. Some people advocate leaving this at
"0", but of what use are Votes if your Bugzilla user base is unable
to affect which bugs appear on Development radar?
<DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>You should probably set this number to higher than a small
coalition of Bugzilla users can influence it. Most sites use this
as a "referendum" mechanism -- if users are able to vote a bug
out of UNCONFIRMED, it is a
<EM
>really</EM
>
bad bug!</P
></TD
></TR
></TABLE
></DIV
>
</P
></LI
><LI
><P
>Once you have adjusted the values to your preference, select
the "Update" button.</P
></LI
></OL
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="programadmin.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="groups.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Product, Component, Milestone, and Version Administration</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="administration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Groups and Group Security</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -4,7 +4,7 @@
>What is Bugzilla?</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="using.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="why.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,14 +70,16 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="whatis">2.1. What is Bugzilla?</H1
NAME="whatis"
>2.1. What is Bugzilla?</A
></H1
><P
>&#13; Bugzilla is one example of a class of programs called "Defect
Tracking Systems", or, more commonly, "Bug-Tracking Systems". Defect
Tracking Systems allow individual or groups of developers to keep
track of outstanding bugs in their product effectively. Bugzilla was
originally written by Terry Weissman in a programming language called
"TCL", to replace a crappy bug-tracking database used internally by
"TCL", to replace a crappy bug-tracking database used internally for
Netscape Communications. Terry later ported Bugzilla to Perl from
TCL, and in Perl it remains to this day. Most commercial
defect-tracking software vendors at the time charged enormous
@@ -96,62 +95,90 @@ system against which all others are measured.
><UL
><LI
><P
>Powerful searching</P
>&#13; integrated, product-based granular security schema
</P
></LI
><LI
><P
>User-configurable email notifications of bug changes</P
>&#13; inter-bug dependencies and dependency graphing
</P
></LI
><LI
><P
>Full change history</P
>&#13; advanced reporting capabilities
</P
></LI
><LI
><P
>Inter-bug dependency tracking and graphing</P
>&#13; a robust, stable RDBMS back-end
</P
></LI
><LI
><P
>Excellent attachment management</P
>&#13; extensive configurability
</P
></LI
><LI
><P
>Integrated, product-based, granular security schema</P
>&#13; a very well-understood and well-thought-out natural bug resolution protocol
</P
></LI
><LI
><P
>Fully security-audited, and runs under Perl's taint mode</P
>&#13; email, XML, console, and HTTP APIs
</P
></LI
><LI
><P
>A robust, stable RDBMS back-end</P
>&#13; available integration with automated software
configuration management systems, including Perforce and
CVS (through the Bugzilla email interface and
checkin/checkout scripts)
</P
></LI
><LI
><P
>Web, XML, email and console interfaces</P
></LI
><LI
><P
>Completely customisable and/or localisable web user interface</P
></LI
><LI
><P
>Extensive configurability</P
></LI
><LI
><P
>Smooth upgrade pathway between versions</P
>&#13; too many more features to list
</P
></LI
></UL
>
</P
><P
>&#13; Despite its current robustness and popularity, Bugzilla faces
some near-term challenges, such as reliance on a single
database, a lack of abstraction of the user interface and
program logic, verbose email bug notifications, a powerful but
daunting query interface, little reporting configurability,
problems with extremely large queries, some unsupportable bug
resolution options, little internationalization (although non-US
character sets are accepted for comments), and dependence on
some nonstandard libraries.
</P
><P
>&#13; Some recent headway has been made on the query front, however.
If you are using the latest version of Bugzilla, you should see
a <SPAN
CLASS="QUOTE"
>"simple search"</SPAN
> form on the default front page of
your Bugzilla install. Type in two or three search terms and
you should pull up some relevant information. This is also
available as "queryhelp.cgi".
</P
><P
>&#13; Despite these small problems, Bugzilla is very hard to beat. It
is under <EM
>very</EM
> active development to address
the current issues, and continually gains new features.
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -163,7 +190,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="using.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -172,7 +198,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -181,7 +206,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="why.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -197,7 +221,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="using.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Why Should We Use Bugzilla?</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="whatis.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="how.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="why">2.2. Why Should We Use Bugzilla?</H1
NAME="why"
>2.2. Why Should We Use Bugzilla?</A
></H1
><TABLE
BORDER="0"
WIDTH="100%"
@@ -160,7 +159,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -172,7 +170,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="whatis.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -181,7 +178,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -190,7 +186,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="how.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -206,7 +201,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="using.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

View File

@@ -4,7 +4,7 @@
>Win32 Installation Notes</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.61
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
@@ -28,7 +28,6 @@ ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -46,7 +45,6 @@ ALIGN="left"
VALIGN="bottom"
><A
HREF="geninstall.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -60,7 +58,6 @@ ALIGN="right"
VALIGN="bottom"
><A
HREF="administration.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -73,7 +70,9 @@ CLASS="section"
><H1
CLASS="section"
><A
NAME="win32">3.6. Win32 Installation Notes</H1
NAME="win32"
>3.6. Win32 Installation Notes</A
></H1
><P
>This section covers installation on Microsoft Windows 95,
98, ME, NT, and 2000. Bugzilla works fine on Win32 platforms,
@@ -99,7 +98,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="wininstall">3.6.1. Win32 Installation: Step-by-step</H2
NAME="wininstall"
>3.6.1. Win32 Installation: Step-by-step</A
></H2
><DIV
CLASS="note"
><P
@@ -246,19 +247,11 @@ TARGET="_top"
></LI
><LI
><P
>&#13; Use ppm from your perl\bin directory to install the following
packs: DBI, DBD-Mysql, TimeDate, Chart, Date-Calc, Date-Manip,
GD, AppConfig, and Template. You may need to extract them from
.zip format using Winzip or other unzip program first. Most of
these additional ppm modules can be downloaded from ActiveState,
but AppConfig and Template should be obtained from OpenInteract
using <A
HREF="http://openinteract.sourceforge.net/"
TARGET="_top"
>the instructions on
the Template Toolkit web site</A
>.
</P
>&#13; Use ppm from your perl\bin directory to install the following packs: DBI,
DBD-Mysql, TimeDate, Chart, Date-Calc, Date-Manip, and GD. You may need
to extract them from .zip format using Winzip or other unzip program first.
These additional ppm modules can be downloaded from ActiveState.
</P
><DIV
CLASS="note"
><P
@@ -285,11 +278,6 @@ VALIGN="TOP"
HREF="http://www.activestate.com/PPMPackages/zips/5xx-builds-only"
TARGET="_top"
>&#13; http://www.activestate.com/PPMPackages/zips/5xx-builds-only/</A
>
or <A
HREF="http://www.activestate.com/PPMPackages/5.6plus"
TARGET="_top"
>http://www.activestate.com/PPMPackages/5.6plus</A
>
</P
></TD
@@ -313,7 +301,9 @@ CLASS="command"
><DIV
CLASS="example"
><A
NAME="AEN985"><P
NAME="AEN1048"
></A
><P
><B
>Example 3-3. Installing ActivePerl ppd Modules on Microsoft Windows</B
></P
@@ -333,58 +323,13 @@ CLASS="option"
>Watch your capitalization!</P
></DIV
><P
>&#13; ActiveState's 5.6Plus directory also contains an AppConfig ppm, so
you might see the following error when trying to install the
version at OpenInteract:
</P
><P
>&#13; <TT
CLASS="computeroutput"
>&#13; Error installing package 'AppConfig': Read a PPD for
'AppConfig', but it is not intended for this build of Perl
(MSWin32-x86-multi-thread)
</TT
>&#13; You can find ActiveState ppm modules at
<A
HREF="http://www.activestate.com/PPMPackages/5.6plus/"
TARGET="_top"
>&#13; http://www.activestate.com/PPMPackages/5.6plus</A
>
</P
><P
>&#13; If so, download both <A
HREF="http://openinteract.sourceforge.net/ppmpackages/AppConfig.tar.gz"
TARGET="_top"
>the
tarball</A
> and <A
HREF="http://openinteract.sourceforge.net/ppmpackages/AppConfig.ppd"
TARGET="_top"
>the
ppd</A
> directly from OpenInteract, then run ppm from within
the same directory to which you downloaded those files and
install the package by referencing the ppd file explicitly via in
the install command, f.e.:
<DIV
CLASS="example"
><A
NAME="AEN998"><P
><B
>Example 3-4. Installing OpenInteract ppd Modules manually on Microsoft
Windows</B
></P
><P
>&#13; <TT
CLASS="computeroutput"
><B
CLASS="command"
>install
<TT
CLASS="filename"
>C:\AppConfig.ppd</TT
></B
></TT
>
</P
></DIV
>
</P
></LI
><LI
><P
@@ -1298,20 +1243,13 @@ VALIGN="TOP"
HREF="http://bugzilla.mozilla.org/show_bug.cgi?id=62000"
TARGET="_top"
>bug 62000</A
>,
the perl documentation says that you should always use
<TT
>, the perl documentation says that you should always use <TT
CLASS="function"
>binmode()</TT
> when dealing with binary
files, but never when dealing with text files. That seems
to suggest that rather than arbitrarily putting
<TT
> when dealing with binary files, but never when dealing with text files. That seems to suggest that rather than aribtrarily putting <TT
CLASS="function"
>binmode()</TT
> at the beginning of the
attachment files, there should be logic to determine if
<TT
> at the begining of the attachment files, there should be logic to determine if <TT
CLASS="function"
>binmode()</TT
> is needed or not.
@@ -1383,7 +1321,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="addlwintips">3.6.2. Additional Windows Tips</H2
NAME="addlwintips"
>3.6.2. Additional Windows Tips</A
></H2
><DIV
CLASS="tip"
><P
@@ -1407,7 +1347,9 @@ VALIGN="TOP"
><P
>&#13; From Andrew Pearson:
<A
NAME="AEN1168"><BLOCKQUOTE
NAME="AEN1221"
></A
><BLOCKQUOTE
CLASS="BLOCKQUOTE"
><P
>&#13; You can make Bugzilla work with Personal Web Server for
@@ -1487,13 +1429,15 @@ VALIGN="TOP"
>not necessary</EM
> for Bugzilla 2.13 and
later, which includes the current release, Bugzilla
2.16.
2.14.
<DIV
CLASS="example"
><A
NAME="AEN1180"><P
NAME="AEN1233"
></A
><P
><B
>Example 3-5. Removing encrypt() for Windows NT Bugzilla version
>Example 3-4. Removing encrypt() for Windows NT Bugzilla version
2.12 or earlier</B
></P
><P
@@ -1551,7 +1495,9 @@ CLASS="section"
><H2
CLASS="section"
><A
NAME="bzldap">3.6.3. Bugzilla LDAP Integration</H2
NAME="bzldap"
>3.6.3. Bugzilla LDAP Integration</A
></H2
><P
>&#13; What follows is some late-breaking information on using the
LDAP authentication options with Bugzilla. The author has not
@@ -1632,7 +1578,6 @@ CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
@@ -1644,7 +1589,6 @@ ALIGN="left"
VALIGN="top"
><A
HREF="geninstall.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
@@ -1653,7 +1597,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
@@ -1662,7 +1605,6 @@ ALIGN="right"
VALIGN="top"
><A
HREF="administration.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
@@ -1678,7 +1620,6 @@ ALIGN="center"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="U"
>Up</A
></TD
><TD

Some files were not shown because too many files have changed in this diff Show More