}
// }}}
+// {{{ register error report
+
+$(function() {
+ $(window).error(function(error) {
+ if ($.xsrf_token) {
+ $.ajax({
+ url: $.plURL('site_errors/register'),
+ type: 'POST',
+ data: {
+ url: "" + window.location,
+ token: $.xsrf_token,
+ error: JSON.stringify({
+ message: error.originalEvent.message,
+ file: error.originalEvent.filename,
+ line: error.originalEvent.lineno
+ })
+ }
+ });
+ }
+ });
+});
+
+// }}}
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
'assert_errors' => $this->make_hook('siteerror', AUTH_COOKIE, 'admin'),
'site_errors' => $this->make_hook('siteerror', AUTH_COOKIE, 'admin'),
'site_errors/rss' => $this->make_token_hook('siteerror_rss', AUTH_COOKIE, 'admin'),
+ 'site_errors/register' => $this->make_hook('register_error', AUTH_PUBLIC),
'embedded' => $this->make_hook('embedded', AUTH_PUBLIC),
$page->assign('errors', PlErrorReport::iterate());
}
+ function handler_register_error($page)
+ {
+ if (S::has_xsrf_token() && Post::has('error') && Post::has('url')) {
+ PlErrorReport::report("Client error on " . Post::s('url') . ":\n\n" . Post::s('error'));
+ }
+ exit;
+ }
+
function handler_siteerror_rss(PlPage $page, PlUser $user)
{
return PlErrorReport::feed($page, $user);