diff --git a/webtools/bugzilla/describekeywords.cgi b/webtools/bugzilla/describekeywords.cgi index 3475fb6ebdc4..d588100c6179 100755 --- a/webtools/bugzilla/describekeywords.cgi +++ b/webtools/bugzilla/describekeywords.cgi @@ -19,74 +19,41 @@ # Rights Reserved. # # Contributor(s): Terry Weissman +# Contributor(s): Gervase Markham use diagnostics; use strict; - -use lib qw(.); +use lib "."; 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{ - - - - - - -}; - -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"); +my @keywords; + 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{$bugs}; - } else { - $bugs = "none"; - } - if ($line_count == $max_table_size) { - print "
NameDescriptionBugs
\n$tableheader"; - $line_count = 0; - } - $line_count++; - print qq{ - -$name -$description -$bugs - -}; + my ($name, $description, $bugs) = FetchSQLData(); + + push (@keywords, { name => $name, + description => $description, + bugcount => $bugs }); } + +$vars->{'keywords'} = \@keywords; +$vars->{'caneditkeywords'} = UserInGroup("editkeywords"); -print "

\n"; - -quietly_check_login(); - -if (UserInGroup("editkeywords")) { - print "

Edit keywords

\n"; -} - -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/webtools/bugzilla/template/default/info/describe-keywords.html.tmpl b/webtools/bugzilla/template/default/info/describe-keywords.html.tmpl new file mode 100644 index 000000000000..7e77423349ac --- /dev/null +++ b/webtools/bugzilla/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 + #%] + +[%# 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 %] + + [% END %] + + + + + + + + [% END %] + + + + + + +[% END %] + +
NameDescriptionBugs
+ + [% keyword.name FILTER html %] + [% keyword.description %] + [% IF keyword.bugcount > 0 %] + + [% keyword.bugcount %] + [% ELSE %] + none + [% END %] +
+ +[% IF caneditkeywords %] +

+ Edit keywords. +

+[% END %] + +[% INCLUDE global/footer %]