(bug 10268) Added linktodiffs parameter on action=feedwatchlist
[lhc/web/wiklou.git] / includes / EditPage.php
index 2150656..b190237 100644 (file)
@@ -274,6 +274,24 @@ class EditPage {
                return $this->deletedSinceEdit;
        }
 
+       /**
+        * Checks whether the user entered a skin name in uppercase,
+        * e.g. "User:Example/Monobook.css" instead of "monobook.css"
+        */
+       protected function isWrongCaseCssJsPage() {
+               if( $this->mTitle->isCssJsSubpage() ) {
+                       $name = $this->mTitle->getSkinFromCssJsSubpage();
+                       $skins = array_merge(
+                               array_keys( Skin::getSkinNames() ),
+                               array( 'common' )
+                       );
+                       return !in_array( $name, $skins )
+                               && in_array( strtolower( $name ), $skins );
+               } else {
+                       return false;
+               }
+       }
+
        function submit() {
                $this->edit();
        }
@@ -360,7 +378,7 @@ class EditPage {
                $this->isCssJsSubpage      = $this->mTitle->isCssJsSubpage();
                $this->isCssSubpage        = $this->mTitle->isCssSubpage();
                $this->isJsSubpage         = $this->mTitle->isJsSubpage();
-               $this->isValidCssJsSubpage = $this->mTitle->isValidCssJsSubpage();
+               $this->isWrongCaseCssJsPage = $this->isWrongCaseCssJsPage();
 
                # Show applicable editing introductions
                if ( $this->formtype == 'initial' || $this->firsttime )
@@ -1137,6 +1155,7 @@ class EditPage {
                        # Already watched
                        $this->watchthis = true;
                }
+               if ( $wgUser->getOption( 'minordefault' ) ) $this->minoredit = true;
                if ( $this->textbox1 === false ) return false;
                wfProxyCheck();
                return true;
@@ -1406,7 +1425,7 @@ HTML
                } else {
                        if ( $this->isCssJsSubpage ) {
                                # Check the skin exists
-                               if ( !$this->isValidCssJsSubpage ) {
+                               if ( $this->isWrongCaseCssJsPage ) {
                                        $wgOut->wrapWikiMsg( "<div class='error' id='mw-userinvalidcssjstitle'>\n$1\n</div>", array( 'userinvalidcssjstitle', $wgTitle->getSkinFromCssJsSubpage() ) );
                                }
                                if ( $this->formtype !== 'preview' ) {
@@ -1456,13 +1475,16 @@ HTML
                }
 
                if ( $this->tooBig || $this->kblength > $wgMaxArticleSize ) {
-                       $wgOut->addHTML( "<div class='error' id='mw-edit-longpageerror'>\n" );
-                       $wgOut->addWikiMsg( 'longpageerror', $wgLang->formatNum( $this->kblength ), $wgLang->formatNum( $wgMaxArticleSize ) );
-                       $wgOut->addHTML( "</div>\n" );
-               } elseif ( $this->kblength > 29 ) {
-                       $wgOut->addHTML( "<div id='mw-edit-longpagewarning'>\n" );
-                       $wgOut->addWikiMsg( 'longpagewarning', $wgLang->formatNum( $this->kblength ) );
-                       $wgOut->addHTML( "</div>\n" );
+                       $wgOut->wrapWikiMsg( "<div class='error' id='mw-edit-longpageerror'>\n$1\n</div>",
+                               array( 'longpageerror', $wgLang->formatNum( $this->kblength ), $wgLang->formatNum( $wgMaxArticleSize ) ) );
+               } else {
+                       $msg = 'longpage-hint';
+                       $text = wfMsg( $msg );
+                       if( !wfEmptyMsg( $msg, $text ) && $text !== '-' ) {
+                               $wgOut->wrapWikiMsg( "<div id='mw-edit-longpage-hint'>\n$1\n</div>",
+                                       array( 'longpage-hint', $wgLang->formatSize( strlen( $this->textbox1 ) ), strlen( $this->textbox1 ) )
+                               );
+                       }
                }
        }
 
@@ -2003,6 +2025,7 @@ HTML
         * Produce the stock "your edit contains spam" page
         *
         * @param $match Text which triggered one or more filters
+        * @deprecated Use method spamPageWithContent() instead
         */
        static function spamPage( $match = false ) {
                global $wgOut, $wgTitle;
@@ -2021,6 +2044,38 @@ HTML
                $wgOut->returnToMain( false, $wgTitle );
        }
 
+       /**
+        * Show "your edit contains spam" page with your diff and text
+        *
+        * @param $match Text which triggered one or more filters
+        */
+       public function spamPageWithContent( $match = false ) {
+               global $wgOut, $wgTitle;
+               $this->textbox2 = $this->textbox1;
+
+               $wgOut->setPageTitle( wfMsg( 'spamprotectiontitle' ) );
+               $wgOut->setRobotPolicy( 'noindex,nofollow' );
+               $wgOut->setArticleRelated( false );
+
+               $wgOut->addHTML( '<div id="spamprotected">' );
+               $wgOut->addWikiMsg( 'spamprotectiontext' );
+               if ( $match ) {
+                       $wgOut->addWikiMsg( 'spamprotectionmatch', wfEscapeWikiText( $match ) );
+               }
+               $wgOut->addHTML( '</div>' );
+
+               $wgOut->wrapWikiMsg( '<h2>$1</h2>', "yourdiff" );
+               $de = new DifferenceEngine( $this->mTitle );
+               $de->setText( $this->getContent(), $this->textbox2 );
+               $de->showDiff( wfMsg( "storedversion" ), wfMsg( "yourtext" ) );
+
+               $wgOut->wrapWikiMsg( '<h2>$1</h2>', "yourtext" );
+               $this->showTextbox2();
+
+               $wgOut->addReturnTo( $wgTitle, array( 'action' => 'edit' ) );
+       }
+
+
        /**
         * @private
         * @todo document
@@ -2228,7 +2283,9 @@ HTML
 
                $script = '';
                foreach ( $toolarray as $tool ) {
-                       if ( !$tool ) continue;
+                       if ( !$tool ) {
+                               continue;
+                       }
 
                        $params = array(
                                $image = $wgStylePath . '/common/images/' . $tool['image'],
@@ -2312,7 +2369,7 @@ HTML
         *
         * @return array
         */
-       public function getEditButtons(&$tabindex) {
+       public function getEditButtons( &$tabindex ) {
                $buttons = array();
 
                $temp = array(
@@ -2594,7 +2651,7 @@ HTML
                                return false;
 
                        case self::AS_SPAM_ERROR:
-                               self::spamPage( $resultDetails['spam'] );
+                               $this->spamPageWithContent( $resultDetails['spam'] );
                                return false;
 
                        case self::AS_BLOCKED_PAGE_FOR_USER: