]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
quips.cgi rewrite and templatisation.
authorgerv%gerv.net <>
Sat, 26 Jan 2002 06:40:02 +0000 (06:40 +0000)
committergerv%gerv.net <>
Sat, 26 Jan 2002 06:40:02 +0000 (06:40 +0000)
quips.cgi
template/default/info/quips.tmpl [new file with mode: 0644]

index d6fff6cfa68d8bef3af917ee47359a5093351d8f..f1a41b4b944136dce0737cfefd951c219d120429 100755 (executable)
--- a/quips.cgi
+++ b/quips.cgi
@@ -19,6 +19,7 @@
 # Rights Reserved.
 #
 # Contributor(s): Owen Taylor <otaylor@redhat.com>
+#                 Gervase Markham <gerv@gerv.net>
 
 use diagnostics;
 use strict;
@@ -28,40 +29,61 @@ use lib qw(.);
 
 require "CGI.pl";
 
-print "Content-type: text/html\n\n";
-
-PutHeader("Quips for the impatient", "Add your own clever headline");
+# Use the template toolkit (http://www.template-toolkit.org/)
+use Template;
 
-print qq{
-The buglist picks a random quip for the headline, and 
-you can extend the quip list.  Type in something clever or
-funny or boring and bonk on the button.
+# Create the global template object that processes templates
+my $template = Template->new(
+{
+    INCLUDE_PATH => "template/custom:template/default",
+    RELATIVE => 1,
+    PRE_CHOMP => 1,
+});
 
-<FORM METHOD=POST ACTION="new_comment.cgi">
-<INPUT SIZE=80 NAME="comment"><BR>
-<INPUT TYPE="submit" VALUE="Add This Quip">
-</FORM>
+# Define the global variables and functions that will be passed to the UI 
+# template.  
+my $vars = 
+{
+    'Param' => \&Param, 
+    'PerformSubsts' => \&PerformSubsts,
 };
 
-if (exists $::FORM{show_quips}) {
-
-    print qq{
-<H2>Existing headlines</H2>
-};
+my $action = $::FORM{'action'} || "";
 
+if ($action eq "show") {
+    # Read in the entire quip list
     if (open (COMMENTS, "<data/comments")) {
-        while (<COMMENTS>) {
-            print $_,"<br>\n";
-        }
+        my @quips;
+        push (@quips, $_) while (<COMMENTS>);        
         close COMMENTS;
+        
+        $vars->{'quips'} = \@quips;
+        $vars->{'show_quips'} = 1;
     }
-    print "<P>";
-} else {
-    print qq{
-For the impatient, you can 
-<A HREF="quips.cgi?show_quips=yes">view the whole quip list</A>.
-};
-    print "<P>";
 }
 
-PutFooter();
+if ($action eq "add") {
+    # Add the quip 
+    my $comment = $::FORM{"quip"};
+    if (!$comment) {
+        DisplayError("Please enter a quip in the text field.");
+        exit();
+    }
+    
+    if ($comment =~ m/</) {
+        DisplayError("Sorry - for security reasons, support for HTML tags has 
+                      been turned off in quips.");
+        exit();
+    }
+
+    open(COMMENTS, ">>data/comments");
+    print COMMENTS $comment . "\n";
+    close(COMMENTS);
+
+    $vars->{'added_quip'} = $comment;
+}
+
+print "Content-type: text/html\n\n";
+$template->process("info/quips.tmpl", $vars)
+  || DisplayError("Template process failed: " . $template->error())
+  && exit;
diff --git a/template/default/info/quips.tmpl b/template/default/info/quips.tmpl
new file mode 100644 (file)
index 0000000..b48bb63
--- /dev/null
@@ -0,0 +1,64 @@
+[%# 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>
+  #%]
+
+[% INCLUDE global/header
+           title = "Bugzilla Quip System"
+           h1 = "Add your own clever headline"
+ %]
+
+[% IF added_quip %]
+  <p>
+    <font color="red">
+      Your quip '<tt>[% added_quip %]</tt>' has been added.
+    </font>
+  </p>
+[% END %]
+
+<p>
+  Bugzilla will pick a random quip for the headline on each bug list, and 
+  you can extend the quip list. Type in something clever or funny or boring 
+  (but not obscene or offensive, please) and bonk on the button.
+</p>
+
+<form method="post" action="quips.cgi">
+  <input type="hidden" name="action" value="add" />
+  <input size="80" name="quip" />
+  <p>
+    <input type="submit" value="Add This Quip" />
+  </p>
+</form>
+
+[% IF show_quips %]
+  <h2>
+    Existing quips:
+  </h2>
+  <ul>
+    [% FOREACH quip = quips %]
+      <li>[% quip %]</li>
+    [% END %]
+  </ul>
+[% ELSE %]
+  <p>
+    Those who like their wisdom in large doses can 
+    <a href="quips.cgi?action=show">view the whole quip list</a>.
+  </p>
+[% END %]
+
+[% INCLUDE global/footer %]