summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/Template.pm12
-rw-r--r--docs/rel_notes.txt8
-rw-r--r--skins/standard/release-notes.css35
-rw-r--r--t/009bugwords.t6
-rw-r--r--template/en/default/index.html.tmpl12
-rw-r--r--template/en/default/pages/release-notes.html.tmpl747
6 files changed, 813 insertions, 7 deletions
diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm
index b4e0dcb90..800536cd5 100644
--- a/Bugzilla/Template.pm
+++ b/Bugzilla/Template.pm
@@ -35,6 +35,7 @@ package Bugzilla::Template;
use strict;
use Bugzilla::Constants;
+use Bugzilla::Install::Requirements;
use Bugzilla::Util;
use Bugzilla::User;
use Bugzilla::Error;
@@ -57,7 +58,6 @@ use base qw(Template);
# (which is how Perl implements constants) and ignoring the rest (which, if
# Constants.pm exports only constants, as it should, will be nothing else).
sub _load_constants {
- use Bugzilla::Constants ();
my %constants;
foreach my $constant (@Bugzilla::Constants::EXPORT,
@Bugzilla::Constants::EXPORT_OK)
@@ -820,6 +820,16 @@ sub create {
Bugzilla::BugMail::Send($id, $mailrecipients);
},
+ # These don't work as normal constants.
+ DB_MODULE => \&Bugzilla::Constants::DB_MODULE,
+ REQUIRED_MODULES =>
+ \&Bugzilla::Install::Requirements::REQUIRED_MODULES,
+ OPTIONAL_MODULES => sub {
+ my @optional = @{OPTIONAL_MODULES()};
+ @optional = sort {$a->{feature} cmp $b->{feature}}
+ @optional;
+ return \@optional;
+ },
},
}) || die("Template creation failed: " . $class->error());
diff --git a/docs/rel_notes.txt b/docs/rel_notes.txt
index 35b36d0f8..64212a292 100644
--- a/docs/rel_notes.txt
+++ b/docs/rel_notes.txt
@@ -1,3 +1,11 @@
+Release Notes for Bugzilla version 3.0 and higher are available in HTML
+format, either on the bugzilla.org website, or in your current installation,
+linked from the index page.
+
+bugzilla.org links for release notes
+------------------------------------
+3.0: http://www.bugzilla.org/releases/3.0/release-notes.html
+
***************************************
*** The Bugzilla 2.22 Release Notes ***
***************************************
diff --git a/skins/standard/release-notes.css b/skins/standard/release-notes.css
new file mode 100644
index 000000000..51159ae20
--- /dev/null
+++ b/skins/standard/release-notes.css
@@ -0,0 +1,35 @@
+/* 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 Initial Developer of the Original Code is Everything Solved.
+ * Portions created by Everything Solved are Copyright (C) 2006
+ * Everything Solved. All Rights Reserved.
+ *
+ * The Original Code is the Bugzilla Bug Tracking System.
+ *
+ * Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org>
+ */
+
+#bugzilla-body {
+ padding: 0 1em;
+}
+
+.req_new {
+ color: red;
+}
+
+.req_table {
+ border-collapse: collapse;
+}
+
+.req_table td, .req_table th {
+ border: 1px solid black;
+ padding: .25em;
+}
diff --git a/t/009bugwords.t b/t/009bugwords.t
index 5b1a9d6ba..bf3d91f26 100644
--- a/t/009bugwords.t
+++ b/t/009bugwords.t
@@ -77,9 +77,9 @@ foreach my $file (@testitems) {
}
# "Bugzilla"
- if (grep /(?<!X\-)Bugzilla(?!_)/, $text) {
- # Exclude JS comments, hyperlinks, USE and variable assignment.
- unless (grep /(\/\/.*|org.*>|USE |= )Bugzilla/, $text) {
+ if (grep /(?<!X\-)Bugzilla(?!_|::|-&gt|\.pm)/, $text) {
+ # Exclude JS comments, hyperlinks, USE, and variable assignment.
+ unless (grep /(\/\/.*|(org|api).*>|USE |= )Bugzilla/, $text) {
push(@errors, [$lineno, $text]);
next;
}
diff --git a/template/en/default/index.html.tmpl b/template/en/default/index.html.tmpl
index 9c3a88b2f..a96f2b15e 100644
--- a/template/en/default/index.html.tmpl
+++ b/template/en/default/index.html.tmpl
@@ -95,9 +95,15 @@ function addSidebar() {
<div id="page-index">
<div class="intro"></div>
- <p>This is where we put in lots of nifty words explaining all about [% terms.Bugzilla %].</p>
-
- <p>But it all boils down to a choice of:</p>
+ <p>Welcome to [% terms.Bugzilla %]. To see what's new in this version
+ of [% terms.Bugzilla %], see the
+ <a href="page.cgi?id=release-notes.html">release notes</a>!
+ You may also want to read the
+ <a href="[% Param('docs_urlbase') FILTER html %]using.html">
+ [%- terms.Bugzilla %] User's Guide</a> to find out more about
+ [%+ terms.Bugzilla %] and how to use it.</p>
+
+ <p>Most common actions:</p>
<ul>
<li id="query"><a href="query.cgi">Search existing [% terms.bug %] reports</a></li>
<li id="enter-bug"><a href="enter_bug.cgi">Enter a new [% terms.bug %] report</a></li>
diff --git a/template/en/default/pages/release-notes.html.tmpl b/template/en/default/pages/release-notes.html.tmpl
new file mode 100644
index 000000000..b81eb28d7
--- /dev/null
+++ b/template/en/default/pages/release-notes.html.tmpl
@@ -0,0 +1,747 @@
+[%# 1.0@bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+ # License Version 1.1 (the "License"); you may not use this file
+ # except in compliance with the License. You may obtain a copy of
+ # the License at http://www.mozilla.org/MPL/
+ #
+ # Software distributed under the License is distributed on an "AS
+ # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ # implied. See the License for the specific language governing
+ # rights and limitations under the License.
+ #
+ # The Original Code is the Bugzilla Bug Tracking System.
+ #
+ # The Initial Developer of the Original Code is Everything Solved.
+ # Portions created by Everything Solved are Copyright (C) 2006
+ # Everything Solved. All Rights Reserved.
+ #
+ # Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org>
+ #%]
+
+[% PROCESS global/variables.none.tmpl %]
+[% INCLUDE global/header.html.tmpl
+ title = "$terms.Bugzilla 3.0 Release Notes"
+ style_urls = ['skins/standard/release-notes.css']
+%]
+
+<p><big>These release notes are currently a <strong>DRAFT</strong>.</big></p>
+
+<h2>Table of Contents</h2>
+
+<ul class="bz_toc">
+ <li><a href="#v30_introduction">Introduction</a></li>
+ <li><a href="#v30_req">Minimum Requirements</a></li>
+ <li><a href="#v30_feat">New Features and Improvements</a></li>
+ <li><a href="#v30_issues">Outstanding Issues</a></li>
+ <li><a href="#v30_upgrading">How to Upgrade From An Older Version</a></li>
+ <li><a href="#v30_code_changes">Code Changes Which May Affect
+ Customizations</a></li>
+ <li><a href="#v30_previous">Release Notes for Previous Versions</a></li>
+</ul>
+
+<h2><a name="v30_introduction"></a>Introduction</h2>
+
+<p>Welcome to [% terms.Bugzilla %] 3.0! It's been over eight years since
+ we released [% terms.Bugzilla %] 2.0, and everything has changed since
+ then. Even just since our previous release, [% terms.Bugzilla %] 2.22,
+ we've added a <em>lot</em> of new features. So enjoy the release, we're
+ happy to bring it to you.</p>
+
+<p>If you're upgrading, make sure to read <a href="#v30_upgrading">How to
+ Upgrade From An Older Version</a>. If you are upgrading from a release
+ before 2.22, make sure to read the release notes for all the
+ <a href="#v30_previous">previous versions</a> in between your version
+ and [% terms.Bugzilla %] 3.0.</p>
+
+<h2><a name="v30_req"></a>Minimum Requirements</h2>
+
+<p>Any requirements that are new since 2.22 will look like
+ <span class="req_new">this</span>.</p>
+
+<ul>
+ <li><a href="#v30_req_perl">Perl</a></li>
+ <li><a href="#v30_req_mysql">For MySQL Users</a></li>
+ <li><a href="#v30_req_pg">For PostgreSQL Users</a></li>
+ <li><a href="#v30_req_modules">Required Perl Modules</a></li>
+ <li><a href="#v30_req_optional_mod">Optional Perl
+ Modules</a></li>
+</ul>
+
+
+<h3><a name="v30_req_perl"></a>Perl</h3>
+
+<ul>
+ <li>Perl <span class="req_new">v<strong>5.8.0</strong></span> (non-Windows
+ platforms)</li>
+ <li>Perl v<strong>5.8.1</strong> (Windows platforms)</li>
+</ul>
+
+[% PROCESS db_req db='mysql' %]
+
+[% PROCESS db_req db='pg' %]
+
+<h3><a name="v30_req_modules"></a>Required Perl Modules</h3>
+
+[% INCLUDE req_table reqs = REQUIRED_MODULES
+ new = ['Email-MIME-Modifier', 'Email-Send']
+ updated = ['DBI'] %]
+
+<h3><a name="v30_req_optional_mod"></a>Optional Perl Modules</h3>
+
+<p>The following perl modules, if installed, enable various
+ features of [% terms.Bugzilla %]:</p>
+
+[% INCLUDE req_table reqs = OPTIONAL_MODULES
+ new = ['libwww-perl', 'SOAP-Lite', 'mod_perl',
+ 'Apache-DBI', 'Email-MIME-Attachment-Stripper',
+ 'Email-Reply']
+ updated = ['CGI']
+ include_feature = 1 %]
+
+<h2><a name="v30_feat"></a>New Features and Improvements</h2>
+
+<ul>
+ <li><a href="#v30_feat_cf">Custom Fields</a></li>
+ <li><a href="#v30_feat_mp">mod_perl Support</a></li>
+ <li><a href="#v30_feat_sq">Shared Saved Searches</a></li>
+ <li>
+ <a href="#v30_feat_afn">Attachments and Flags on New [% terms.Bugs %]</a>
+ </li>
+ <li><a href="#v30_feat_cr">Custom Resolutions</a></li>
+ <li><a href="#v30_feat_ppp">Per-Product Permissions</a></li>
+ <li><a href="#v30_feat_ui">User Interface Improvements</a></li>
+ <li><a href="#v30_feat_xml">XML-RPC Interface</a></li>
+ <li><a href="#v30_feat_skin">Skins</a></li>
+ <li><a href="#v30_feat_sbu">Unchangeable Fields Appear
+ Unchangeable</a></li>
+ <li><a href="#v30_feat_et">All Emails in Templates</a></li>
+ <li><a href="#v30_feat_df">No More Double-Filed [% terms.Bugs %]</a></li>
+ <li><a href="#v30_feat_cc">Default CC List for Components</a></li>
+ <li><a href="#v30_feat_emi">File/Modify [% terms.Bugs %] By Email</a></li>
+ <li><a href="#v30_feat_gw">Users Who Get All [% terms.Bug %]
+ Notifications</a></li>
+ <li><a href="#v30_feat_utf8">Improved UTF-8 Support</a></li>
+ <li><a href="#v30_feat_upda">Automatic Update Notification</a></li>
+ <li><a href="#v30_feat_welc">Welcome Page for New Installs</a></li>
+ <li><a href="#v30_feat_other">Other Enhancements and Changes</a></li>
+</ul>
+
+<h3><a name="v30_feat_cf"></a>Custom Fields</h3>
+
+<p>[% terms.Bugzilla %] now includes very basic support for custom fields.</p>
+
+<p>Users in the <kbd>admin</kbd> group can add plain-text or drop-down
+ custom fields. You can edit the values available for drop-down fields
+ using the &quot;Field Values&quot; control panel.</p>
+
+<p>Don't add too many custom fields! It can make [% terms.Bugzilla %]
+ very difficult to use. Try your best to get along with the default
+ fields, and then if you find that you can't live without custom fields
+ after a few weeks of using [% terms.Bugzilla %], only then should you
+ start your custom fields.</p>
+
+<h3><a name="v30_feat_mp"></a>mod_perl Support</h3>
+
+<p>[% terms.Bugzilla %] 3.0 supports mod_perl, which allows for extremely
+ enhanced page-load performance. mod_perl trades memory usage for performance,
+ allowing near-instantaneous page loads, but using much more memory.</p>
+
+<p>If you want to enable mod_perl for your [% terms.Bugzilla %], we recommend
+ a minimum of 1.5GB of RAM, and for a site with heavy traffic, 4GB to 8GB.</p>
+
+<p>mod_perl brings total enterprise-level performance to
+ [% terms.Bugzilla %], allowing a single installation to efficiently and
+ effectively support a large number of concurrent users.</p>
+
+<p>If performance isn't that critical on your installation, you don't
+ have the memory, or you are running some other web server than
+ Apache, [% terms.Bugzilla %] still runs perfectly as a normal CGI
+ application, as well.</p>
+
+<h3><a name="v30_feat_sq"></a>Shared Saved Searches</h3>
+
+<p>Users can now choose to &quot;share&quot; their saved searches
+ with a certain group. That group will then be able to
+ &quot;subscribe&quot; to those searches, and have them appear
+ in their footer.</p>
+
+<p>If the sharer can &quot;bless&quot; the group he's sharing to,
+ (that is, if he can add users to that group), it's considered
+ that he's a manager of that group, and his queries show up
+ automatically in that group's footer (although they can
+ unsubscribe from any particular search, if they want.)</p>
+
+<p>In order to allow a user to share their queries, they also
+ have to be a member of the group specified in the
+ <code>querysharegroup</code> parameter.</p>
+
+<p>Users can control their shared and subscribed queries from
+ the &quot;Preferences&quot; screen.</p>
+
+<h3><a name="v30_feat_afn"></a>Attachments and Flags on New
+ [% terms.Bugs %]</h3>
+
+<p>You can now add an attachment while you are filing a new
+ [% terms.bug %].</p>
+
+<p>You can also set flags on the [% terms.bug %] and on attachments, while
+ filing a new [% terms.bug %].</p>
+
+<h3><a name="v30_feat_cr"></a>Custom Resolutions</h3>
+
+<p>You can now customize the list of resolutions available
+ in [% terms.Bugzilla %], including renaming the default resolutions.</p>
+
+<p>The resolutions <code>FIXED</code>, <code>DUPLICATE</code>
+ and <code>MOVED</code> have a special meaning to [% terms.Bugzilla %],
+ though, and cannot be renamed or deleted.</p>
+
+<h3><a name="v30_feat_ppp"></a>Per-Product Permissions</h3>
+
+<p>You can now grant users <kbd>editbugs</kbd> and <kbd>canconfirm</kbd>
+ for only certain products. You can also grant users <kbd>editcomponents</kbd>
+ on a product, which means they will be able to edit that product
+ including adding/removing components and other product-specific
+ controls.</p>
+
+<h3><a name="v30_feat_ui"></a>User Interface Improvements</h3>
+
+<p>There has been some work on the user interface for [% terms.Bugzilla %] 3.0,
+ including:</p>
+
+<ul>
+ <li>There is now navigation and a search box a the <em>top</em> of
+ each page, in addition to the bar at the bottom of the page.</li>
+ <li>A re-designed &quot;Format for Printing&quot; page for
+ [% terms.bugs %].</li>
+ <li>The layout of <kbd>show_bug.cgi</kbd> (the [% terms.bug %] editing
+ page) has been changed, and the attachment table has been redesigned.</li>
+</ul>
+
+<h3><a name="v30_feat_xml"></a>XML-RPC Interface</h3>
+
+<p>[% terms.Bugzilla %] now has a Web Services interface using the XML-RPC
+ protocol. It can be accessed by external applications by going
+ to the <kbd>xmlrpc.cgi</kbd> on your installation.</p>
+
+<p>Documentation can be found in the
+ <a href="[% Param('docs_urlbase') FILTER html %]api/">[% terms.Bugzilla %]
+ API Docs</a>, in the various <kbd>Bugzilla::WebService</kbd> modules.</p>
+
+<h3><a name="v30_feat_skin"></a>Skins</h3>
+
+<p>[% terms.Bugzilla %] can have multiple &quot;skins&quot; installed,
+ and users can pick between them. To write a skin, you just have to
+ write several CSS files. See the <a href="[% Param('docs_urlbase') FILTER html %]cust-skins.html">Custom
+ Skins Documentation</a> for more details.</p>
+
+<p>We currently don't have any alternate skins shipping with
+ [% terms.Bugzilla %]. If you write an alternate skin, please
+ let us know!</p>
+
+<h3><a name="v30_feat_sbu"></a>Unchangeable Fields Appear
+ Unchangeable</h3>
+
+<p>As long as you are logged in, when viewing [% terms.abug %], if you
+ cannot change a field, it will not look like you can change it. That
+ is, the value will just appear as plain text.</p>
+
+<h3><a name="v30_feat_et"></a>All Emails in Templates</h3>
+
+<p>All outbound emails are now controlled by the templating system.
+ What used to be the <code>passwordmail</code>, <code>whinemail</code>,
+ <code>newchangedmail</code> and <code>voteremovedmail</code>
+ parameters are now all templates in the <kbd>template/</kbd> directory.</p>
+
+<p>This means that it's now much easier to customize your outbound
+ emails, and it's also possible for localizers to have more
+ localized emails as part of their language packs, if they want.</p>
+
+<p>We also added a <code>mailfrom</code> parameter to let you set
+ who shows up in the <code>From</code> field on all emails that
+ [%+ terms.Bugzilla %] sends.</p>
+
+<h3><a name="v30_feat_df"></a>No More Double-Filed [% terms.Bugs %]</h3>
+
+<p>Users of [% terms.Bugzilla %] will sometimes accidentally submit
+ [% terms.abug %] twice, either by going back in their web browser,
+ or just by refreshing a page. In the past, this could file the same
+ [% terms.bug %] twice (or even three times) in a row, irritating
+ developers and confusing users.</p>
+
+<p>Now, if you try to submit [% terms.abug %] twice from the same screen
+ (by going back or by refreshing the page), [% terms.Bugzilla %] will warn
+ you about what you're doing, before it actually submits the duplicate
+ [%+ terms.bug %].</p>
+
+<h3><a name="v30_feat_cc"></a>Default CC List for Components</h3>
+
+<p>You can specify a list of users who will <em>always</em> be added to
+ the CC list of new [% terms.bugs %] in a component.</p>
+
+<h3><a name="v30_feat_emi"></a>File/Modify [% terms.Bugs %] By Email</h3>
+
+<p>You can now file or modify [% terms.bugs %] via email. Previous versions
+ of [% terms.Bugzilla %] included this feature only as an
+ unsupported add-on, but it is now an official interface to
+ [%+ terms.Bugzilla %].</p>
+
+<p>For more details see the <a href="[% Param('docs_urlbase') FILTER html %]api/email_in.html">documentation
+ for email_in.pl</a>.</p>
+
+<h3><a name="v30_feat_gw"></a>Users Who Get All [% terms.Bug %]
+ Notifications</h3>
+
+<p>There is now a parameter called <kbd>globalwatchers</kbd>. This
+ is a comma-separated list of [% terms.Bugzilla %] users who will
+ get all [% terms.bug %] notifications generated by [% terms.Bugzilla %].</p>
+
+<p>Group controls still apply, though, so users who can't see a [% terms.bug %]
+ still won't get notifications about that [% terms.bug %].</p>
+
+<h3><a name="v30_feat_utf8"></a>Improved UTF-8 Support</h3>
+
+<p>[% terms.Bugzilla %] users running MySQL should now have excellent
+ UTF-8 support if they turn on the <kbd>utf8</kbd> parameter. (New
+ installs have this parameter on by default.) [% terms.Bugzilla %]
+ now correctly supports searching and sorting in non-English languages,
+ including multi-bytes languages such as Chinese.</p>
+
+<h3><a name="v30_feat_upda"></a>Automatic Update Notification</h3>
+
+<p>If you belong to the <kbd>admin</kbd> group, you will be notified
+ when you log in if there is a new release of [% terms.Bugzilla %]
+ available to download.</p>
+
+<p>You can control these notifications by changing the
+ <kbd>upgrade_notification</kbd> parameter.</p>
+
+<h3><a name="v30_feat_welc"></a>Welcome Page for New Installs</h3>
+
+<p>When you log in for the first time on a brand-new [% terms.Bugzilla %]
+ installation, you will be presented with a page that describes
+ where you should go from here, and what parameters you should set.</p>
+
+<h3><a name="v30_feat_qs"></a>QuickSearch Plugin for IE7 and Firefox 2</h3>
+
+<p>Firefox 2 users and Internet Explorer 7 users will be presented
+ with the option to add [% terms.Bugzilla %] to their search bar.
+ This uses the
+ <a href="page.cgi?id=quicksearch.html">QuickSearch syntax</a>.</p>
+
+<h3><a name="v30_feat_other"></a>Other Enhancements and Changes</h3>
+
+<p>These are either minor enhancements, or enhancements that have
+ very short descriptions. Some of these are very useful, though!</p>
+
+<h4>Enhancements That Affect [% terms.Bugzilla %] Users</h4>
+
+<ul>
+ <li>In comments, quoted text (lines that start with <kbd>&gt;</kbd>)
+ will be a different color from normal text.</li>
+ <li>There is now a user preference that will add you to the CC list
+ of any [% terms.bug %] you modify. Note that it's <strong>on</strong>
+ by default.</li>
+ <li>[% terms.Bugs %] can now be filed with an initial state of
+ <kbd>ASSIGNED</kbd>, if you are in the <kbd>editbugs</kbd> group.</li>
+ <li>By default, comment fields will zoom large when you are typing in them,
+ and become small when you move out of them. You can disable this
+ in your user preferences.</li>
+ <li>You can hide obsolete attachments on [% terms.abug %] by clicking
+ &quot;Hide Obsolete&quot; at the bottom of the attachment table.</li>
+ <li>If a [% terms.bug %] has flags set, and you move it to a different
+ product that has flags with the same name, the flags will be
+ preserved.</li>
+ <li>You now can't request a flag to be set by somebody who can't set it
+ ([% terms.Bugzilla %] will throw an error if you try).</li>
+ <li>Many new headers have been added to outbound [% terms.Bugzilla %]
+ [%+ terms.bug %] emails: <code>X-Bugzilla-Status</code>,
+ <code>X-Bugzilla-Priority</code>, <code>X-Bugzilla-Assigned-To</code>,
+ <code>X-Bugzilla-Target-Milestone</code>, and
+ <code>X-Bugzilla-Changed-Fields</code>, <code>X-Bugzilla-Who</code>.
+ You can look at an email to get an idea of what they contain.</li>
+ <li>In addition to the old <code>X-Bugzilla-Reason</code> email header
+ which tells you why you got an email, if you got an email because
+ you were watching somebody, there is now an
+ <code>X-Bugzilla-Watch-Reason</code> header that tells you who you
+ were watching and what role they had.</li>
+ <li>If you hover your mouse over a full URL (like
+ <code>http://bugs.mycompany.com/show_bug.cgi?id=1212</code>) that
+ links to [% terms.abug %], you will see the title of the
+ [%+ terms.bug %]. Of course, this only works for [% terms.bugs %] in your
+ [%+ terms.Bugzilla %] installation.</li>
+ <li>If your installation has user watching enabled, you will now see
+ the users that you can remove from your watch-list as a multi-select
+ box, much like the current CC list. (Previously it was just a text
+ box.)</li>
+ <li>When a user creates their own account in [% terms.Bugzilla %], the
+ account is now not actually created until they verify their email
+ address by clicking on a link that is emailed to them.</li>
+ <li>You can change [% terms.abug %]'s resolution without reopening it.</li>
+ <li>When you view the dependency tree on [% terms.abug %], resolved
+ [%+ terms.bugs %] will be hidden by default. (In previous versions,
+ resolved [% terms.bugs %] were shown by default.)</li>
+ <li>When viewing [% terms.bug %] activity, fields that hold [% terms.bug %]
+ numbers (such as &quot;Blocks&quot;) will have the [% terms.bug %] numbers
+ displayed as links to those [% terms.bugs %].</li>
+ <li>When viewing the &quot;Keywords&quot; field in a [% terms.bug %] list,
+ it will be sorted alphabetically, so you can sanely sort a list on
+ that field.</li>
+ <li>In most places, the Version field is now sorted using a version-sort
+ (so 1.10 is greater than 1.2) instead of an alphabetical sort.</li>
+ <li>Options for flags will only appear if you can set them. So, for
+ example, if you can't grant <kbd>+</kbd> on a flag, that option
+ won't appear for you.</li>
+ <li>You can limit the product-related output of <kbd>config.cgi</kbd>
+ by specifying a <kbd>product=</kbd> URL argument, containing the name
+ of a product. You can specify the argument more than once for multiple
+ products.</li>
+ <li>You can now search the boolean charts on whether or not a comment
+ is private.</li>
+</ul>
+
+<h4>Enhancements For Administrators</h4>
+
+<ul>
+ <li>Administrators can now delete attachments, making them disappear
+ entirely from [% terms.Bugzilla %].</li>
+ <li><kbd>sanitycheck.cgi</kbd> can now only be accessed by users
+ in the <kbd>editcomponents</kbd> group.</li>
+ <li>The &quot;Field Values&quot; control panel can now only be accessed
+ by users in the <kbd>admin</kbd> group. (Previously it was accessible
+ to anybody in the <kbd>editcomponents</kbd> group.)</li>
+ <li>There is a new parameter <kbd>announcehtml</kbd>, that will allow
+ you to enter some HTML that will be displayed at the top of every
+ page, as an announcement.</li>
+ <li>The <kbd>loginnetmask</kbd> parameter now defaults to 0 for new
+ installations, meaning that as long as somebody has the right
+ login cookie, they can log in from any IP address. This makes
+ life a lot easier for dial-up users or other users whose IP
+ changes a lot. This could be done because the login cookie is now
+ very random, and thus secure.</li>
+ <li>Classifications now have sortkeys, so they can be sorted in an
+ order that isn't alphabetical.</li>
+ <li>Authentication now supports LDAP over SSL (LDAPS) or TLS (using
+ the STARTLS command) in addition to plain LDAP.</li>
+ <li>LDAP users can have their LDAP username be their email address,
+ instead of having the LDAP <kbd>mail</kbd> attribute be their
+ email address. You may wish to set the <kbd>emailsuffix</kbd>
+ parameter if you do this.</li>
+ <li>Administrators can now see what has changed in a user account,
+ when using the &quot;Users&quot; control panel.</li>
+ <li><code>REMIND</code> and <code>LATER</code> are no longer part
+ of the default list of resolutions. Upgrading installations will
+ not be affected--they will still have these resolutions.</li>
+ <li><kbd>editbugs</kbd> is now the default for the <kbd>timetrackinggroup</kbd>
+ parameter, meaning that time-tracking will be on by default in a new
+ installation.</li>
+</ul>
+
+<h2><a name="v30_issues"></a>Outstanding Issues</h2>
+
+<ul>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=370739">
+ [%- terms.Bug %] 370739</a>: There is a problem in Firefox 2.0 that
+ sometimes causes the [% terms.bug %] editing page to render incorrectly
+ after editing a [% terms.bug %].</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=69621">
+ [%- terms.Bug %] 69621</a>: If you rename or remove a keyword that is
+ in use on [% terms.bugs %], you will need to rebuild the "keyword cache"
+ by running <a href="sanitycheck.cgi">sanitycheck.cgi</a> and choosing
+ the option to rebuild the cache when it asks. Otherwise keywords may
+ not show up properly in search results.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=99215">
+ [%- terms.Bug %] 99215</a>: Flags are not protected by "mid-air
+ collision" detection. Nor are any attachment changes.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=89822">
+ [%- terms.Bug %] 89822</a>: When changing multiple [% terms.bugs %] at
+ the same time, there is no "mid-air collision" protection.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=276230">
+ [%- terms.Bug %] 276230</a>: The support for restricting access to
+ particular Categories of New Charts is not complete. You should treat
+ the 'chartgroup' Param as the only access mechanism available.
+
+ <p>However, charts migrated from Old Charts will be restricted to
+ the groups that are marked MANDATORY for the corresponding Product.
+ There is currently no way to change this restriction, and the
+ groupings will not be updated if the group configuration
+ for the Product changes.</p></li>
+</ul>
+
+<h2><a name="v30_upgrading"></a>How to Upgrade From An Older Version</h2>
+
+<h3>Notes For Upgraders</h3>
+
+<ul>
+ <li>If you upgrade by CVS, there are several .cvsignore files
+ that are now in CVS instead of being locally created by
+ <kbd>checksetup.pl</kbd>. This means that you will have to
+ delete those files when CVS tells you there's a conflict, and
+ then run <kbd>cvs update</kbd> again.</li>
+ <li>In this version of [% terms.Bugzilla %], the Summary field
+ is now limited to 255 characters. When you upgrade, any Summary
+ longer than that will be truncated, and the old summary will be
+ preserved in a comment.</li>
+ <li>If you have the <kbd>utf8</kbd> parameter turned on, at some
+ point you will have to convert your database. <kbd>checksetup.pl</kbd>
+ will tell you when this is, and it will give you certain instructions
+ at that time, that you have to follow before you can complete
+ the upgrade. Don't do the conversion yourself manually--follow
+ the instructions of checksetup.pl.</li>
+ <li>You should also read the Outstanding Issues sections of
+ <a href="#v30_previous">older release notes</a> if you are upgrading
+ from a version lower than 2.22.</li>
+</ul>
+
+<h3>Steps For Upgrading</h3>
+
+<ol>
+ <li>Read these entire Release Notes, particularly the &quot;Notes for
+ Upgraders&quot; section above.</li>
+
+ <li>View the <a href="sanitycheck.cgi">Sanity Check</a> page on your
+ installation before upgrading. Attempt to fix all warnings that
+ the page produces before you go any further, or you may experience
+ problems during your upgrade.</li>
+
+ <li>Make a backup of the [% terms.Bugzilla %] database before you upgrade,
+ perhaps by using <kbd>mysqldump</kbd>. <strong>THIS IS VERY
+ IMPORTANT</strong>. If anything goes wrong during the upgrade, your
+ installation can be corrupted beyond recovery. Having a backup keeps you
+ safe.
+
+ <p>Example: <kbd>mysqldump -u root -p [% terms.bugs %] &gt;
+ [% terms.bugs %]-db.sql</kbd></p></li>
+
+ <li>Replace the files in your installation with the new version of
+ [% terms.Bugzilla %], or you can try to use CVS to upgrade.
+
+ <p>You can also use a brand-new [% terms.Bugzilla %] directory, as long
+ as you copy over the old <kbd>data/</kbd> directory and the
+ <kbd>localconfig</kbd> file to the new installation.</p></li>
+
+ <li>Now follow the standard
+ <a href="[% Param('docs_urlbase') FILTER html %]installing-bugzilla.html">
+ [%- terms.Bugzilla %] installation process</a>.</li>
+
+ <li>Run <kbd>checksetup.pl</kbd> after you install the new version.</li>
+
+ <li>View the <a href="sanitycheck.cgi">Sanity Check</a> page again after
+ you run <kbd>checksetup.pl</kbd>.</li>
+
+ <li>It is recommended that, if possible, you fix any problems you find
+ immediately. Failure to do this may mean that [% terms.Bugzilla %] will
+ not work correctly. Be aware that if the sanity check page contains more
+ errors after an upgrade, it doesn't necessarily mean there are more
+ errors in your database than there were before, as additional tests
+ are added to the sanity check over time, and it is possible that those
+ errors weren't being checked for in the old version.</li>
+</ol>
+
+<h2><a name="v30_code_changes"></a>Code Changes Which May Affect
+ Customizations</h2>
+
+<ul>
+ <li><a href="#v30_code_loc"><strong>Packagers:</strong> Location
+ Variables Have Moved</a></li>
+ <li><a href="#v30_code_hooks">Hooks!</a></li>
+ <li><a href="#v30_code_api">API Documentation</a></li>
+ <li><a href="#v30_code_globals">Elimination of globals.pl</a></li>
+ <li><a href="#v30_code_scope">Cleaned Up Variable Scoping Issues</a></li>
+ <li><a href="#v30_code_sql">No More SendSQL</a></li>
+ <li><a href="#v30_code_auth">Auth Re-write</a></li>
+ <li><a href="#v30_code_obj">Bugzilla::Object</a></li>
+ <li><a href="#v30_code_req">Bugzilla-&gt;request_cache</a></li>
+ <li><a href="#v30_code_other">Other Changes</a></li>
+</ul>
+
+<h3><a name="v30_code_loc"></a><strong>Packagers:</strong> Location
+ Variables Have Moved</h3>
+
+<p>In previous versions of [% terms.Bugzilla %], <kbd>Bugzilla::Config</kbd>
+ held all the paths for different things, such as the path to localconfig
+ and the path to the <kbd>data/</kbd> directory.</p>
+
+<p>Now, all of this data is stored in a subroutine,
+ <kbd>Bugzilla::Constants::bz_locations</kbd>.</p>
+
+<p>Also, note that for mod_perl, <kbd>bz_locations</kbd> must return
+ <em>absolute</em> (not relative) paths. There is already code in that
+ subroutine to help you with this.</p>
+
+<h3><a name="v30_code_hooks"></a>Hooks!</h3>
+
+<p>[% terms.Bugzilla %] now supports a code hook mechanism. See the
+ documentation for
+ <a href="[% Param('docs_urlbase') FILTER html %]api/Bugzilla/Hook.html">Bugzilla::Hook</a>
+ for more details.</p>
+
+<p>This gives [% terms.Bugzilla %] very advanced plugin support. You can
+ hook templates, hook code, add new parameters, and use the XML-RPC
+ interface. So we'd like to see some [% terms.Bugzilla %] plugins
+ written! Let us know on the <a href="http://bugzilla.org/cgi-bin/mj_wwwusr?func=lists-long-full&amp;extra=developers">developers&#64;bugzilla.org</a>
+ mailing list if you write a plugin.</p>
+
+<p>If you need more hooks, please
+ <a href="http://www.bugzilla.org/developers/reporting_bugs.html">File a
+ bug</a>!</p>
+
+<h3><a name="v30_code_api"></a>API Documentation</h3>
+
+<p>[% terms.Bugzilla %] now ships with all of its perldoc built
+ as HTML. Go ahead and read the
+ <a href="[% Param('docs_urlbase') FILTER html %]api/">API Documentation</a>
+ for all of the [% terms.Bugzilla %] modules now! Even scripts like
+ <kbd>checksetup.pl</kbd> have HTML documentation.</p>
+
+<h3><a name="v30_code_globals"></a>Elimination of globals.pl</h3>
+
+<p>The old file <kbd>globals.pl</kbd> has been eliminated.
+ Its code is now in various modules. Each function went to the module
+ that was appropriate for it.</p>
+
+<p>Usually we filed [% terms.abug %] in
+ <a href="https://bugzilla.mozilla.org">bugzilla.mozilla.org</a> for
+ each function we moved. You can search there for the old name of
+ the function, and that should get you the information about what
+ it's called now and where it lives.</p>
+
+<h3><a name="v30_code_scope"></a>Cleaned Up Variable Scoping Issues</h3>
+
+<p>In normal perl, you can have code like this:</p>
+<pre>my $var = 0;
+sub y { $var++ }</pre>
+
+<p>However, under mod_perl that doesn't work. So variables are no
+ longer &quot;shared&quot; with subroutines--instead all variables
+ that a subroutine needs must be declared inside the subroutine itself.</p>
+
+<h3><a name="v30_code_sql"></a>No More SendSQL</h3>
+
+<p>The old <kbd>SendSQL</kbd> function and all of its companions are
+ <strong>gone</strong>. Instead, we now use DBI for all database
+ interaction.</p>
+
+<p>For more information about how to use
+ <a href="http://search.cpan.org/perldoc?DBI">DBI</a> with
+ [% terms.Bugzilla %], see the
+ <a href="http://www.bugzilla.org/docs/developer.html#sql-sendreceive">Developer's
+ Guide Section About DBI</a></p>
+
+<h3><a name="v30_code_auth"></a>Auth Re-write</h3>
+
+<p>The <kbd>Bugzilla::Auth</kbd> family of modules have been completely
+ re-written. For details on how the new structure of authentication,
+ read the
+ <a href="[% Param('docs_urlbase') FILTER html %]api/Bugzilla/Auth.html">Bugzilla::Auth
+ API docs</a>.</p>
+
+<p>It should be very easy to write new authentication plugins, now.</p>
+
+<h3><a name="v30_code_obj"></a>Bugzilla::Object</h3>
+
+<p>There is a new base class for most of our objects,
+ <a href="[% Param('docs_urlbase') FILTER html %]api/Bugzilla/Object.html">Bugzilla::Object</a>.
+ It makes it really easy to create new objects based on things that are
+ in the database.</p>
+
+<h3><a name="v30_code_req"></a>Bugzilla-&gt;request-cache</h3>
+
+<p><kbd>Bugzilla.pm</kbd> used to cache things like the database
+ connection in package-global variables (like <kbd>$_dbh</kbd>).
+ That doesn't work in mod_perl, so instead now there's a hash
+ that can be accessed through <code>Bugzilla-&gt;request_cache</code>
+ to store things for the rest of the current page request.</p>
+
+<p>You shouldn't access <code>Bugzilla-&gt;request_cache</code> directly,
+ but you should use it inside of <kbd>Bugzilla.pm</kbd> if you modify
+ that. The only time you should be accessing it directly is if you need
+ to reset one of the caches. Hash keys are always named after the function
+ that they cache, so to reset the template object, you'd do:
+ <code>delete Bugzilla-&gt;request_cache-&gt;{template};</code>.</p>
+
+<h3><a name="v30_code_other"></a>Other Changes</h3>
+
+<ul>
+ <li><code>checksetup.pl</code> has been completely re-written, and most
+ of its code moved into modules in the <kbd>Bugzilla::Install</kbd>
+ namespace. See the
+ <a href="[% Param('docs_urlbase') FILTER html %]api/checksetup.html">checksetup
+ documentation</a> and <a href="https://bugzilla.mozilla.org/showdependencytree.cgi?id=277502&amp;hide_resolved=0">[% terms.Bugzilla %]
+ [%+ terms.bug %] 277502</a> for details.</li>
+ <li>Instead of <kbd>UserInGroup()</kbd>, all of [% terms.Bugzilla %] now
+ uses <kbd>Bugzilla-&gt;user-&gt;in_group</kbd></li>
+ <li>mod_perl doesn't like dependency loops in modules, so we now have
+ a test for that detects dependency loops in modules when you run
+ <kbd>runtests.pl</kbd>.</li>
+ <li><kbd>globals.pl</kbd> used to modify the environment variables,
+ like <kbd>PATH</kbd>. That now happens in <kbd>Bugzilla.pm</kbd>.</li>
+ <li>Templates can now link to the documentation more easily.
+ See the <kbd>global/code-error.html.tmpl</kbd> and
+ <kbd>global/user-error.html.tmpl</kbd> templates for examples.
+ (Search for &quot;docslinks.&quot;)</li>
+ <li>Parameters are accessed through <kbd>Bugzilla-&gt;params</kbd>
+ instead of using the <kbd>Param()</kbd> function, now.</li>
+ <li>The variables from the <kbd>localconfig</kbd> file are accessed
+ through the <code>Bugzilla-&gt;localconfig</code> hash instead of through
+ <kbd>Bugzilla::Config</kbd>.</li>
+ <li><kbd>Bugzilla::BugMail::MessageToMTA()</kbd> has moved into its
+ own module, along with other mail-handling code, called
+ <kbd>Bugzilla::Mailer</kbd></li>
+ <li>The <kbd>CheckCanChangeField()</kbd> subroutine in
+ <kbd>process_bug.cgi</kbd> has been moved to <kbd>Bugzilla::Bug</kbd>,
+ and is now a method of a [% terms.bug %] object.</li>
+ <li>The code that used to be in the <kbd>global/banner.html.tmpl</kbd>
+ template is now in <kbd>global/header.html.tmpl</kbd>. The banner
+ still exists, but the file is empty.</li>
+</ul>
+
+<h2><a name="v30_previous"></a>Release Notes For Previous Versions</h2>
+
+<p>Release notes for versions of [% terms.Bugzilla %] for versions
+ prior to 3.0 are only available in text format:
+ <a href="docs/rel_notes.txt">Release Notes for [% terms.Bugzilla %] 2.22
+ and Earlier</a>.</p>
+
+[% INCLUDE global/footer.html.tmpl %]
+
+[% BLOCK db_req %]
+ [% SET m = DB_MODULE.$db %]
+ <h3><a name="v30_req_[% db FILTER html %]"></a>For [% m.name FILTER html %]
+ Users</h3>
+
+ <ul>
+ <li>[% m.name FILTER html %] v[% m.db_version FILTER html %]</li>
+ <li><strong>perl module:</strong>
+ [%+ m.dbd.module FILTER html %] v[% m.dbd.version FILTER html %]</li>
+ </ul>
+[% END %]
+
+
+[% BLOCK req_table %]
+ <table class="req_table" border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <th>Module</th> <th>Version</th>
+ [% IF include_feature %]
+ <th>Enables Feature</th>
+ [% END %]
+ </tr>
+ [% FOREACH req = reqs %]
+ <tr>
+ <td [% 'class="req_new"' IF new.contains(req.package) %]>
+ [%- req.module FILTER html %]</td>
+ <td [% 'class="req_new"' IF updated.contains(req.package)
+ OR new.contains(req.package) %]>
+ [%- IF req.version == 0 %]
+ (Any)
+ [% ELSE %]
+ [%- req.version FILTER html %]
+ [% END %]
+ </td>
+ [% IF include_feature %]
+ <td>[% req.feature FILTER html %]</td>
+ [% END %]
+ </tr>
+ [% END %]
+</table>
+[% END %]