--- /dev/null
+#!/usr/bonsaitools/bin/perl -w
+# -*- Mode: perl; indent-tabs-mode: nil -*-
+#
+# The contents of this file are subject to the Mozilla Public License
+# Version 1.0 (the "License"); you may not use this file except in
+# compliance with the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+# License for the specific language governing rights and limitations
+# under the License.
+#
+# The Original Code is the Bugzilla Bug Tracking System.
+#
+# The Initial Developer of the Original Code is Netscape Communications
+# Corporation. Portions created by Netscape are Copyright (C) 1998
+# Netscape Communications Corporation. All Rights Reserved.
+#
+# Contributor(s): Terry Weissman <terry@mozilla.org>
+
+use vars %::FORM;
+
+use diagnostics;
+use strict;
+
+require "CGI.pl";
+
+ConnectToDatabase();
+GetVersionTable();
+
+print "Content-type: text/html\n\n";
+
+my $product = $::FORM{'product'};
+if (!defined $product || lsearch(\@::legal_product, $product) < 0) {
+
+ PutHeader("Bugzilla component description");
+ print "
+<FORM>
+Please specify the product whose components you want described.
+<P>
+Product: <SELECT NAME=product>
+";
+ print make_options(\@::legal_product);
+ print "
+</SELECT>
+<P>
+<INPUT TYPE=\"submit\" VALUE=\"Submit\">
+</FORM>
+";
+ exit;
+}
+
+
+PutHeader("Bugzilla component description", "Bugzilla component description",
+ $product);
+
+print "
+<TABLE>
+<tr>
+<th align=left>Component</th>
+<th align=left>Default owner</th>
+";
+
+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));
+
+while (MoreSQLData()) {
+ my @row = FetchSQLData();
+ my ($component, $initialowner, $initialqacontact, $description) = (@row);
+
+ print qq|
+<tr><td colspan=$cols><hr></td></tr>
+<tr><td rowspan=2>$component</td>
+<td><a href="mailto:$initialowner">$initialowner</a></td>
+|;
+ if ($useqacontact) {
+ print qq|
+<td><a href="mailto:$initialqacontact">$initialqacontact</a></td>
+|;
+ }
+ print "</tr><tr><td colspan=$colbut1>$description</td></tr>\n";
+}
+
+print "<tr><td colspan=$cols><hr></td></tr></table>\n";
value tinytext,
program tinytext,
initialowner tinytext not null, # Should arguably be a mediumint!
-initialqacontact tinytext not null # Should arguably be a mediumint!
+initialqacontact tinytext not null, # Should arguably be a mediumint!
+description mediumtext not null
);
insert into components (value, program, initialowner, initialqacontact) values ("LDAP Tools", "Directory", "chuckb@netscape.com", "");
-insert into components (value, program, initialowner, initialqacontact) values ("Networking", "MailNews", "mscott@netscape.com", "lchiang@netscape.com");
-insert into components (value, program, initialowner, initialqacontact) values ("Database", "MailNews", "davidmc@netscape.com", "lchiang@netscape.com");
-insert into components (value, program, initialowner, initialqacontact) values ("MIME", "MailNews", "rhp@netscape.com", "lchiang@netscape.com");
-insert into components (value, program, initialowner, initialqacontact) values ("Security", "MailNews", "jefft@netscape.com", "lchiang@netscape.com");
-insert into components (value, program, initialowner, initialqacontact) values ("Composition", "MailNews", "ducarroz@netscape.com", "lchiang@netscape.com");
-insert into components (value, program, initialowner, initialqacontact) values ("Address Book", "MailNews", "putterman@netscape.com", "lchiang@netscape.com");
-insert into components (value, program, initialowner, initialqacontact) values ("Front End", "MailNews", "phil@netscape.com", "lchiang@netscape.com");
-insert into components (value, program, initialowner, initialqacontact) values ("Back End", "MailNews", "phil@netscape.com", "lchiang@netscape.com");
+insert into components (value, program, initialowner, initialqacontact, description) values ("Networking", "MailNews", "mscott@netscape.com", "lchiang@netscape.com", "Integration with libnet, protocol support for POP3, IMAP4, SMTP, NNTP and LDAP");
+insert into components (value, program, initialowner, initialqacontact, description) values ("Database", "MailNews", "davidmc@netscape.com", "lchiang@netscape.com", "Persistent storage of address books and mail/news summary files");
+insert into components (value, program, initialowner, initialqacontact, description) values ("MIME", "MailNews", "rhp@netscape.com", "lchiang@netscape.com", "Parsing the MIME structure");
+insert into components (value, program, initialowner, initialqacontact, description) values ("Security", "MailNews", "jefft@netscape.com", "lchiang@netscape.com", "SSL, S/MIME for mail");
+insert into components (value, program, initialowner, initialqacontact, description) values ("Composition", "MailNews", "ducarroz@netscape.com", "lchiang@netscape.com", "Front-end and back-end of message composition and sending");
+insert into components (value, program, initialowner, initialqacontact, description) values ("Address Book", "MailNews", "putterman@netscape.com", "lchiang@netscape.com", "Names, email addresses, phone numbers, etc.");
+insert into components (value, program, initialowner, initialqacontact, description) values ("Front End", "MailNews", "phil@netscape.com", "lchiang@netscape.com", "Three pane view, sidebar contents, toolbars, dialogs, etc.");
+insert into components (value, program, initialowner, initialqacontact, description) values ("Back End", "MailNews", "phil@netscape.com", "lchiang@netscape.com", "RDF data sources and application logic for local mail, news, IMAP and LDAP");
insert into components (value, program, initialowner, initialqacontact) values ("Internationalization", "MailNews", "nhotta@netscape.com", "momoi@netscape.com");
insert into components (value, program, initialowner, initialqacontact) values ("Localization", "MailNews", "rchen@netscape.com", "momoi@netscape.com");
insert into components (value, program, initialowner, initialqacontact) values ("Localization", "NGLayout", "rchen@netscape.com", "teruko@netscape.com");
-insert into components (value, program, initialowner, initialqacontact) values ("Bonsai", "Webtools", "terry@mozilla.org", "");
-insert into components (value, program, initialowner, initialqacontact) values ("Bugzilla", "Webtools", "terry@mozilla.org", "");
-insert into components (value, program, initialowner, initialqacontact) values ("Despot", "Webtools", "terry@mozilla.org", "");
-insert into components (value, program, initialowner, initialqacontact) values ("LXR", "Webtools", "endico@mozilla.org", "");
-insert into components (value, program, initialowner, initialqacontact) values ("Mozbot", "Webtools", "terry@netscape.com", "");
-insert into components (value, program, initialowner, initialqacontact) values ("Tinderbox", "Webtools", "terry@mozilla.org", "");
+insert into components (value, program, initialowner, initialqacontact, description) values ("Bonsai", "Webtools", "terry@mozilla.org", "", 'Web based <a href="http://www.mozilla.org/bonsai.html">Tree control system</a> for watching the up-to-the-minute goings-on in a CVS repository');
+insert into components (value, program, initialowner, initialqacontact, description) values ("Bugzilla", "Webtools", "terry@mozilla.org", "", "Use this component to report bugs in the bug system itself");
+insert into components (value, program, initialowner, initialqacontact, description) values ("Despot", "Webtools", "terry@mozilla.org", "", "mozilla.org's <a href=http://cvs-mirror.mozilla.org/webtools/despot.cgi>account management</a> system");
+insert into components (value, program, initialowner, initialqacontact, description) values ("LXR", "Webtools", "endico@mozilla.org", "", 'Source code <a href="http://cvs-mirror.mozilla.org/webtools/lxr/">cross reference</a> system');
+insert into components (value, program, initialowner, initialqacontact, description) values ("Mozbot", "Webtools", "terry@mozilla.org", "", 'IRC robot that watches tinderbox and other things');
+insert into components (value, program, initialowner, initialqacontact, description) values ("Tinderbox", "Webtools", "terry@mozilla.org", "", 'Tree-watching system to monitor <a href="http://www.mozilla.org/tinderbox.html">continuous builds</a> that we run on multiple platforms.');
select * from components;