diff options
-rwxr-xr-x | describekeywords.cgi | 75 | ||||
-rw-r--r-- | template/default/info/describe-keywords.html.tmpl | 72 |
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 %] |