]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
return Ajax-y XML on exceptions
authorEvan Prodromou <evan@status.net>
Wed, 16 Mar 2011 22:53:46 +0000 (18:53 -0400)
committerEvan Prodromou <evan@status.net>
Wed, 16 Mar 2011 22:53:46 +0000 (18:53 -0400)
lib/action.php
lib/error.php
lib/statusnet.php

index 51d7e8923e6f0d5952f09006539735c7cea8ddd8..20de71aec1cf8f9ab980d40b897c4c44eb05a86a 100644 (file)
@@ -83,6 +83,11 @@ class Action extends HTMLOutputter // lawsuit
     function prepare($argarray)
     {
         $this->args =& common_copy_args($argarray);
+
+        if ($this->boolean('ajax')) {
+            StatusNet::setAjax(true);
+        }
+
         return true;
     }
 
index d234ab92b2bdbf8346e17802b284802614eb5952..4024a9affc37290f1b530afcbce6c9215eb8d128 100644 (file)
@@ -68,7 +68,11 @@ class ErrorAction extends InfoAction
 
     function showPage()
     {
-        if ($this->minimal) {
+        if (StatusNet::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();
@@ -94,4 +98,27 @@ class ErrorAction extends InfoAction
     function showNoticeForm()
     {
     }
+
+    /**
+     * 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 ajaxErrorMsg()
+    {
+        $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->elementEnd('html');
+    }
 }
index 4c2aacd8f7d229994e41e9be75d2fdafafa25878..648369ec4482ebf9f1f347aa382d12b13c9d2eee 100644 (file)
@@ -31,6 +31,7 @@ class StatusNet
 {
     protected static $have_config;
     protected static $is_api;
+    protected static $is_ajax;
     protected static $plugins = array();
 
     /**
@@ -230,6 +231,16 @@ class StatusNet
         self::$is_api = $mode;
     }
 
+    public function isAjax()
+    {
+        return self::$is_ajax;
+    }
+
+    public function setAjax($mode)
+    {
+        self::$is_ajax = $mode;
+    }
+
     /**
      * Build default configuration array
      * @return array