Bug 117515 - describekeywords.cgi templatisation.

This commit is contained in:
gerv%gerv.net 2002-02-19 23:32:07 +00:00
Родитель b1d1b04044
Коммит 264ee8e711
2 изменённых файлов: 93 добавлений и 54 удалений

Просмотреть файл

@ -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";
# 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{
<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>
};
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{<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 ($name, $description, $bugs) = FetchSQLData();
push (@keywords, { name => $name,
description => $description,
bugcount => $bugs });
}
$vars->{'keywords'} = \@keywords;
$vars->{'caneditkeywords'} = UserInGroup("editkeywords");
print "</TABLE><P>\n";
quietly_check_login();
if (UserInGroup("editkeywords")) {
print "<p><a href=editkeywords.cgi>Edit keywords</a><p>\n";
}
PutFooter();
print "Content-type: text/html\n\n";
$template->process("info/describe-keywords.html.tmpl", $vars)
|| DisplayError("Template process failed: " . $template->error())
&& exit;

Просмотреть файл

@ -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 %]