瀏覽代碼

fixed exception HTML markup (closes #9044, partially based on a patch from wrzasq)

Fabien Potencier 14 年之前
父節點
當前提交
eb7cbb77ec

File diff suppressed because it is too large
+ 8 - 7
src/Symfony/Bundle/FrameworkBundle/Resources/public/css/exception.css


File diff suppressed because it is too large
+ 1 - 1
src/Symfony/Bundle/FrameworkBundle/Resources/views/Exception/exception.php


+ 4 - 3
src/Symfony/Bundle/FrameworkBundle/Resources/views/Exception/layout.php

@@ -6,10 +6,12 @@
         <style type="text/css">
             html { background: #eee }
             body { font: 11px Verdana, Arial, sans-serif; color: #333 }
+            .sf-exceptionreset, .sf-exceptionreset .block, .sf-exceptionreset #message { margin: auto }
 
             <?php echo $view->render('FrameworkBundle:Exception:styles') ?>
         </style>
         <script type="text/javascript">
+            //<![CDATA[
             function toggle(id, clazz) {
                 el = document.getElementById(id);
                 current = el.style.display
@@ -25,11 +27,10 @@
 
                 el.style.display = current == 'none' ? 'block' : 'none';
             }
+            //]]>
         </script>
     </head>
     <body>
-        <center>
-            <?php echo $view->get('slots')->get('_content') ?>
-        </center>
+        <?php echo $view->get('slots')->get('_content') ?>
     </body>
 </html>

+ 2 - 2
src/Symfony/Bundle/FrameworkBundle/Resources/views/Exception/logs.php

@@ -1,8 +1,8 @@
-<ul>
+<ol>
     <?php foreach ($logs as $log): ?>
         <li<?php if ('ERR' === $log['priorityName']): ?> class="error"<?php endif; ?>>
             <?php echo $log['priorityName'] ?>:
             <?php echo $log['message'] ?>
         </li>
     <?php endforeach; ?>
-</ul>
+</ol>

+ 2 - 2
src/Symfony/Bundle/FrameworkBundle/Resources/views/Exception/trace.php

@@ -4,7 +4,7 @@
 <?php if ($trace['file'] && $trace['line']): ?>
     in <em><?php echo $view->get('code')->formatFile($trace['file'], $trace['line']) ?></em>
     <a href="#" onclick="toggle('trace_<?php echo $prefix.'_'.$i ?>'); return false;">&raquo;</a><br />
-    <ul class="code" id="trace_<?php echo $prefix.'_'.$i ?>" style="display: <?php echo 0 === $i ? 'block' : 'none' ?>">
+    <div id="trace_<?php echo $prefix.'_'.$i ?>" style="display: <?php echo 0 === $i ? 'block' : 'none' ?>">
         <?php echo $view->get('code')->fileExcerpt($trace['file'], $trace['line']) ?>
-    </ul>
+    </div>
 <?php endif; ?>

+ 2 - 2
src/Symfony/Bundle/FrameworkBundle/Resources/views/Exception/traces.php

@@ -10,11 +10,11 @@
     <?php endif; ?>
 
     <a id="traces_link_<?php echo $position ?>"></a>
-    <ul class="traces" id="traces_<?php echo $position ?>" style="display: <?php echo 0 === $position ? 'block' : 'none' ?>">
+    <ol class="traces" id="traces_<?php echo $position ?>" style="display: <?php echo 0 === $position ? 'block' : 'none' ?>">
         <?php foreach ($exception->getTrace() as $i => $trace): ?>
             <li>
                 <?php echo $view->render('FrameworkBundle:Exception:trace', array('prefix' => $position, 'i' => $i, 'trace' => $trace)) ?>
             </li>
         <?php endforeach; ?>
-    </ul>
+    </ol>
 </div>

+ 24 - 2
src/Symfony/Bundle/FrameworkBundle/Templating/Helper/CodeHelper.php

@@ -132,11 +132,14 @@ class CodeHelper extends Helper
     public function fileExcerpt($file, $line)
     {
         if (is_readable($file)) {
-            $content = preg_split('#<br />#', highlight_file($file, true));
+            $code = highlight_file($file, true);
+            // remove main code/span tags
+            $code = preg_replace('#^<code.*?>\s*<span.*?>(.*)</span>\s*</code>#s', '\\1', $code);
+            $content = preg_split('#<br />#', $code);
 
             $lines = array();
             for ($i = max($line - 3, 1), $max = min($line + 3, count($content)); $i <= $max; $i++) {
-                $lines[] = '<li'.($i == $line ? ' class="selected"' : '').'>'.$content[$i - 1].'</li>';
+                $lines[] = '<li'.($i == $line ? ' class="selected"' : '').'><code>'.self::fixCodeMarkup($content[$i - 1]).'</code></li>';
             }
 
             return '<ol start="'.max($line - 3, 1).'">'.implode("\n", $lines).'</ol>';
@@ -187,4 +190,23 @@ class CodeHelper extends Helper
     {
         return 'code';
     }
+
+    protected static function fixCodeMarkup($line)
+    {
+        // </span> ending tag from previous line
+        $opening = strpos($line, '<span');
+        $closing = strpos($line, '</span>');
+        if (false !== $closing && (false === $opening || $closing < $opening)) {
+            $line = substr_replace($line, '', $closing, 7);
+        }
+
+        // missing </span> tag at the end of line
+        $opening = strpos($line, '<span');
+        $closing = strpos($line, '</span>');
+        if (false !== $opening && (false === $closing || $closing > $opening)) {
+            $line .= '</span>';
+        }
+
+        return $line;
+    }
 }