X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=lib%2Ferror.php;h=03a1960c620bdc124836e16f276426b2f210185f;hb=5beea658a463609933ea11f6c0f0fd1773daddc6;hp=6a9b76be11b97391f41ac13292ed76f38bdeba2a;hpb=b3b3af9a2eff10c272bb213eccd3dd3060bc5830;p=quix0rs-gnu-social.git diff --git a/lib/error.php b/lib/error.php index 6a9b76be11..03a1960c62 100644 --- a/lib/error.php +++ b/lib/error.php @@ -42,7 +42,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 * @link http://status.net/ */ -class ErrorAction extends Action +class ErrorAction extends InfoAction { static $status = array(); @@ -50,12 +50,13 @@ class ErrorAction extends Action var $message = null; var $default = null; - function __construct($message, $code, $output='php://output', $indent=true) + function __construct($message, $code, $output='php://output', $indent=null) { - parent::__construct($output, $indent); + parent::__construct(null, $message, $output, $indent); $this->code = $code; $this->message = $message; + $this->minimal = GNUsocial::isApi(); // XXX: hack alert: usually we aren't going to // call this page directly, but because it's @@ -63,15 +64,23 @@ class ErrorAction extends Action $this->prepare($_REQUEST); } - /** - * To specify additional HTTP headers for the action - * - * @return void - */ - function extraHeaders() + function showPage() { - $status_string = $this->status[$this->code]; - header('HTTP/1.1 '.$this->code.' '.$status_string); + if (GNUsocial::isAjax()) { + $this->extraHeaders(); + $this->ajaxErrorMsg(); + exit(); + } if ($this->minimal) { + // Even more minimal -- we're in a machine API + // and don't want to flood the output. + $this->extraHeaders(); + $this->showContent(); + } else { + parent::showPage(); + } + + // We don't want to have any more output after this + exit(); } /** @@ -84,56 +93,30 @@ class ErrorAction extends Action $this->element('div', array('class' => 'error'), $this->message); } - /** - * Page title. - * - * @return page title - */ - - function title() - { - return self::$status[$this->code]; - } - - function isReadOnly($args) + function showNoticeForm() { - return true; } - function showPage() - { - parent::showPage(); - - // We don't want to have any more output after this - exit(); - } - - // Overload a bunch of stuff so the page isn't too bloated + /** + * Show an Ajax-y error message + * + * Goes back to the browser, where it's shown in a popup. + * + * @param string $msg Message to show + * + * @return void + */ - function showBody() + function ajaxErrorMsg() { - $this->elementStart('body', array('id' => 'error')); - $this->elementStart('div', array('id' => 'wrap')); - $this->showHeader(); - $this->showCore(); - $this->showFooter(); - $this->elementEnd('div'); + $this->startHTML('text/xml;charset=utf-8', true); + $this->elementStart('head'); + // TRANS: Page title after an AJAX error occurs on the send notice page. + $this->element('title', null, _('Ajax Error')); + $this->elementEnd('head'); + $this->elementStart('body'); + $this->element('p', array('id' => 'error'), $this->message); $this->elementEnd('body'); + $this->endHTML(); } - - function showCore() - { - $this->elementStart('div', array('id' => 'core')); - $this->showContentBlock(); - $this->elementEnd('div'); - } - - function showHeader() - { - $this->elementStart('div', array('id' => 'header')); - $this->showLogo(); - $this->showPrimaryNav(); - $this->elementEnd('div'); - } - }