Improved AJAX error messages
authorAlexander Ebert <ebert@woltlab.com>
Wed, 12 Feb 2014 20:39:18 +0000 (21:39 +0100)
committerAlexander Ebert <ebert@woltlab.com>
Wed, 12 Feb 2014 20:39:18 +0000 (21:39 +0100)
wcfsetup/install/files/lib/action/AJAXInvokeAction.class.php
wcfsetup/install/files/lib/action/AbstractSecureAction.class.php
wcfsetup/install/files/lib/system/exception/AJAXException.class.php
wcfsetup/install/lang/de.xml
wcfsetup/install/lang/en.xml

index aa523b61c7466e8d823ecce825dcbd76f69b4fa3..18f6da8ef38f4af3ce9c9d34760921dbeb4f88aa 100644 (file)
@@ -12,6 +12,7 @@ use wcf\system\WCF;
 use wcf\util\ClassUtil;
 use wcf\util\JSON;
 use wcf\util\StringUtil;
+use wcf\system\exception\InvalidSecurityTokenException;
 
 /**
  * Default implementation for AJAX-based method calls.
@@ -158,7 +159,7 @@ class AJAXInvokeAction extends AbstractSecureAction {
                        throw $e;
                }
                
-               if ($e instanceof IllegalLinkException) {
+               if ($e instanceof InvalidSecurityTokenException) {
                        throw new AJAXException(WCF::getLanguage()->get('wcf.ajax.error.sessionExpired'), AJAXException::SESSION_EXPIRED, $e->getTraceAsString());
                }
                else if ($e instanceof PermissionDeniedException) {
@@ -167,6 +168,9 @@ class AJAXInvokeAction extends AbstractSecureAction {
                else if ($e instanceof SystemException) {
                        throw new AJAXException($e->getMessage(), AJAXException::INTERNAL_ERROR, $e->__getTraceAsString(), array(), $e->getExceptionID());
                }
+               else if ($e instanceof IllegalLinkException) {
+                       throw new AJAXException(WCF::getLanguage()->get('wcf.ajax.error.illegalLink'), AJAXException::ILLEGAL_LINK, $e->getTraceAsString());
+               }
                else if ($e instanceof UserInputException) {
                        // repackage as ValidationActionException
                        $exception = new ValidateActionException($e->getField(), $e->getType(), $e->getVariables());
index 489f9df0d14018d0d369305af39b35f2b1fa3d06..4dd8add3e61a707926b694ce6d5c0ddfd55c3baa 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 namespace wcf\action;
-use wcf\system\exception\IllegalLinkException;
+use wcf\system\exception\InvalidSecurityTokenException;
 use wcf\system\WCF;
 
 /**
@@ -30,7 +30,7 @@ abstract class AbstractSecureAction extends AbstractAction {
         */
        protected function checkSecurityToken() {
                if (!isset($_REQUEST['t']) || !WCF::getSession()->checkSecurityToken($_REQUEST['t'])) {
-                       throw new IllegalLinkException();
+                       throw new InvalidSecurityTokenException();
                }
        }
 }
index ed89d91e9a6aa1fecdabbac24e491ada257c456e..854b41f9053c5cc79b7f3239bcbe471ad8b6d186 100644 (file)
@@ -7,7 +7,7 @@ use wcf\util\JSON;
  * AJAXException provides JSON-encoded exceptions.
  * 
  * @author     Alexander Ebert
- * @copyright  2001-2013 WoltLab GmbH
+ * @copyright  2001-2014 WoltLab GmbH
  * @license    GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
  * @package    com.woltlab.wcf
  * @subpackage system.exception
@@ -32,6 +32,12 @@ class AJAXException extends LoggedException {
         */
        const INSUFFICIENT_PERMISSIONS = 403;
        
+       /**
+        * illegal link
+        * @var integer
+        */
+       const ILLEGAL_LINK = 404;
+       
        /**
         * bad parameters
         * @var integer
index a2b24facb19ddd48760f5296ec7359e38c2ba280..a7cb41a19fcbd03cf5eb56762f11d3b06849a2cd 100644 (file)
@@ -1374,6 +1374,7 @@ Wenn Sie unter <em>System -&gt; Optionen -&gt; Allgemein -&gt; E-Mails</em> alle
        </category>
        
        <category name="wcf.ajax">
+               <item name="wcf.ajax.error.illegalLink"><![CDATA[Der Server konnte die Anfrage nicht verarbeiten, weil das Ziel unbekannt ist oder nicht mehr zur Verfügung steht.]]></item>
                <item name="wcf.ajax.error.invalidParameter"><![CDATA[Der Parameter „{$fieldName}“ fehlt oder ist ungültig.]]></item>
                <item name="wcf.ajax.error.badRequest"><![CDATA[Die Anfrage war unvollständig und konnte nicht verarbeitet werden.]]></item>
                <item name="wcf.ajax.error.internalError"><![CDATA[Es ist ein Fehler bei der Verarbeitung aufgetreten, bitte versuchen Sie es später erneut.]]></item>
@@ -1789,6 +1790,8 @@ Fehler sind beispielsweise:
        <category name="wcf.imageViewer">
                <item name="wcf.imageViewer.button.enlarge"><![CDATA[Vollbild-Modus]]></item>
                <item name="wcf.imageViewer.button.full"><![CDATA[Originalversion aufrufen]]></item>
+               <item name="wcf.imageViewer.button.openSlideshow"><![CDATA[Slideshow]]></item>
+               
                <item name="wcf.imageViewer.close"><![CDATA[Schließen]]></item>
                <item name="wcf.imageViewer.counter"><![CDATA[{literal}Bild {x} von {y}{/literal}]]></item>
                <item name="wcf.imageViewer.enlarge"><![CDATA[Bild direkt anzeigen]]></item>
index 46adc49c5d412d84aa3062c7cb48a45e47dcc9ff..ea6afdc846064d890060c5312c4d2d9be92e2a37 100644 (file)
@@ -1374,6 +1374,7 @@ You can define the default sender in <em>System -&gt; Options -&gt; General -&gt
        </category>
        
        <category name="wcf.ajax">
+               <item name="wcf.ajax.error.illegalLink"><![CDATA[The server was unable to process your request because the target is unknown or no longer available.]]></item>
                <item name="wcf.ajax.error.invalidParameter"><![CDATA[Parameter “{$fieldName}” is missing or invalid.]]></item>
                <item name="wcf.ajax.error.badRequest"><![CDATA[The server was unable to proceed your request due to an incomplete request.]]></item>
                <item name="wcf.ajax.error.internalError"><![CDATA[The server encountered an unresolvable problem, please try again later.]]></item>
@@ -1788,6 +1789,8 @@ Errors are:
        <category name="wcf.imageViewer">
                <item name="wcf.imageViewer.button.enlarge"><![CDATA[Fullscreen Mode]]></item>
                <item name="wcf.imageViewer.button.full"><![CDATA[View Source Image]]></item>
+               <item name="wcf.imageViewer.button.openSlideshow"><![CDATA[Slideshow]]></item>
+               
                <item name="wcf.imageViewer.close"><![CDATA[Close]]></item>
                <item name="wcf.imageViewer.counter"><![CDATA[{literal}Image {x} of {y}{/literal}]]></item>
                <item name="wcf.imageViewer.enlarge"><![CDATA[View Full Image]]></item>