summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xdescribekeywords.cgi75
-rw-r--r--template/default/info/describe-keywords.html.tmpl72
2 files changed, 93 insertions, 54 deletions
diff --git a/describekeywords.cgi b/describekeywords.cgi
index 3475fb6eb..d588100c6 100755
--- a/describekeywords.cgi
+++ b/describekeywords.cgi
@@ -19,74 +19,41 @@
# Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
+# Contributor(s): Gervase Markham <gerv@gerv.net>
use diagnostics;
use strict;
-
-use lib qw(.);
+use lib ".";
require "CGI.pl";
-ConnectToDatabase();
-
-print "Content-type: text/html\n\n";
+# Use the global template variables.
+use vars qw($vars $template);
-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>
-};
+ConnectToDatabase();
-print $tableheader;
-my $line_count = 0;
-my $max_table_size = 50;
+quietly_check_login();
SendSQL("SELECT keyworddefs.name, keyworddefs.description,
- COUNT(keywords.bug_id), keywords.bug_id
+ COUNT(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>
-};
-}
+my @keywords;
-print "</TABLE><P>\n";
-
-quietly_check_login();
-
-if (UserInGroup("editkeywords")) {
- print "<p><a href=editkeywords.cgi>Edit keywords</a><p>\n";
+while (MoreSQLData()) {
+ my ($name, $description, $bugs) = FetchSQLData();
+
+ push (@keywords, { name => $name,
+ description => $description,
+ bugcount => $bugs });
}
+
+$vars->{'keywords'} = \@keywords;
+$vars->{'caneditkeywords'} = UserInGroup("editkeywords");
-PutFooter();
+print "Content-type: text/html\n\n";
+$template->process("info/describe-keywords.html.tmpl", $vars)
+ || DisplayError("Template process failed: " . $template->error())
+ && exit;
diff --git a/template/default/info/describe-keywords.html.tmpl b/template/default/info/describe-keywords.html.tmpl
new file mode 100644
index 000000000..7e7742334
--- /dev/null
+++ b/template/default/info/describe-keywords.html.tmpl
@@ -0,0 +1,72 @@
+[%# The contents of this file are subject to the Mozilla Public
+ # License Version 1.1 (the "License"); you may not use this file
+ # except in compliance with the License. You may obtain a copy of
+ # the License at http://www.mozilla.org/MPL/
+ #
+ # Software distributed under the License is distributed on an "AS
+ # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ # implied. See the License for the specific language governing
+ # rights and limitations under the License.
+ #
+ # The Original Code is the Bugzilla Bug Tracking System.
+ #
+ # The Initial Developer of the Original Code is Netscape Communications
+ # Corporation. Portions created by Netscape are
+ # Copyright (C) 1998 Netscape Communications Corporation. All
+ # Rights Reserved.
+ #
+ # Contributor(s): Gervase Markham <gerv@gerv.net>
+ #%]
+
+[%# INTERFACE:
+ # keywords: array of hashes. May be empty. Each has has three members:
+ # name: the name of the keyword
+ # description: keyword description. May be HTML.
+ # bugcount: number of bugs with that keyword
+ # caneditkeywords: boolean. True if this user can edit keywords
+ %]
+
+[% INCLUDE global/header
+ title = "Bugzilla Keyword Descriptions"
+%]
+
+[% FOREACH keyword = keywords %]
+ [% IF loop.index % 50 == 0 %]
+ [% IF loop.index != 0 %]
+ </table>
+ [% END %]
+
+ <table border="1" cellpadding="4" cellspacing="0">
+ <tr bgcolor="#6666FF">
+ <th align="left">Name</th>
+ <th align="left">Description</th>
+ <th align="left">Bugs</th>
+ </tr>
+ [% END %]
+
+ <tr>
+ <th>
+ <a name="[% keyword.name FILTER html %]">
+ [% keyword.name FILTER html %]</a>
+ </th>
+ <td>[% keyword.description %]</td>
+ <td align="right">
+ [% IF keyword.bugcount > 0 %]
+ <A HREF="buglist.cgi?keywords=[% keyword.name FILTER uri %]">
+ [% keyword.bugcount %]</a>
+ [% ELSE %]
+ none
+ [% END %]
+ </td>
+ </tr>
+[% END %]
+
+</table>
+
+[% IF caneditkeywords %]
+ <p>
+ <a href="editkeywords.cgi">Edit keywords</a>.
+ </p>
+[% END %]
+
+[% INCLUDE global/footer %]