[Action] Fix action=ajax
authorKrinkle <krinkle@users.mediawiki.org>
Sat, 21 Jan 2012 20:13:57 +0000 (20:13 +0000)
committerKrinkle <krinkle@users.mediawiki.org>
Sat, 21 Jan 2012 20:13:57 +0000 (20:13 +0000)
* Move Ajax stuff to before regular title/page action handling. Ajax actions circumvent most stuff and return early from the regular execution.
* Needed because getAction / Action-classes can't handle action=ajax properly, which isn't until MediaWiki::performAction
* Also undo's debug 'true' in the if-statement from r109688

includes/Wiki.php

index eaa3996..bea3061 100644 (file)
@@ -547,20 +547,28 @@ class MediaWiki {
 
                wfProfileIn( __METHOD__ );
 
-               // Get title from request parameters,
-               // is set on the fly by parseTitle the first time.
-               $title = $this->getTitle();
-               $action = $this->getAction();
-               $wgTitle = $title;
+               $request = $this->context->getRequest();
 
                // Send Ajax requests to the Ajax dispatcher.
-               if ( $wgUseAjax && true ) {
+               if ( $wgUseAjax && $request->getVal( 'action', 'view' ) == 'ajax' ) {
+
+                       // Set a dummy title, because $wgTitle == null might break things
+                       $title = Title::makeTitle( NS_MAIN, 'AJAX' );
+                       $this->context->setTitle( $title );
+                       $wgTitle = $title;
+
                        $dispatcher = new AjaxDispatcher();
                        $dispatcher->performAction();
                        wfProfileOut( __METHOD__ );
                        return;
                }
 
+               // Get title from request parameters,
+               // is set on the fly by parseTitle the first time.
+               $title = $this->getTitle();
+               $action = $this->getAction();
+               $wgTitle = $title;
+
                if ( $wgUseFileCache && $title->getNamespace() >= 0 ) {
                        wfProfileIn( 'main-try-filecache' );
                        if ( HTMLFileCache::useFileCache( $this->context ) ) {