]> git.p6c8.net - devedit.git/blobdiff - modules/Output.pm
Forgot to encode HTML in some strings
[devedit.git] / modules / Output.pm
index 6e48bf30a448b62bce23af03964060fc6e9c98a7..cd4e53eaeda032a001e01c18863ed62d6f9c20cb 100644 (file)
@@ -5,74 +5,40 @@ package Output;
 #
 # HTML generating routines
 #
 #
 # HTML generating routines
 #
-# Author:        Patrick Canterino <patshaping@gmx.net>
-# Last modified: 2003-12-13
+# Author:        Patrick Canterino <patrick@patshaping.de>
+# Last modified: 2005-04-22
 #
 
 use strict;
 
 use vars qw(@EXPORT);
 
 #
 
 use strict;
 
 use vars qw(@EXPORT);
 
-use CGI qw(header);
-use HTML::Entities;
+use CGI qw(header
+           escape);
+
+use Template;
 use Tool;
 
 ### Export ###
 
 use base qw(Exporter);
 
 use Tool;
 
 ### Export ###
 
 use base qw(Exporter);
 
-@EXPORT = qw(htmlhead
-             htmlfoot
+@EXPORT = qw(error_template
              error
              error
-             abort
-             error_in_use
-             equal_url
-             dir_link);
-
-# htmlhead()
-#
-# Generate the head of a HTML document
-# (a text/html HTTP header will also be created)
-#
-# Params: Title/heading
-#
-# Return: Head for the HTML document
-
-sub htmlhead($)
-{
- my $title = shift;
-
- my $html = header(-type => "text/html");
-
- $html .= <<END;
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-"http://www.w3.org/TR/html4/loose.dtd">
-
-<html>
-<head>
-<title>$title</title>
-<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
-</head>
-<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
-
-<h1>$title</h1>
+             abort);
 
 
-END
+my $tpl_error;
 
 
- return $html;
-}
-
-# htmlfoot()
-#
-# Generate the foot of a HTML document
+# error_template()
 #
 #
-# Params: -nothing-
+# Set the path to the template file used for error messages
+# (I'm lazy...)
 #
 #
-# Return: Foot for the HTML document
+# Params: Template file
 
 
-sub htmlfoot
+sub error_template($)
 {
 {
return "\n</body>\n</html>";
$tpl_error = shift;
 }
 
 # error()
 }
 
 # error()
@@ -80,26 +46,36 @@ sub htmlfoot
 # Format an error message
 #
 # Params: 1. Error message
 # Format an error message
 #
 # Params: 1. Error message
-#         2. Virtual path to which a link should be displayed (optional)
+#         2. Display a link to this path at the bottom of the page (optional)
+#            Please use the unencoded form of the string!
+#         3. Hash reference: Template variables (optional)
 #
 # Return: Formatted message (Scalar Reference)
 
 #
 # Return: Formatted message (Scalar Reference)
 
-sub error($;$)
+sub error($;$$)
 {
 {
- my ($message,$path) = @_;
+ my ($message,$path,$vars) = @_;
 
 
- my $output = htmlhead("Error");
- $output   .= "<p>$message</p>";
+ my $tpl = new Template;
+ $tpl->read_file($tpl_error);
 
 
- if($path)
- {
-  $path = encode_entities($path);
+ $tpl->fillin('ERROR',$message);
+ $tpl->fillin('BACK',encode_html($path));
+ $tpl->fillin('BACK_URL',escape($path));
+ $tpl->fillin('SCRIPT',encode_html($ENV{'SCRIPT_NAME'}));
+
+ $tpl->parse_if_block('dir',defined $path);
 
 
-  $output .= "\n\n";
-  $output .= "<p><a href=\"$ENV{'SCRIPT_NAME'}?command=show&file=$path\">Back to $path</a></p>";
+ if(ref($vars) eq 'HASH')
+ {
+  while(my ($key,$value) = each(%$vars))
+  {
+   $tpl->fillin($key,$value);
+  }
  }
 
  }
 
- $output .= htmlfoot;
+ my $output = header(-type => 'text/html');
+ $output   .= $tpl->get_template;
 
  return \$output;
 }
 
  return \$output;
 }
@@ -109,69 +85,17 @@ sub error($;$)
 # Print an error message and exit script
 # ^^^^^
 #
 # Print an error message and exit script
 # ^^^^^
 #
-# Params: Error message
+# Params: 1. Error message
+#         2. Display a link to this path at the bottom of the page (optional)
+#         3. Hash reference: Template variables (optional)
 
 
-sub abort($)
+sub abort($;$$)
 {
 {
- my $output = error(shift);
+ my $output = error(shift,shift,shift);
  print $$output;
  exit;
 }
 
  print $$output;
  exit;
 }
 
-# error_in_use()
-#
-# Create a message, which shows, that a
-# file is currently in use
-#
-# Params: File, which is in use
-#
-# Return: Formatted message (Scalar Reference)
-
-sub error_in_use($)
-{
- my $file = shift;
-
- return error("The file '".encode_entities($file)."' is currently edited by someone else.",upper_path($file));
-}
-
-# equal_url()
-#
-# Create an "equals"-link
-#
-# Params: 1. HTTP root
-#         2. Relative path
-#
-# Return: Formatted link (String)
-
-sub equal_url($$)
-{
- my ($root,$path) = @_;
- my $url;
-
- $root =~ s!/$!!;
- $path =~ s!^/!!;
- $url  =  $root."/".$path;
- $url  =  encode_entities($url);
-
- return "<p>(equals <a href=\"$url\" target=\"_blank\">$url</a>)</p>\n\n";
-}
-
-# dir_link()
-#
-# Create the link to the directory of a file
-#
-# Params: File
-#
-# Return: Formatted link (String)
-
-sub dir_link($)
-{
- my $dir = upper_path(shift);
- $dir    = encode_entities($dir);
-
- return "<p><a href=\"$ENV{'SCRIPT_NAME'}?command=show&file=$dir\">Back to $dir</a></p>\n\n";
-}
-
 # it's true, baby ;-)
 
 1;
 # it's true, baby ;-)
 
 1;

patrick-canterino.de