]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 117515 - describekeywords.cgi templatisation.
authorgerv%gerv.net <>
Wed, 20 Feb 2002 07:32:04 +0000 (07:32 +0000)
committergerv%gerv.net <>
Wed, 20 Feb 2002 07:32:04 +0000 (07:32 +0000)
describekeywords.cgi
template/default/info/describe-keywords.html.tmpl [new file with mode: 0644]

index 3475fb6ebdc4ecbb746fca4adfbb5290eb1d13d0..d588100c617919a1153aff600ab9b4d20e7b613a 100755 (executable)
 # 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 (file)
index 0000000..7e77423
--- /dev/null
@@ -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 %]