——————#!/usr/bin/perl
#FEATURE: also display debug messages?
=head1 NAME
Konstrukt::Plugin::errors - Display the error messages that occured during the page processing
=head1 SYNOPSIS
<& errors / &>
=head1 DESCRIPTION
Will display the error messages (if any) that have been created with
C<$Konstrukt::Debug->error_message()>.
A template named C<error.template> will be used to display them. The template
must have a list C<errors>, which must have a field C<text>.
=head1 CONFIGURATION
You may set the path to the template (C<error.template>) of this plugin. Default:
errors/template_path /templates/errors/
=cut
package
Konstrukt::Plugin::errors;
use
strict;
use
warnings;
=head1 METHODS
=head2 init
Inititalization of this class
=cut
sub
init {
my
(
$self
) =
@_
;
#set default settings
$Konstrukt::Settings
->
default
(
"errors/template_path"
=>
"/templates/errors/"
);
return
1;
}
#= /init
=head2 install
Installs the templates.
B<Parameters:>
none
=cut
sub
install {
my
(
$self
) =
@_
;
return
$Konstrukt::Lib
->plugin_file_install_helper(
$Konstrukt::Settings
->get(
'errors/template_path'
));
}
# /install
=head2 default :Action
Default (and only) action for this plugin. Will display the error messages.
B<Parameters>:
=over
=item * $tag - Reference to the tag (and its children) that shall be handled.
=item * $content - The content below/inside the tag as a flat string.
=item * $params - Reference to a hash of the passed CGI parameters.
=back
=cut
sub
default
:Action {
my
(
$self
,
$tag
,
$content
,
$params
) =
@_
;
if
(@{
$Konstrukt::Debug
->{error_messages}}) {
my
$template
= use_plugin
'template'
;
my
$templ
=
$Konstrukt::Settings
->get(
'errors/template_path'
) .
"errors.template"
;
$self
->add_node(
$template
->node(
$templ
, {
errors
=> [
map
{ {
text
=>
$_
} } @{
$Konstrukt::Debug
->{error_messages}} ] }));
}
}
#= /default
=head2 execution_stage
This one should be executed last.
=cut
sub
execution_stage {
return
999_999;
}
#= /execution_stage
1;
=head1 AUTHOR
Copyright 2006 Thomas Wittek (mail at gedankenkonstrukt dot de). All rights reserved.
This document is free software.
It is distributed under the same terms as Perl itself.
=head1 SEE ALSO
L<Konstrukt::Debug>, L<Konstrukt::SimplePlugin>, L<Konstrukt>
=cut
__DATA__
== 8< == textfile: errors.template == >8 ==
<div class="error">
<h1>There have been errors/warnings during the processing of this page:</h1>
<ul>
<+@ errors @+> <li><+$ text $+>(No text)<+$ / $+></li>
<+@ / @+>
</ul>
</div>