Merge "messagecache: use MergeableUpdate for the deferred replace() update"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Sat, 6 Oct 2018 03:21:47 +0000 (03:21 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sat, 6 Oct 2018 03:21:47 +0000 (03:21 +0000)
includes/MediaWiki.php
includes/actions/InfoAction.php
includes/specials/SpecialDeletedContributions.php
languages/i18n/en.json
languages/i18n/qqq.json
tests/phpunit/includes/MediaWikiTest.php

index 4636ba3..e10a530 100644 (file)
@@ -369,6 +369,11 @@ class MediaWiki {
                        }
                        throw new HttpError( 500, $message );
                }
+               // Protect against redirects to NS_MEDIA namespace
+               // when the user probably wants NS_FILE
+               if ( $title->inNamespace( NS_MEDIA ) ) {
+                       $title->mNamespace = NS_FILE;
+               }
                $output->setCdnMaxage( 1200 );
                $output->redirect( $targetUrl, '301' );
                return true;
index 11b8bad..1cc4288 100644 (file)
@@ -132,13 +132,18 @@ class InfoAction extends FormlessAction {
                                "mw-pageinfo-${header}"
                        ) . "\n";
                        $table = "\n";
+                       $below = "";
                        foreach ( $infoTable as $infoRow ) {
+                               if ( $infoRow[0] == "below" ) {
+                                       $below = $infoRow[1] . "\n";
+                                       continue;
+                               }
                                $name = ( $infoRow[0] instanceof Message ) ? $infoRow[0]->escaped() : $infoRow[0];
                                $value = ( $infoRow[1] instanceof Message ) ? $infoRow[1]->escaped() : $infoRow[1];
                                $id = ( $infoRow[0] instanceof Message ) ? $infoRow[0]->getKey() : null;
                                $table = $this->addRow( $table, $name, $value, $id ) . "\n";
                        }
-                       $content = $this->addTable( $content, $table ) . "\n";
+                       $content = $this->addTable( $content, $table ) . "\n" . $below;
                }
 
                // Page footer
@@ -504,6 +509,16 @@ class InfoAction extends FormlessAction {
                                $this->msg( "restriction-$restrictionType" ), $message
                        ];
                }
+               $protectLog = SpecialPage::getTitleFor( 'Log' );
+               $pageInfo['header-restrictions'][] = [
+                       'below',
+                       $linkRenderer->makeKnownLink(
+                               $protectLog,
+                               $this->msg( 'pageinfo-view-protect-log' )->text(),
+                               [],
+                               [ 'type' => 'protect', 'page' => $title->getPrefixedText() ]
+                       ),
+               ];
 
                if ( !$this->page->exists() ) {
                        return $pageInfo;
index 3f87712..e4672f8 100644 (file)
@@ -73,7 +73,7 @@ class DeletedContributionsPage extends SpecialPage {
 
                $this->mOpts = $opts;
 
-               $target = $opts->getValue( 'target' );
+               $target = trim( $opts->getValue( 'target' ) );
                if ( !strlen( $target ) ) {
                        $this->getForm();
 
index 30a9699..1d7f3f5 100644 (file)
        "pageinfo-category-files": "Number of files",
        "pageinfo-user-id": "User ID",
        "pageinfo-file-hash": "Hash value",
+       "pageinfo-view-protect-log": "View the protection log for this page.",
        "markaspatrolleddiff": "Mark as patrolled",
        "markaspatrolledlink": "[$1]",
        "markaspatrolledtext": "Mark this page as patrolled",
index eeb0a1c..c4585f3 100644 (file)
        "pageinfo-category-files": "See also:\n* {{msg-mw|Pageinfo-category-pages}}\n* {{msg-mw|Pageinfo-category-subcats}}",
        "pageinfo-user-id": "The numeric ID for a user\n{{Identical|User ID}}",
        "pageinfo-file-hash": "Base-16 SHA-1 value of the file",
+       "pageinfo-view-protect-log": "Contain link to protection link for the current page.",
        "markaspatrolleddiff": "{{doc-actionlink}}\nSee also:\n* {{msg-mw|Markaspatrolledtext}}\n{{Identical|Mark as patrolled}}",
        "markaspatrolledlink": "{{notranslate}}\nParameters:\n* $1 - link which has text {{msg-mw|Markaspatrolledtext}}",
        "markaspatrolledtext": "{{doc-actionlink}}\nSee also:\n* {{msg-mw|Markaspatrolleddiff}}",
index d79d2cf..916a6eb 100644 (file)
@@ -134,6 +134,13 @@ class MediaWikiTest extends MediaWikiTestCase {
                                'title' => 'Double_slash',
                                'redirect' => false,
                        ],
+                       [
+                               // View: Media namespace redirect (T203942)
+                               'url' => 'http://example.org/w/index.php?title=Media:Foo_Bar',
+                               'query' => [ 'title' => 'Foo_Bar' ],
+                               'title' => 'File:Foo_Bar',
+                               'redirect' => 'http://example.org/wiki/File:Foo_Bar',
+                       ],
                ];
        }