X-Git-Url: https://git.p6c8.net/devedit.git/blobdiff_plain/3e6b9e338fe5ea06b487202fe54217f2082cd13d..d9c57e6a72261b94d4f2e4ee1e1c8e3757355ad0:/modules/Output.pm diff --git a/modules/Output.pm b/modules/Output.pm index e8d4bad..3670e0e 100644 --- a/modules/Output.pm +++ b/modules/Output.pm @@ -5,165 +5,103 @@ package Output; # # HTML generating routines # -# Author: Patrick Canterino -# Last modified: 09-22-2003 +# Author: Patrick Canterino +# Last modified: 2005-05-11 +# +# Copyright (C) 1999-2000 Roland Bluethgen, Frank Schoenmann +# Copyright (C) 2003-2009 Patrick Canterino +# All Rights Reserved. +# +# This file can be distributed and/or modified under the terms of +# of the Artistic License 1.0 (see also the LICENSE file found at +# the top level of the Dev-Editor distribution). # 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); -@EXPORT = qw(htmlhead - htmlfoot +@EXPORT = qw(error_template error - abort - error_in_use - equal_url - dir_link); - -# htmlhead() -# -# Generate the head of a HTML document -# -# Params: Title and heading -# -# Return: Head for the HTML document - -sub htmlhead($) -{ - my $title = shift; - - my $html = header(-type => "text/html"); - - $html .= < - - - -$title - - - + abort); -

$title

+my $tpl_error; -END - - return $html; -} - -# htmlfoot() +# error_template() # -# Generate the foot of a HTML document +# Set the path to the template file used for error messages +# (I'm lazy...) # -# Params: -nothing- -# -# Return: Foot for the HTML document +# Params: Template file -sub htmlfoot +sub error_template($) { - return "\n\n"; + $tpl_error = shift; } # error() # # Format an error message # -# Params: Error message +# Params: 1. Error message +# 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) -sub error($) +sub error($;$$) { - my $message = shift; + my ($message,$path,$vars) = @_; - my $output = htmlhead("Error"); - $output .= "

$message

"; - $output .= htmlfoot; + my $tpl = new Template; + $tpl->read_file($tpl_error); - return \$output; -} + $tpl->fillin('ERROR',$message); + $tpl->fillin('BACK',encode_html($path)); + $tpl->fillin('BACK_URL',escape($path)); + $tpl->fillin('SCRIPT',encode_html($ENV{'SCRIPT_NAME'})); -# abort() -# -# Print and error message and exit script -# -# Params: Error message + $tpl->parse_if_block('dir',defined $path); -sub abort($) -{ - my $output = error(shift); - print $$output; - exit; -} - -# error_in_use() -# -# Create a message, that a file is currently in use -# -# Params: File, which is in use -# -# Return: Formatted message (Scalar Reference) + if(ref($vars) eq 'HASH') + { + while(my ($key,$value) = each(%$vars)) + { + $tpl->fillin($key,$value); + } + } -sub error_in_use($) -{ - my $file = encode_entities(shift); - my $dir = upper_path($file); - - my $message = htmlhead("File in use"); - $message .= "

The file '$file' is currently editet by someone else.

\n\n"; - $message .= "

Back to $dir

"; - $message .= htmlfoot; - - return \$message; -} + my $output = header(-type => 'text/html'); + $output .= $tpl->get_template; -# equal_url() -# -# Create an "equals"-link and print it out -# -# 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 "

(equals $url)

\n\n"; + return \$output; } -# dir_link() -# -# Create the link to the directory of a file and -# print it out +# abort() # -# Params: File +# Print an error message and exit script +# ^^^^^ # -# Return: Formatted link (String) +# 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 dir_link($) +sub abort($;$$) { - my $dir = upper_path(shift); - $dir = encode_entities($dir); - - return "

Back to $dir

\n\n"; + my $output = error(shift,shift,shift); + print $$output; + exit; } # it's true, baby ;-)