summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xeditproducts.cgi44
-rw-r--r--template/en/default/admin/products/footer.html.tmpl8
-rw-r--r--template/en/default/admin/products/list-classifications.html.tmpl72
3 files changed, 94 insertions, 30 deletions
diff --git a/editproducts.cgi b/editproducts.cgi
index 823ec92c2..0d70fc191 100755
--- a/editproducts.cgi
+++ b/editproducts.cgi
@@ -290,39 +290,33 @@ if (Param('useclassification') && (defined $classification)) {
}
#
-# product = '' -> Show nice list of products
+# product = '' -> Show nice list of classifications (if
+# classifications enabled)
#
if (Param('useclassification')) {
unless ($classification) {
- PutHeader("Select classification");
- SendSQL("SELECT classifications.name, classifications.description,
- COUNT(classification_id) AS total
+ my $dbh = Bugzilla->dbh;
+
+ my $query =
+ "SELECT classifications.name, classifications.description,
+ COUNT(classification_id) AS product_count
FROM classifications
LEFT JOIN products
- ON classifications.id = products.classification_id " .
- $dbh->sql_group_by('classifications.id',
- 'classifications.name,
- classifications.description') . "
- ORDER BY name");
- print "<TABLE BORDER=1 CELLPADDING=4 CELLSPACING=0><TR BGCOLOR=\"#6666FF\">\n";
- print " <TH ALIGN=\"left\">Edit products of ...</TH>\n";
- print " <TH ALIGN=\"left\">Description</TH>\n";
- print " <TH ALIGN=\"left\">Total</TH>\n";
- print "</TR>";
- while ( MoreSQLData() ) {
- my ($classification, $description, $count) = FetchSQLData();
- $description ||= "<FONT COLOR=\"red\">missing</FONT>";
- print "<TR>\n";
- print " <TD VALIGN=\"top\"><A HREF=\"editproducts.cgi?classification=",url_quote($classification),"\"><B>$classification</B></A></TD>\n";
- print " <TD VALIGN=\"top\">$description</TD>\n";
- $count ||= "none";
- print " <TD VALIGN=\"top\">$count</TD>\n";
- }
- print "</TR></TABLE>\n";
+ ON classifications.id = products.classification_id " .
+ $dbh->sql_group_by('classifications.id',
+ 'classifications.name,
+ classifications.description') . "
+ ORDER BY name";
+
+ $vars->{'classifications'} = $dbh->selectall_arrayref($query,
+ {'Slice' => {}});
+
+ $template->process("admin/products/list-classifications.html.tmpl",
+ $vars)
+ || ThrowTemplateError($template->error());
- PutTrailer();
exit;
}
}
diff --git a/template/en/default/admin/products/footer.html.tmpl b/template/en/default/admin/products/footer.html.tmpl
index 0276437f3..ecf23951f 100644
--- a/template/en/default/admin/products/footer.html.tmpl
+++ b/template/en/default/admin/products/footer.html.tmpl
@@ -43,11 +43,9 @@
[% UNLESS no_add_product_link %]
<a title="Add a product"
- href="editproducts.cgi?action=add">Add</a> a product
-
-
- [%# Strictly speaking, we should not have to check for a
- classification if they are enabled, but I'm just being paranoid %]
+ href="editproducts.cgi?action=add">Add</a> a product[% -%]
+[%# Strictly speaking, we should not have to check for a
+ classification if they are enabled, but I'm just being paranoid %]
[% IF Param('useclassification') && classification %]
(<a title="Add a product to classification '
[%- classification FILTER html %]'"
diff --git a/template/en/default/admin/products/list-classifications.html.tmpl b/template/en/default/admin/products/list-classifications.html.tmpl
new file mode 100644
index 000000000..7a30bcd66
--- /dev/null
+++ b/template/en/default/admin/products/list-classifications.html.tmpl
@@ -0,0 +1,72 @@
+[%# 1.0@bugzilla.org %]
+[%# 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.
+ #
+ # Contributor(s): Gavin Shelley <bugzilla@chimpychompy.org>
+ #%]
+
+[%# INTERFACE:
+ # classifications: array of hashes having the following properties:
+ # - name: string; The name of the classification
+ # - description: string; The classification description (html allowed)
+ # - product_count: number; The number of products in this classification
+ #
+ #%]
+
+[% PROCESS global/variables.none.tmpl %]
+
+[% PROCESS global/header.html.tmpl
+ title = "Select Classification"
+%]
+
+[% edit_contentlink = BLOCK %]
+ editproducts.cgi?classification=%%name%%
+[% END %]
+[% add_contentlink = BLOCK %]
+ editproducts.cgi?action=add&amp;classification=%%name%%
+[% END %]
+
+[% columns = [
+ {
+ name => "name"
+ heading => "Edit products of..."
+ contentlink => edit_contentlink
+ },
+ {
+ name => "description"
+ heading => "Description"
+ allow_html_content => 1
+ },
+ {
+ name => "product_count"
+ align => "right"
+ heading => "Product Count"
+ },
+ {
+ heading => "Action..."
+ content => "Add product"
+ contentlink => add_contentlink
+ },
+ ]
+%]
+
+[% PROCESS admin/table.html.tmpl
+ columns = columns
+ data = classifications
+%]
+
+<p>
+
+[%# No need for the standard edit products footer, as we have an 'add'
+ link in the table %]
+
+[% PROCESS global/footer.html.tmpl %]