Merge pull request #550 from kohana/3.3/docfix/R4820/incorrect-mention-of-missing...
[kohana-core.git] / views / kohana / error.php
blob4d8b1d8f5bfc787b039d5c5e43ec0940517c1f8b
1 <?php defined('SYSPATH') OR die('No direct script access.') ?>
2 <?php
4 // Unique error identifier
5 $error_id = uniqid('error');
7 ?>
8 <style type="text/css">
9 #kohana_error { background: #ddd; font-size: 1em; font-family:sans-serif; text-align: left; color: #111; }
10 #kohana_error h1,
11 #kohana_error h2 { margin: 0; padding: 1em; font-size: 1em; font-weight: normal; background: #911; color: #fff; }
12 #kohana_error h1 a,
13 #kohana_error h2 a { color: #fff; }
14 #kohana_error h2 { background: #222; }
15 #kohana_error h3 { margin: 0; padding: 0.4em 0 0; font-size: 1em; font-weight: normal; }
16 #kohana_error p { margin: 0; padding: 0.2em 0; }
17 #kohana_error a { color: #1b323b; }
18 #kohana_error pre { overflow: auto; white-space: pre-wrap; }
19 #kohana_error table { width: 100%; display: block; margin: 0 0 0.4em; padding: 0; border-collapse: collapse; background: #fff; }
20 #kohana_error table td { border: solid 1px #ddd; text-align: left; vertical-align: top; padding: 0.4em; }
21 #kohana_error div.content { padding: 0.4em 1em 1em; overflow: hidden; }
22 #kohana_error pre.source { margin: 0 0 1em; padding: 0.4em; background: #fff; border: dotted 1px #b7c680; line-height: 1.2em; }
23 #kohana_error pre.source span.line { display: block; }
24 #kohana_error pre.source span.highlight { background: #f0eb96; }
25 #kohana_error pre.source span.line span.number { color: #666; }
26 #kohana_error ol.trace { display: block; margin: 0 0 0 2em; padding: 0; list-style: decimal; }
27 #kohana_error ol.trace li { margin: 0; padding: 0; }
28 .js .collapsed { display: none; }
29 </style>
30 <script type="text/javascript">
31 document.documentElement.className = document.documentElement.className + ' js';
32 function koggle(elem)
34 elem = document.getElementById(elem);
36 if (elem.style && elem.style['display'])
37 // Only works with the "style" attr
38 var disp = elem.style['display'];
39 else if (elem.currentStyle)
40 // For MSIE, naturally
41 var disp = elem.currentStyle['display'];
42 else if (window.getComputedStyle)
43 // For most other browsers
44 var disp = document.defaultView.getComputedStyle(elem, null).getPropertyValue('display');
46 // Toggle the state of the "display" style
47 elem.style.display = disp == 'block' ? 'none' : 'block';
48 return false;
50 </script>
51 <div id="kohana_error">
52 <h1><span class="type"><?php echo $class ?> [ <?php echo $code ?> ]:</span> <span class="message"><?php echo htmlspecialchars( (string) $message, ENT_QUOTES, Kohana::$charset, TRUE); ?></span></h1>
53 <div id="<?php echo $error_id ?>" class="content">
54 <p><span class="file"><?php echo Debug::path($file) ?> [ <?php echo $line ?> ]</span></p>
55 <?php echo Debug::source($file, $line) ?>
56 <ol class="trace">
57 <?php foreach (Debug::trace($trace) as $i => $step): ?>
58 <li>
59 <p>
60 <span class="file">
61 <?php if ($step['file']): $source_id = $error_id.'source'.$i; ?>
62 <a href="#<?php echo $source_id ?>" onclick="return koggle('<?php echo $source_id ?>')"><?php echo Debug::path($step['file']) ?> [ <?php echo $step['line'] ?> ]</a>
63 <?php else: ?>
64 {<?php echo __('PHP internal call') ?>}
65 <?php endif ?>
66 </span>
67 &raquo;
68 <?php echo $step['function'] ?>(<?php if ($step['args']): $args_id = $error_id.'args'.$i; ?><a href="#<?php echo $args_id ?>" onclick="return koggle('<?php echo $args_id ?>')"><?php echo __('arguments') ?></a><?php endif ?>)
69 </p>
70 <?php if (isset($args_id)): ?>
71 <div id="<?php echo $args_id ?>" class="collapsed">
72 <table cellspacing="0">
73 <?php foreach ($step['args'] as $name => $arg): ?>
74 <tr>
75 <td><code><?php echo $name ?></code></td>
76 <td><pre><?php echo Debug::dump($arg) ?></pre></td>
77 </tr>
78 <?php endforeach ?>
79 </table>
80 </div>
81 <?php endif ?>
82 <?php if (isset($source_id)): ?>
83 <pre id="<?php echo $source_id ?>" class="source collapsed"><code><?php echo $step['source'] ?></code></pre>
84 <?php endif ?>
85 </li>
86 <?php unset($args_id, $source_id); ?>
87 <?php endforeach ?>
88 </ol>
89 </div>
90 <h2><a href="#<?php echo $env_id = $error_id.'environment' ?>" onclick="return koggle('<?php echo $env_id ?>')"><?php echo __('Environment') ?></a></h2>
91 <div id="<?php echo $env_id ?>" class="content collapsed">
92 <?php $included = get_included_files() ?>
93 <h3><a href="#<?php echo $env_id = $error_id.'environment_included' ?>" onclick="return koggle('<?php echo $env_id ?>')"><?php echo __('Included files') ?></a> (<?php echo count($included) ?>)</h3>
94 <div id="<?php echo $env_id ?>" class="collapsed">
95 <table cellspacing="0">
96 <?php foreach ($included as $file): ?>
97 <tr>
98 <td><code><?php echo Debug::path($file) ?></code></td>
99 </tr>
100 <?php endforeach ?>
101 </table>
102 </div>
103 <?php $included = get_loaded_extensions() ?>
104 <h3><a href="#<?php echo $env_id = $error_id.'environment_loaded' ?>" onclick="return koggle('<?php echo $env_id ?>')"><?php echo __('Loaded extensions') ?></a> (<?php echo count($included) ?>)</h3>
105 <div id="<?php echo $env_id ?>" class="collapsed">
106 <table cellspacing="0">
107 <?php foreach ($included as $file): ?>
108 <tr>
109 <td><code><?php echo Debug::path($file) ?></code></td>
110 </tr>
111 <?php endforeach ?>
112 </table>
113 </div>
114 <?php foreach (array('_SESSION', '_GET', '_POST', '_FILES', '_COOKIE', '_SERVER') as $var): ?>
115 <?php if (empty($GLOBALS[$var]) OR ! is_array($GLOBALS[$var])) continue ?>
116 <h3><a href="#<?php echo $env_id = $error_id.'environment'.strtolower($var) ?>" onclick="return koggle('<?php echo $env_id ?>')">$<?php echo $var ?></a></h3>
117 <div id="<?php echo $env_id ?>" class="collapsed">
118 <table cellspacing="0">
119 <?php foreach ($GLOBALS[$var] as $key => $value): ?>
120 <tr>
121 <td><code><?php echo htmlspecialchars( (string) $key, ENT_QUOTES, Kohana::$charset, TRUE); ?></code></td>
122 <td><pre><?php echo Debug::dump($value) ?></pre></td>
123 </tr>
124 <?php endforeach ?>
125 </table>
126 </div>
127 <?php endforeach ?>
128 </div>
129 </div>