Nicer HTML
package Oe1::Web::Middleware::Error;
use strict;
use warnings;
use parent qw( Plack::Middleware::PrettyException );
use Plack::Util::Accessor qw( page_model renderer );
sub render_html_error {
my ( $self, $code, $message ) = @_;
$message =~ s{/.*lib/} {};
$message =~ s{/} {::}g;
$message =~ s{\.pm} {};
$message =~ s{(line \d+),.*} {$1};
my %data = (
title => 'Fehler '.$code,
error => $message,
code => $code
);
my $rendered='';
eval {
if ( my $page = $self->page_model->load_item( '_error/'.$code )) {
$data{title} = $page->title;
$data{description} = $page->teaser;
}
$self->renderer->tt->process( 'error.tt', \%data, \$rendered );
};
if ($@) {
$rendered = "<h1>Error while rendering error<h1>" .
"<h3>Render error<h3>" . $self->renderer->tt->error
"<h3>Original error</h3>" . $message;
}
return $rendered;
}