New infrastructure for actions, as discussed on wikitech-l. Fairly huge commit.
[lhc/web/wiklou.git] / includes / EditPage.php
index 9db10d7..fb6f2bc 100644 (file)
@@ -42,7 +42,14 @@ class EditPage {
        const AS_IMAGE_REDIRECT_ANON       = 233;
        const AS_IMAGE_REDIRECT_LOGGED     = 234;
 
+       /**
+        * @var Article
+        */
        var $mArticle;
+
+       /**
+        * @var Title
+        */
        var $mTitle;
        private $mContextTitle = null;
        var $action;
@@ -371,6 +378,8 @@ class EditPage {
                if ( $wgUser->getOption( 'uselivepreview', false ) ) {
                        $wgOut->addModules( 'mediawiki.legacy.preview' );
                }
+               // Bug #19334: textarea jumps when editing articles in IE8
+               $wgOut->addStyle( 'common/IE80Fixes.css', 'screen', 'IE 8' );
 
                $permErrors = $this->getEditPermissionErrors();
                if ( $permErrors ) {
@@ -978,7 +987,6 @@ class EditPage {
                        # Article exists. Check for edit conflict.
 
                        $this->mArticle->clear(); # Force reload of dates, etc.
-                       $this->mArticle->forUpdate( true ); # Lock the article
 
                        wfDebug( "timestamp: {$this->mArticle->getTimestamp()}, edittime: {$this->edittime}\n" );
 
@@ -1145,9 +1153,9 @@ class EditPage {
                        $dbw = wfGetDB( DB_MASTER );
                        $dbw->begin();
                        if ( $this->watchthis ) {
-                               $this->mArticle->doWatch();
+                               Action::factory( 'watch', $this->mArticle )->execute();
                        } else {
-                               $this->mArticle->doUnwatch();
+                               Action::factory( 'watch', $this->mArticle )->execute();
                        }
                        $dbw->commit();
                }
@@ -1347,9 +1355,12 @@ HTML
 
                        // It is better to not parse the comment at all than to have templates expanded in the middle
                        // TODO: can the checkLabel be moved outside of the div so that wrapWikiMsg could be used?
+                       $key = $comment === ''
+                               ? 'confirmrecreate-noreason'
+                               : 'confirmrecreate';
                        $wgOut->addHTML(
                                '<div class="mw-confirm-recreate">' .
-                               wfMsgExt( 'confirmrecreate', 'parseinline', $username, "<nowiki>$comment</nowiki>" ) .
+                               wfMsgExt( $key, 'parseinline', $username, "<nowiki>$comment</nowiki>" ) .
                                Xml::checkLabel( wfMsg( 'recreate' ), 'wpRecreate', 'wpRecreate', false,
                                        array( 'title' => $sk->titleAttrib( 'recreate' ), 'tabindex' => 1, 'id' => 'wpRecreate' )
                                ) .
@@ -2256,16 +2267,19 @@ HTML
                $imagesAvailable = $wgEnableUploads || count( $wgForeignFileRepos );
 
                /**
-
-                * toolarray an array of arrays which each include the filename of
-                * the button image (without path), the opening tag, the closing tag,
-                * and optionally a sample text that is inserted between the two when no
-                * selection is highlighted.
-                * The tip text is shown when the user moves the mouse over the button.
+                * $toolarray is an array of arrays each of which includes the
+                * filename of the button image (without path), the opening
+                * tag, the closing tag, optionally a sample text that is
+                * inserted between the two when no selection is highlighted
+                * and an option to select which switches the automatic
+                * selection of inserted text (default is true, see
+                * mw-editbutton-image).  The tip text is shown when the user
+                * moves the mouse over the button.
                 *
-                * Already here are accesskeys (key), which are not used yet until someone
-                * can figure out a way to make them work in IE. However, we should make
-                * sure these keys are not defined on the edit page.
+                * Also here: accesskeys (key), which are not used yet until
+                * someone can figure out a way to make them work in
+                * IE. However, we should make sure these keys are not defined
+                * on the edit page.
                 */
                $toolarray = array(
                        array(
@@ -2320,7 +2334,8 @@ HTML
                                'close'  => ']]',
                                'sample' => wfMsg( 'image_sample' ),
                                'tip'    => wfMsg( 'image_tip' ),
-                               'key'    => 'D'
+                               'key'    => 'D',
+                               'select' => true
                        ) : false,
                        $imagesAvailable ? array(
                                'image'  => $wgLang->getImageFile( 'button-media' ),
@@ -2376,6 +2391,10 @@ HTML
                                continue;
                        }
 
+                       if( !isset( $tool['select'] ) ) {
+                         $tool['select'] = true;
+                       }
+
                        $params = array(
                                $image = $wgStylePath . '/common/images/' . $tool['image'],
                                // Note that we use the tip both for the ALT tag and the TITLE tag of the image.