CGI-Application-Plugin-DebugScreen
view release on metacpan or search on metacpan
lib/CGI/Application/Plugin/DebugScreen.pm view on Meta::CPAN
use 5.006;
use strict;
use warnings;
use HTML::Template;
use Devel::StackTrace;
use IO::File;
use UNIVERSAL::require;
our $VERSION = '1.00';
our $A_CODE = '<a class="package" href="?rm=view_code&module=';
our $A_POD = '<a class="package" href="?rm=view_pod&module=';
our $A_TAIL = '">';
our $A_END = '</a>';
our $TEMPLATE = qq{
<html><!-- HTML::Template -->
<head>
<title>Error in <!-- TMPL_VAR NAME="title" --></title>
<style type="text/css">
body {
font-family: "Bitstream Vera Sans", "Trebuchet MS", Verdana,
Tahoma, Arial, helvetica, sans-serif;
color: #000;
background-color: #E68200;
margin: 0px;
padding: 0px;
}
:link, :link:hover, :visited, :visited:hover {
color: #000;
}
div.box {
position: relative;
background-color: #fff;
border: 1px solid #aaa;
padding: 4px;
margin: 10px;
-moz-border-radius: 10px;
}
div.infos {
background-color: #fff;
border: 3px solid #FFCC99;
padding: 8px;
margin: 4px;
margin-bottom: 10px;
-moz-border-radius: 10px;
overflow: auto;
}
div.infos td.head{
text-align: center;
}
h1 {
margin: 0;
color: #999999;
}
h2 {
margin-top: 0;
margin-bottom: 10px;
font-size: medium;
font-weight: bold;
text-decoration: underline;
}
div.url {
font-size: x-small;
overflow: auto;
}
pre {
font-size: .8em;
line-height: 120%;
font-family: 'Courier New', Courier, monospace;
background-color: #FFCC99;
color: #333;
border: 1px dotted #000;
padding: 5px;
margin: 8px;
overflow: auto;
}
pre b {
font-weight: bold;
color: #000;
background-color: #E68200;
}
h1 a.package {
color: #999999;
}
</style>
</head>
<body>
<div class="box">
<h1><!-- TMPL_VAR NAME="title_a" --></h1>
<div class="url"><!-- TMPL_VAR NAME="url" --></div>
<div class="infos">
<!-- TMPL_VAR NAME="desc" --><br />
</div>
<div class="infos">
<h2>StackTrace</h2>
<table>
<tr>
<th>Package</th>
<th>Line </th>
<th>File </th>
<!-- TMPL_IF NAME="view" -->
<th>View </th>
<!-- /TMPL_IF -->
</tr>
<!-- TMPL_LOOP NAME="stacktrace" -->
<tr>
<td class="head"><!-- TMPL_VAR NAME="package" --></td>
<td class="head"><!-- TMPL_VAR NAME="line" --></td>
<td class="head"><!-- TMPL_VAR NAME="filename" --></td>
<!-- TMPL_IF NAME="view" -->
<td class="head"><!-- TMPL_VAR NAME="code" --> <!-- TMPL_VAR NAME="pod" --></td>
<!-- /TMPL_IF -->
</tr>
<tr>
<td colspan="4"><pre><!-- TMPL_VAR NAME="code_preview" --></pre></td>
</tr>
<!-- /TMPL_LOOP -->
</table>
</div>
</div>
</body>
</html>
};
sub import {
my $self = shift;
my $caller = scalar caller;
$caller->add_callback( 'init', sub{
my $self = shift;
$SIG{__DIE__} = sub{
push @{$self->{__stacktrace}},[Devel::StackTrace->new(ignore_package=>[qw/CGI::Application::Plugin::DebugScreen Carp CGI::Carp/])->frames];
die @_; # rethrow
};
( run in 1.118 second using v1.01-cache-2.11-cpan-39bf76dae61 )