1<!DOCTYPE html PUBLIC 2 "-//W3C//DTD XHTML 1.0 Transitional//EN" 3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 4<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 5<head> 6<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 7<title><?php echo $data['type']; ?></title> 8 9<style type="text/css"> 10/*<![CDATA[*/ 11html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent;margin:0;padding:0;} 12body{line-height:1;} 13ol,ul{list-style:none;} 14blockquote,q{quotes:none;} 15blockquote:before,blockquote:after,q:before,q:after{content:none;} 16:focus{outline:0;} 17ins{text-decoration:none;} 18del{text-decoration:line-through;} 19table{border-collapse:collapse;border-spacing:0;} 20 21body { 22 font: normal 9pt "Verdana"; 23 color: #000; 24 background: #fff; 25} 26 27h1 { 28 font: normal 18pt "Verdana"; 29 color: #f00; 30 margin-bottom: .5em; 31} 32 33h2 { 34 font: normal 14pt "Verdana"; 35 color: #800000; 36 margin-bottom: .5em; 37} 38 39h3 { 40 font: bold 11pt "Verdana"; 41} 42 43pre { 44 font: normal 11pt Menlo, Consolas, "Lucida Console", Monospace; 45} 46 47pre span.error { 48 display: block; 49 background: #fce3e3; 50} 51 52pre span.ln { 53 color: #999; 54 padding-right: 0.5em; 55 border-right: 1px solid #ccc; 56} 57 58pre span.error-ln { 59 font-weight: bold; 60} 61 62.container { 63 margin: 1em 4em; 64} 65 66.version { 67 color: gray; 68 font-size: 8pt; 69 border-top: 1px solid #aaa; 70 padding-top: 1em; 71 margin-bottom: 1em; 72} 73 74.message { 75 color: #000; 76 padding: 1em; 77 font-size: 11pt; 78 background: #f3f3f3; 79 -webkit-border-radius: 10px; 80 -moz-border-radius: 10px; 81 border-radius: 10px; 82 margin-bottom: 1em; 83 line-height: 160%; 84} 85 86.source { 87 margin-bottom: 1em; 88} 89 90.code pre { 91 background-color: #ffe; 92 margin: 0.5em 0; 93 padding: 0.5em; 94 line-height: 125%; 95 border: 1px solid #eee; 96} 97 98.source .file { 99 margin-bottom: 1em; 100 font-weight: bold; 101} 102 103.traces { 104 margin: 2em 0; 105} 106 107.trace { 108 margin: 0.5em 0; 109 padding: 0.5em; 110} 111 112.trace.app { 113 border: 1px dashed #c00; 114} 115 116.trace .number { 117 text-align: right; 118 width: 2em; 119 padding: 0.5em; 120} 121 122.trace .content { 123 padding: 0.5em; 124} 125 126.trace .plus, 127.trace .minus { 128 display:inline; 129 vertical-align:middle; 130 text-align:center; 131 border:1px solid #000; 132 color:#000; 133 font-size:10px; 134 line-height:10px; 135 margin:0; 136 padding:0 1px; 137 width:10px; 138 height:10px; 139} 140 141.trace.collapsed .minus, 142.trace.expanded .plus, 143.trace.collapsed pre { 144 display: none; 145} 146 147.trace-file { 148 cursor: pointer; 149 padding: 0.2em; 150} 151 152.trace-file:hover { 153 background: #f0ffff; 154} 155/*]]>*/ 156</style> 157</head> 158 159<body> 160<div class="container"> 161 <h1><?php echo $data['type']?></h1> 162 163 <p class="message"> 164 <?php echo nl2br(htmlspecialchars($data['message'],ENT_QUOTES,Yii::app()->charset))?> 165 </p> 166 167 <div class="source"> 168 <p class="file"><?php echo htmlspecialchars($data['file'],ENT_QUOTES,Yii::app()->charset)."({$data['line']})"?></p> 169 <?php echo $this->renderSourceCode($data['file'],$data['line'],$this->maxSourceLines); ?> 170 </div> 171 172 <div class="traces"> 173 <h2>Стек трасування</h2> 174 <?php $count=0; ?> 175 <table style="width:100%;"> 176 <?php foreach($data['traces'] as $n => $trace): ?> 177 <?php 178 if($this->isCoreCode($trace)) 179 $cssClass='core collapsed'; 180 elseif(++$count>3) 181 $cssClass='app collapsed'; 182 else 183 $cssClass='app expanded'; 184 $hasCode=$trace['file']!=='unknown' && is_file($trace['file']); 185 ?> 186 <tr class="trace <?php echo $cssClass; ?>"> 187 <td class="number"> 188 #<?php echo $n; ?> 189 </td> 190 <td class="content"> 191 <div class="trace-file"> 192 <?php if($hasCode): ?> 193 <div class="plus">+</div> 194 <div class="minus">–</div> 195 <?php endif; ?> 196 <?php 197 echo ' '; 198 echo htmlspecialchars($trace['file'],ENT_QUOTES,Yii::app()->charset)."(".$trace['line'].")"; 199 echo ': '; 200 if(!empty($trace['class'])) 201 echo "<strong>{$trace['class']}</strong>{$trace['type']}"; 202 echo "<strong>{$trace['function']}</strong>("; 203 if(!empty($trace['args'])) 204 echo htmlspecialchars($this->argumentsToString($trace['args']),ENT_QUOTES,Yii::app()->charset); 205 echo ')'; 206 ?> 207 </div> 208 209 <?php if($hasCode) echo $this->renderSourceCode($trace['file'],$trace['line'],$this->maxTraceSourceLines); ?> 210 </td> 211 </tr> 212 <?php endforeach; ?> 213 </table> 214 </div> 215 216 <div class="version"> 217 <?php echo date('Y-m-d H:i:s',$data['time']) .' '. $data['version']; ?> 218 </div> 219</div> 220 221<script type="text/javascript"> 222/*<![CDATA[*/ 223var traceReg = new RegExp("(^|\\s)trace-file(\\s|$)"); 224var collapsedReg = new RegExp("(^|\\s)collapsed(\\s|$)"); 225 226var e = document.getElementsByTagName("div"); 227for(var j=0,len=e.length;j<len;j++){ 228 if(traceReg.test(e[j].className)){ 229 e[j].onclick = function(){ 230 var trace = this.parentNode.parentNode; 231 if(collapsedReg.test(trace.className)) 232 trace.className = trace.className.replace("collapsed", "expanded"); 233 else 234 trace.className = trace.className.replace("expanded", "collapsed"); 235 } 236 } 237} 238/*]]>*/ 239</script> 240 241</body> 242</html> 243