]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 244265: Abstract out the typical admin page table to a separate template. r=vladd...
authorjouni%heikniemi.net <>
Mon, 12 Jul 2004 12:06:30 +0000 (12:06 +0000)
committerjouni%heikniemi.net <>
Mon, 12 Jul 2004 12:06:30 +0000 (12:06 +0000)
template/en/default/admin/keywords/list.html.tmpl
template/en/default/admin/table.html.tmpl [new file with mode: 0644]
template/en/default/filterexceptions.pl

index d73e529e308816d33cadafafb35ca04247845a4e..fbfc921429e57861ab2c1d65d6052b01eaaea52e 100755 (executable)
   #
   # Contributor(s): Terry Weissman <terry@mozilla.org>
   #                 Vlad Dascalu <jocuri@softhome.net>
+  #                 Jouni Heikniemi <jouni@heikniemi.net>
   #%]
 
 [%# INTERFACE:
-  # max_table_size: number. Determines the maximum number of
-  #                 rows in each keywords table.
   # keywords: array with keyword objects having the properties:
-  #   - keyword_id: number. The ID of the keyword.
+  #   - id: number. The ID of the keyword.
   #   - name: string. The name of the keyword.
   #   - description: string. The description of the keyword.
   #   - bug_count: number. The number of bugs with the keyword.
   title = "Select keyword"
 %]
 
-[% max_table_size = 50 %]
-
-[% BLOCK table_header %]
-  <table border="1" cellpadding="4" cellspacing="0">
-    <tr bgcolor="#6666FF">
-      <th align="left">Edit keyword ...</th>
-      <th align="left">Description</th>
-      <th align="left">[% terms.Bugs %]</th>
-      <th align="left">Action</th>
-    </tr>
-[% END %]
-
-[% BLOCK table_footer %]
-  </table>
-[% END %]
-
-[% PROCESS table_header %]
-
-[% FOREACH keyword = keywords %]
-  [% IF !loop.first() && loop.count() % max_table_size == 1 %]
-    [% PROCESS table_header %]
-  [% END %]
-
-  <tr>
-    <th valign="top">
-      <a href="editkeywords.cgi?action=edit&amp;id=[% keyword.id %]">[% keyword.name FILTER html %]</a>
-    </th>
-    <td valign="top">
-      [% IF keyword.description %]
-        [%  keyword.description FILTER html %]
-      [% ELSE %]
-        <font color="red">missing</font>
-      [% END %]
-    </td>
-    <td valign="top" align="right">
-      [% IF keyword.bug_count %]
-        [% keyword.bug_count %]
-      [% ELSE %]
-        none
-      [% END %]
-    </td>
-    <th valign="top">
-      <a href="editkeywords.cgi?action=delete&amp;id=[% keyword.id %]">Delete</a>
-    </th>
-  </tr>
-
-  [% IF !loop.last() && loop.count() % max_table_size == 0 %]
-    [% PROCESS table_footer %]
-  [% END %]
-[% END %]
+[% columns = [
+     { 
+       name => "name"
+       heading => "Edit keyword..."
+       contentlink => "editkeywords.cgi?action=edit&amp;id=%id%" 
+     },
+     { 
+       name => "description"
+       heading => "Description" 
+     },
+     { 
+       name => "bug_count"
+       heading => "Bugs"
+       align => "right"
+     },
+     { 
+       heading => "Action" 
+       content => "Delete"
+       contentlink => "editkeywords.cgi?action=delete&amp;id=%id%"
+     }
+   ]
+%]
 
-  <tr>
-    <td valign="top" colspan="3">Add a new keyword</td>
-    <td><a href="editkeywords.cgi?action=add">Add</a></td>
-  </tr>
+[% PROCESS admin/table.html.tmpl
+     columns = columns
+     data = keywords
+     footer = footer_row
+%]
 
-[% PROCESS table_footer %]
+<p><a href="editkeywords.cgi?action=add">Add a new keyword</a></p>
 
 [% PROCESS global/footer.html.tmpl %]
diff --git a/template/en/default/admin/table.html.tmpl b/template/en/default/admin/table.html.tmpl
new file mode 100644 (file)
index 0000000..8647aea
--- /dev/null
@@ -0,0 +1,92 @@
+[%# 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.
+  #
+  # 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): Jouni Heikniemi <jouni@heikniemi.net>
+  #
+  #%]
+
+[%# INTERFACE:
+  #
+  # columns: 
+  #   array of hashes representing the columns in the table. 
+  #   Each hash contains data for a single column. Hash keys:
+  #     name: Name of the field in the data param
+  #     heading: The text to print at the header cell
+  #     contentlink: URI to which the content of a data cell shall be linked to.
+  #                  Expressions of format %xxx% are replaced with value
+  #                  with the key xxx in data hash of the current row.
+  #     content: If specified, the content of this variable is used
+  #              instead of the data pulled from the current row. 
+  #              NOTE: This value is not HTML filtered at output!
+  #     align: left/center/right. Controls the horizontal alignment of the
+  #            text in the column.
+  #
+  # data:
+  #   array of hashes representing the data for the table.
+  #   Each hash contains data for a single row of data. The
+  #   keys are column names from columns subhashes name field.
+  #
+  #%]
+
+[%###################  TABLE HEADER   ######################%]
+
+<table border="1" cellpadding="4" cellspacing="0">
+  <tr bgcolor="#6666FF">
+    [% FOREACH c = columns %]
+      [%# Default to align left for headers %]
+      <th align="[% (c.align || 'left') FILTER html %]">
+        [% c.heading FILTER html %]
+      </th>
+    [% END %]
+  </tr>
+
+
+[%###################  TABLE CONTENT  ######################%]
+
+[% FOREACH row = data %]
+  <tr>
+    [% FOREACH c = columns %]
+      <td [% IF c.align %] align="[% c.align FILTER html %]" [% END %]>
+      
+        [% IF c.contentlink %]
+          [% link_uri = c.contentlink %]
+          [% FOREACH m = link_uri.match('%(.+?)%'); %]
+            [% replacement_value = FILTER url_quote; row.$m; END %]
+            [% link_uri = link_uri.replace("%$m%", replacement_value) %]
+          [% END %]
+          <a href="[% link_uri %]">
+        [% END %]
+        
+        [% IF c.content %] 
+          [% c.content %]
+        [% ELSE %]
+          [% row.${c.name} FILTER html %]
+        [% END %]
+        
+        [% IF c.contentlink %]
+          </a>
+        [% END %]
+         
+      </td>
+    [% END %]
+  </tr>
+[% END %]
+
+[%###################  TABLE FOOTER   ######################%]
+
+</table>
index c030fa04fabd5eaa2377ef7d9f01a2f3c903b2fb..3f9f9ab01731be6d2b33177fe76645ac4424f456 100644 (file)
   'section_num'
 ],
 
+'admin/table.html.tmpl' => [
+  'link_uri',
+  'c.content'
+],
+
 'admin/products/groupcontrol/confirm-edit.html.tmpl' => [
   'group.count', 
 ],
   'const.CONTROLMAPMANDATORY', 
 ],
 
-'admin/keywords/list.html.tmpl' => [
-  'keyword.id',
-  'keyword.bug_count',
-],
-
 'admin/keywords/edit.html.tmpl' => [
   'keyword_id',
   'bug_count',