1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10:
11:
12: namespace Nette\Templates;
13:
14: use Nette;
15:
16:
17:
18: 19: 20: 21: 22:
23: class TemplateException extends \InvalidStateException implements Nette\IDebugPanel
24: {
25:
26: public $sourceFile;
27:
28:
29: public $sourceLine;
30:
31:
32:
33: function __construct($message, $code = 0, $sourceLine = 0)
34: {
35: $this->sourceLine = (int) $sourceLine;
36: parent::__construct($message, $code);
37: }
38:
39:
40:
41: function setSourceFile($file)
42: {
43: $this->sourceFile = (string) $file;
44: $this->message = rtrim($this->message, '.') . " in " . str_replace(dirname(dirname($file)), '...', $file)
45: . ($this->sourceLine ? ":$this->sourceLine" : '');
46: }
47:
48:
49:
50: function getTab()
51: {
52: return 'Template';
53: }
54:
55:
56:
57: function getPanel()
58: {
59: $link = Nette\DebugHelpers::editorLink($this->sourceFile, $this->sourceLine);
60: return '<p><b>File:</b> ' . ($link ? '<a href="' . htmlspecialchars($link) . '">' : '') . htmlspecialchars($this->sourceFile) . ($link ? '</a>' : '')
61: . ' <b>Line:</b> ' . ($this->sourceLine ? $this->sourceLine : 'n/a') . '</p>'
62: . ($this->sourceLine ? '<pre>' . Nette\DebugHelpers::highlightFile($this->sourceFile, $this->sourceLine) . '</pre>' : '');
63: }
64:
65:
66:
67: function getId()
68: {
69: }
70:
71: }
72: