Only link local titles on Special:Search
authorMarius Hoch <hoo@online.de>
Mon, 20 Oct 2014 00:58:45 +0000 (02:58 +0200)
committerMarius Hoch <hoo@online.de>
Mon, 20 Oct 2014 01:25:48 +0000 (03:25 +0200)
Anything else is confusing, especially given the message text
we have there.

Example:
https://www.mediawiki.org/wiki/Special:Search?search=en%3Afoo&fulltext=1

Also fix the documentation of Title::isLocal as that was misleading
and fooled me (in PS1).

Change-Id: Iccb69de4c7243bf144a12deb8b86505e56a111dd

includes/Title.php
includes/specials/SpecialSearch.php

index e8cda85..c570633 100644 (file)
@@ -795,7 +795,8 @@ class Title {
 
        /**
         * Determine whether the object refers to a page within
-        * this project.
+        * this project (either this wiki or a wiki with a local
+        * interwiki, see https://www.mediawiki.org/wiki/Manual:Interwiki_table#iw_local )
         *
         * @return bool True if this is an in-project interwiki link or a wikilink, false otherwise
         */
index c922fbd..a139740 100644 (file)
@@ -426,15 +426,18 @@ class SpecialSearch extends SpecialPage {
                        return;
                }
 
+               $messageName = 'searchmenu-new-nocreate';
                $linkClass = 'mw-search-createlink';
-               if ( $title->isKnown() ) {
-                       $messageName = 'searchmenu-exists';
-                       $linkClass = 'mw-search-exists';
-               } elseif ( $title->quickUserCan( 'create', $this->getUser() ) ) {
-                       $messageName = 'searchmenu-new';
-               } else {
-                       $messageName = 'searchmenu-new-nocreate';
+
+               if ( !$title->isExternal() ) {
+                       if ( $title->isKnown() ) {
+                               $messageName = 'searchmenu-exists';
+                               $linkClass = 'mw-search-exists';
+                       } elseif ( $title->quickUserCan( 'create', $this->getUser() ) ) {
+                               $messageName = 'searchmenu-new';
+                       }
                }
+
                $params = array(
                        $messageName,
                        wfEscapeWikiText( $title->getPrefixedText() ),