]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 122636 - Templatise colchange.cgi
authorjake%acutex.net <>
Fri, 1 Feb 2002 04:12:47 +0000 (04:12 +0000)
committerjake%acutex.net <>
Fri, 1 Feb 2002 04:12:47 +0000 (04:12 +0000)
Patch by David Lawrence <dkl@redhat.com> and Christian Reis <kiko@async.com.br>
r= kiko, jake

colchange.cgi
template/default/buglist/colchange.tmpl [new file with mode: 0644]

index 89150b5d41e741d53428213402b6a36aebefe460..2125b75429fc61f54254d1950963d87ccf996491 100755 (executable)
@@ -31,6 +31,38 @@ sub sillyness { # shut up "used only once" warnings
 
 require "CGI.pl";
 
+# Use the template toolkit (http://www.template-toolkit.org/) to generate
+# the user interface (HTML pages and mail messages) using templates in the
+# "template/" subdirectory.
+use Template;
+
+# Create the global template object that processes templates and specify
+# configuration parameters that apply to all templates processed in this script.
+my $template = Template->new(
+{
+    # Colon-separated list of directories containing templates.
+    INCLUDE_PATH => "template/custom:template/default",
+    # Allow templates to be specified with relative paths.
+    RELATIVE => 1,
+    PRE_CHOMP => 1,
+});
+
+# Define the global variables and functions that will be passed to the UI 
+# template.  Individual functions add their own values to this hash before
+# sending them to the templates they process.
+my $vars = 
+{
+    # Function for retrieving global parameters.
+    'Param' => \&Param, 
+
+    # Function for processing global parameters that contain references
+    # to other global parameters.
+    'PerformSubsts' => \&PerformSubsts,
+
+    # Function to search an array for a value   
+    'lsearch' => \&lsearch,
+};
+
 print "Content-type: text/html\n";
 
 # The master list not only says what fields are possible, but what order
@@ -59,6 +91,7 @@ if (@::legal_keywords) {
 
 push(@masterlist, ("summary", "summaryfull"));
 
+$vars->{masterlist} = \@masterlist;
 
 my @collist;
 if (defined $::FORM{'rememberedquery'}) {
@@ -95,13 +128,14 @@ if (defined $::COOKIE{'COLUMNLIST'}) {
     @collist = @::default_column_list;
 }
 
-my $splitheader = 0;
+$vars->{collist} = \@collist;
+
+$vars->{splitheader} = 0;
 if ($::COOKIE{'SPLITHEADER'}) {
-    $splitheader = 1;
+    $vars->{splitheader} = 1;
 }
 
-
-my %desc;
+my %desc = ();
 foreach my $i (@masterlist) {
     $desc{$i} = $i;
 }
@@ -109,36 +143,12 @@ foreach my $i (@masterlist) {
 $desc{'summary'} = "Summary (first 60 characters)";
 $desc{'summaryfull'} = "Full Summary";
 
+$vars->{desc} = \%desc;
+$vars->{buffer} = $::buffer;
 
-print "\n";
-PutHeader ("Change columns");
-print "Check which columns you wish to appear on the list, and then click\n";
-print "on submit.  (Cookies are required.)\n";
-print "<p>\n";
-print "<FORM ACTION=colchange.cgi>\n";
-print "<INPUT TYPE=HIDDEN NAME=rememberedquery VALUE=$::buffer>\n";
+# Generate and return the UI (HTML page) from the appropriate template.
+print "Content-type: text/html\n\n";
+$template->process("buglist/colchange.tmpl", $vars)
+  || DisplayError("Template process failed: " . $template->error())
+  && exit;
 
-foreach my $i (@masterlist) {
-    my $c;
-    if (lsearch(\@collist, $i) >= 0) {
-        $c = 'CHECKED';
-    } else {
-        $c = '';
-    }
-    print "<INPUT TYPE=checkbox NAME=column_$i $c>$desc{$i}<br>\n";
-}
-print "<P>\n";
-print BuildPulldown("splitheader",
-                    [["0", "Normal headers (prettier)"],
-                     ["1", "Stagger headers (often makes list more compact)"]],
-                    $splitheader);
-print "<P>\n";
-
-print "<INPUT TYPE=\"submit\" VALUE=\"Submit\">\n";
-print "</FORM>\n";
-print "<FORM ACTION=colchange.cgi>\n";
-print "<INPUT TYPE=HIDDEN NAME=rememberedquery VALUE=$::buffer>\n";
-print "<INPUT TYPE=HIDDEN NAME=resetit VALUE=1>\n";
-print "<INPUT TYPE=\"submit\" VALUE=\"Reset to Bugzilla default\">\n";
-print "</FORM>\n";
-PutFooter();
diff --git a/template/default/buglist/colchange.tmpl b/template/default/buglist/colchange.tmpl
new file mode 100644 (file)
index 0000000..5ef71aa
--- /dev/null
@@ -0,0 +1,50 @@
+[%# 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): Dave Lawrence <dkl@redhat.com>
+  #%]
+
+[% INCLUDE global/header
+  title = "Change Columns"
+%]
+
+Check which columns you wish to appear on the list, and then click
+on submit.  (Cookies are required.)
+<p>
+<form action="colchange.cgi">
+<input type="hidden" name="rememberedquery" value="[% buffer FILTER uri %]">
+[% FOREACH column = masterlist %]
+  <input type="checkbox" id="[% column %]" name="column_[% column %]" [% "CHECKED" IF lsearch(collist, column) != -1 %]>
+  <label for="[% column %]">[% desc.${column} %]</label><br>
+[% END %]
+</p><p>
+<input id="nosplitheader" type="radio" name="splitheader" value="0" [% "CHECKED" IF ! splitheader %]>
+<label for="nosplitheader">Normal headers (prettier)</label><br>
+<input id="splitheader" type="radio" name="splitheader" value="1" [% "CHECKED" IF splitheader %]>
+<label for="splitheader">Stagger headers (often makes list more compact)</label>
+</p><p>
+<input type="submit" value="Submit">
+</form>
+<form action="colchange.cgi">
+<input type="hidden" name="rememberedquery" value="[% buffer FILTER uri %]">
+<input type="hidden" name="resetit" value="1">
+<input type="submit" value="Reset to Bugzilla default">
+</form>
+</p>
+
+[% INCLUDE global/footer %]
+