use MediaWiki\MediaWikiServices;
use MediaWiki\Widget\Search\BasicSearchResultSetWidget;
-use MediaWiki\Widget\Search\InterwikiSearchResultSetWidget;
use MediaWiki\Widget\Search\FullSearchResultWidget;
+use MediaWiki\Widget\Search\InterwikiSearchResultWidget;
+use MediaWiki\Widget\Search\InterwikiSearchResultSetWidget;
use MediaWiki\Widget\Search\SimpleSearchResultWidget;
+use MediaWiki\Widget\Search\SimpleSearchResultSetWidget;
/**
* implements Special:Search - Run text & title search and display the output
$out->redirect( $url );
return;
}
+ // No match. If it could plausibly be a title
+ // run the No go match hook.
+ $title = Title::newFromText( $term );
+ if ( !is_null( $title ) ) {
+ Hooks::run( 'SpecialSearchNogomatch', [ &$title ] );
+ }
}
$this->setupPage( $term );
return null;
}
- return $url === null ? $title->getFullURL() : $url;
+ return $url === null ? $title->getFullUrlForRedirect() : $url;
}
/**
$out->addHTML( $dymWidget->render( $term, $textMatches ) );
}
- $out->addHTML( "<div class='searchresults'>" );
-
$hasErrors = $textStatus && $textStatus->getErrors();
$hasOtherResults = $textMatches &&
$textMatches->hasInterwikiResults( SearchResultSet::INLINE_RESULTS );
+ if ( $textMatches->hasInterwikiResults( SearchResultSet::SECONDARY_RESULTS ) ) {
+ $out->addHTML( '<div class="searchresults mw-searchresults-has-iw">' );
+ } else {
+ $out->addHTML( '<div class="searchresults">' );
+ }
+
if ( $hasErrors ) {
list( $error, $warning ) = $textStatus->splitByErrorType();
if ( $error->getErrors() ) {
// results to display.
$linkRenderer = $this->getLinkRenderer();
$mainResultWidget = new FullSearchResultWidget( $this, $linkRenderer );
- $sidebarResultWidget = new SimpleSearchResultWidget( $this, $linkRenderer );
- $sidebarResultsWidget = new InterwikiSearchResultSetWidget(
- $this,
- $sidebarResultWidget,
- $linkRenderer,
- MediaWikiServices::getInstance()->getInterwikiLookup()
- );
+
+ if ( $search->getFeatureData( 'enable-new-crossproject-page' ) ) {
+
+ $sidebarResultWidget = new InterwikiSearchResultWidget( $this, $linkRenderer );
+ $sidebarResultsWidget = new InterwikiSearchResultSetWidget(
+ $this,
+ $sidebarResultWidget,
+ $linkRenderer,
+ MediaWikiServices::getInstance()->getInterwikiLookup()
+ );
+ } else {
+ $sidebarResultWidget = new SimpleSearchResultWidget( $this, $linkRenderer );
+ $sidebarResultsWidget = new SimpleSearchResultSetWidget(
+ $this,
+ $sidebarResultWidget,
+ $linkRenderer,
+ MediaWikiServices::getInstance()->getInterwikiLookup()
+ );
+ }
+
$widget = new BasicSearchResultSetWidget( $this, $mainResultWidget, $sidebarResultsWidget );
$out->addHTML( $widget->render(
if ( $title->isKnown() ) {
$messageName = 'searchmenu-exists';
$linkClass = 'mw-search-exists';
- } elseif ( $title->quickUserCan( 'create', $this->getUser() ) ) {
+ } elseif ( ContentHandler::getForTitle( $title )->supportsDirectEditing()
+ && $title->quickUserCan( 'create', $this->getUser() )
+ ) {
$messageName = 'searchmenu-new';
}
}