Merge "Rewrite pref cleanup script"
[lhc/web/wiklou.git] / includes / page / Article.php
index df189af..dadf311 100644 (file)
@@ -75,6 +75,13 @@ class Article implements Page {
        /** @var ParserOutput */
        public $mParserOutput;
 
+       /**
+        * @var bool Whether render() was called. With the way subclasses work
+        * here, there doesn't seem to be any other way to stop calling
+        * OutputPage::enableSectionEditLinks() and still have it work as it did before.
+        */
+       private $disableSectionEditForRender = false;
+
        /**
         * Constructor and clear the article
         * @param Title $title Reference to a Title object.
@@ -469,12 +476,17 @@ class Article implements Page {
                $parserCache = MediaWikiServices::getInstance()->getParserCache();
 
                $parserOptions = $this->getParserOptions();
+               $poOptions = [];
                # Render printable version, use printable version cache
                if ( $outputPage->isPrintable() ) {
                        $parserOptions->setIsPrintable( true );
                        $parserOptions->setEditSection( false );
-               } elseif ( !$this->isCurrent() || !$this->getTitle()->quickUserCan( 'edit', $user ) ) {
+                       $poOptions['enableSectionEditLinks'] = false;
+               } elseif ( $this->disableSectionEditForRender
+                       || !$this->isCurrent() || !$this->getTitle()->quickUserCan( 'edit', $user )
+               ) {
                        $parserOptions->setEditSection( false );
+                       $poOptions['enableSectionEditLinks'] = false;
                }
 
                # Try client and file cache
@@ -533,7 +545,7 @@ class Article implements Page {
                                                        } else {
                                                                wfDebug( __METHOD__ . ": showing parser cache contents\n" );
                                                        }
-                                                       $outputPage->addParserOutput( $this->mParserOutput );
+                                                       $outputPage->addParserOutput( $this->mParserOutput, $poOptions );
                                                        # Ensure that UI elements requiring revision ID have
                                                        # the correct version information.
                                                        $outputPage->setRevisionId( $this->mPage->getLatest() );
@@ -590,14 +602,14 @@ class Article implements Page {
                                                        $outputPage->setRobotPolicy( 'noindex,nofollow' );
 
                                                        $errortext = $error->getWikiText( false, 'view-pool-error' );
-                                                       $outputPage->addWikiText( '<div class="errorbox">' . $errortext . '</div>' );
+                                                       $outputPage->addWikiText( Html::errorBox( $errortext ) );
                                                }
                                                # Connection or timeout error
                                                return;
                                        }
 
                                        $this->mParserOutput = $poolArticleView->getParserOutput();
-                                       $outputPage->addParserOutput( $this->mParserOutput );
+                                       $outputPage->addParserOutput( $this->mParserOutput, $poOptions );
                                        if ( $content->getRedirectTarget() ) {
                                                $outputPage->addSubtitle( "<span id=\"redirectsub\">" .
                                                        $this->getContext()->msg( 'redirectpagesub' )->parse() . "</span>" );
@@ -1515,6 +1527,7 @@ class Article implements Page {
                $this->getContext()->getRequest()->response()->header( 'X-Robots-Tag: noindex' );
                $this->getContext()->getOutput()->setArticleBodyOnly( true );
                $this->getContext()->getOutput()->enableSectionEditLinks( false );
+               $this->disableSectionEditForRender = true;
                $this->view();
        }