diff options
Diffstat (limited to 'modules/gallery/views/kohana')
-rw-r--r-- | modules/gallery/views/kohana/error.php | 321 |
1 files changed, 42 insertions, 279 deletions
diff --git a/modules/gallery/views/kohana/error.php b/modules/gallery/views/kohana/error.php index d55105a0..b0f0e907 100644 --- a/modules/gallery/views/kohana/error.php +++ b/modules/gallery/views/kohana/error.php @@ -1,280 +1,43 @@ <?php defined("SYSPATH") or die("No direct script access.") ?> -<? $error_id = uniqid("error") ?> -<? if (!function_exists("t")) { function t($msg) { return $msg; } } ?> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> - <head> - <style type="text/css"> - body { - background: #fff; - font-size: 14px; - line-height: 130%; - } - - div.big_box { - padding: 10px; - background: #eee; - border: solid 1px #ccc; - font-family: sans-serif; - color: #111; - width: 60em; - margin: 20px auto; - } - - div#framework_error { - text-align: center; - } - - div#error_details { - text-align: left; - } - - code { - font-family: monospace; - font-size: 12px; - margin: 20px 20px 20px 0px; - color: #333; - white-space: pre-wrap; - white-space: -moz-pre-wrap; - word-wrap: break-word; - } - - code .line { - padding-left: 10px; - } - - h3 { - font-family: sans-serif; - margin: 2px 0px 0px 0px; - padding: 8px 0px 0px 0px; - border-top: 1px solid #ddd; - } - - p { - padding: 0px; - margin: 0px 0px 10px 0px; - } - - li, pre { - padding: 0px; - margin: 0px; - } - - .collapsed { - display: none; - } - - .highlight { - font-weight: bold; - color: darkred; - } - - #kohana_error .message { - display: block; - padding-bottom: 10px; - } - - .source { - border: solid 1px #ccc; - background: #efe; - margin-bottom: 5px; - } - - table { - width: 100%; - display: block; - margin: 0 0 0.4em; - padding: 0; - border-collapse: collapse; - background: #efe; - } - - table td { - border: solid 1px #ddd; - text-align: left; - vertical-align: top; - padding: 0.4em; - } - - .args table td.key { - width: 200px; - } - - .number { - padding-right: 1em; - } - </style> - <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> - <title><?= t("Something went wrong!") ?></title> - - <script type="text/javascript"> - function koggle(elem) { - elem = document.getElementById(elem); - if (elem.style && elem.style["display"]) { - // Only works with the "style" attr - var disp = elem.style["display"]; - } else { - if (elem.currentStyle) { - // For MSIE, naturally - var disp = elem.currentStyle["display"]; - } else { - if (window.getComputedStyle) { - // For most other browsers - var disp = document.defaultView.getComputedStyle(elem, null).getPropertyValue('display'); - } - } - } - - // Toggle the state of the "display" style - elem.style.display = disp == 'block' ? 'none' : 'block'; - return false; - } - </script> - </head> - <body> - <? try { $user = identity::active_user(); } catch (Exception $e) { } ?> - <? $admin = php_sapi_name() == "cli" || (class_exists("User_Model") && isset($user) && $user->admin) ?> - <div class="big_box" id="framework_error"> - <h1> - <?= t("Dang... Something went wrong!") ?> - </h1> - <h2> - <?= t("We tried really hard, but it's broken.") ?> - </h2> - <? if (!$admin): ?> - <p> - <?= t("Talk to your Gallery administrator for help fixing this!") ?> - </p> - <? endif ?> - </div> - <? if ($admin): ?> - <div class="big_box" id="error_details"> - <h2> - <?= t("Hey wait, you're an admin! We can tell you stuff.") ?> - </h2> - <div id="kohana_error"> - <h3> - <span class="type"> - <?= $type?> [ <?= $code ?> ]: - </span> - <span class="message"> - <?= $message?> - </span> - </h3> - <div id="<?= $error_id ?>" class="content"> - <ol class="trace"> - <li class="snippet"> - <p> - <span class="file"> - <?= Kohana_Exception::debug_path($file)?>[ <?= $line?> ] - </span> - </p> - - <div class="source"> - <? if (Kohana_Exception::$source_output and $source_code = Kohana_Exception::debug_source($file, $line)): ?><code><? foreach ($source_code as $num => $row): ?><span class="line <?= ($num == $line) ? "highlight" : ""?>"><span class="number"><?= $num ?></span><?= htmlspecialchars($row, ENT_NOQUOTES, Kohana::CHARSET) ?></span><? endforeach ?></code> - <? endif ?> - </div> - </li> - - <? if (Kohana_Exception::$trace_output): ?> - <? foreach (Kohana_Exception::trace($trace) as $i => $step): ?> - <li class="snippet"> - <p> - <span class="file"> - <? if ($step["file"]): $source_id = "$error_id.source.$i" ?> - <? if (Kohana_Exception::$source_output and $step["source"]): ?> - <a href="#<?= $source_id ?>" onclick="return koggle('<?= $source_id ?>')"><?= Kohana_Exception::debug_path($step["file"])?>[ <?= $step["line"]?> ]</a> - <? else: ?> - <span class="file"><?= Kohana_Exception::debug_path($step["file"])?>[ <?= $step["line"]?> ]</span> - <? endif ?> - <? else: ?> - {<?= t("PHP internal call")?>} - <? endif?> - </span> - » - <?= $step["function"]?>(<? if ($step["args"]): $args_id = "$error_id.args.$i" ?> - <a href="#<?= $args_id ?>" onclick="return koggle('<?= $args_id ?>')"><?= t("arguments")?></a> - <? endif?>) - </p> - <? if (isset($args_id)): ?> - <div id="<?= $args_id ?>" class="args collapsed"> - <table cellspacing="0"> - <? foreach ($step["args"] as $name => $arg): ?> - <tr> - <td class="key"> - <pre><?= $name?></pre> - </td> - <td class="value"> - <pre><?= Kohana_Exception::safe_dump($arg, $name) ?></pre> - </td> - </tr> - <? endforeach?> - </table> - </div> - <? endif?> - <? if (Kohana_Exception::$source_output and $step["source"] and isset($source_id)): ?> - <pre id="<?= $source_id ?>" class="source collapsed"><code><? foreach ($step["source"] as $num => $row): ?><span class="line <?= ($num == $step["line"]) ? "highlight" : "" ?>"><span class="number"><?= $num ?></span><?= htmlspecialchars($row, ENT_NOQUOTES, Kohana::CHARSET) ?></span><? endforeach ?></code></pre> - <? endif?> - </li> - <? unset($args_id, $source_id) ?> - <? endforeach?> - </ol> - <? endif ?> - - </div> - <h2> - <a href="#<?= $env_id = $error_id."environment" ?>" onclick="return koggle('<?= $env_id ?>')"><?= t("Environment")?></a> - </h2> - <div id="<?= $env_id ?>" class="content collapsed"> - <? $included = get_included_files()?> - <h3><a href="#<?= $env_id = $error_id."environment_included" ?>" onclick="return koggle('<?= $env_id ?>')"><?= t("Included files")?></a>(<?= count($included)?>)</h3> - <div id="<?= $env_id ?>" class="collapsed"> - <table cellspacing="0"> - <? foreach ($included as $file): ?> - <tr> - <td> - <pre><?= Kohana_Exception::debug_path($file)?></pre> - </td> - </tr> - <? endforeach?> - </table> - </div> - <? $included = get_loaded_extensions()?> - <h3><a href="#<?= $env_id = $error_id."environment_loaded" ?>" onclick="return koggle('<?= $env_id ?>')"><?= t("Loaded extensions")?></a>(<?= count($included)?>)</h3> - <div id="<?= $env_id ?>" class="collapsed"> - <table cellspacing="0"> - <? foreach ($included as $file): ?> - <tr> - <td> - <pre><?= Kohana_Exception::debug_path($file)?></pre> - </td> - </tr> - <? endforeach?> - </table> - </div> - <? foreach (array("_SESSION", "_GET", "_POST", "_FILES", "_COOKIE", "_SERVER") as $var): ?> - <? if ( empty($GLOBALS[$var]) OR ! is_array($GLOBALS[$var])) continue ?> - <h3><a href="#<?= $env_id = "$error_id.environment" . strtolower($var) ?>" - onclick="return koggle('<?= $env_id ?>')">$<?= $var?></a></h3> - <div id="<?= $env_id ?>" class="collapsed"> - <table cellspacing="0"> - <? foreach ($GLOBALS[$var] as $key => $value): ?> - <tr> - <td class="key"> - <code> - <?= $key?> - </code> - </td> - <td class="value"> - <pre><?= Kohana_Exception::safe_dump($value, $key) ?></pre> - </td> - </tr> - <? endforeach?> - </table> - </div> - <? endforeach?> - </div> - </div> - </div> - <? endif ?> - </body> -</html> +<? +// This is the template for all HTML errors. If you're throwing an exception and you want your +// error to appear differently, extend Kohana_Exception and specify a different template. + +// Log validation exceptions to ease debugging +if ($e instanceof ORM_Validation_Exception) { + Kohana_Log::add("error", "Validation errors: " . print_r($e->validation->errors(), 1)); +} + +if (php_sapi_name() == "cli") { + include Kohana::find_file("views", "error_cli.txt"); + return; +} + +try { + // Admins get a special error page + $user = identity::active_user(); + if ($user && $user->admin) { + include Kohana::find_file("views", "error_admin.html"); + return; + } +} catch (Exception $ignored) { +} + +// Try to show a themed error page for 404 errors +if ($e instanceof Kohana_404_Exception) { + $view = new Theme_View("page.html", "other", "error"); + $view->page_title = t("Dang... Page not found!"); + $view->content = new View("error_404.html"); + $user = identity::active_user(); + $view->content->is_guest = $user && $user->guest; + if ($view->content->is_guest) { + $view->content->login_form = new View("login_ajax.html"); + $view->content->login_form->form = auth::get_login_form("login/auth_html"); + } + print $view; + return; +} + +header("HTTP/1.1 500 Internal Server Error"); +include Kohana::find_file("views", "error_user.html"); +?> |