From c94046752b6048ddc00984c7c4e14713affd0cae Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Fri, 14 Nov 2008 19:11:52 +0000 Subject: [PATCH] Reverting in-development search changes pending fixing. Can we please do these sorts of experimental developments on branches before putting them to trunk? Our trunk is meant to be functional and ready to deploy at all times; doing experiments on trunk delays deployments because we have to test and fix them or roll them back. Reverted: r43376 r43385 r43403 r43404 r43405 r43406 r43423 Issues I noticed during a few minutes testing: * Background color mismatch on the frameset for wikis that set a BG color on Special: * 'browse pages with this prefix' is kind of funky in "Pages & Project" (goes to main namespace only) * Which namespaces are in "Pages & Project" is not discoverable * Default link to nonexistent help page Project:Searching kind of sucks. we should avoid doing those by default. It used to link to Help:Contents; any reason for the change from one page which might have previously existed to one which doesn't? * "Create the page "Stuff" on this wiki!" - Double page creation links seem kind of weird. There should only be one, otherwise why have two? * Bad prefix link output when search terms are not a valid wiki title * We've lost the Whatlinkshere link from the old results --- includes/DefaultSettings.php | 16 +- includes/SearchEngine.php | 55 +---- includes/specials/SpecialSearch.php | 357 +++++++++------------------- languages/messages/MessagesEn.php | 98 ++++---- maintenance/language/messages.inc | 27 +-- skins/common/shared.css | 14 -- skins/monobook/main.css | 4 - 7 files changed, 161 insertions(+), 410 deletions(-) diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index 3bafd96bc8..354712d78c 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -1436,7 +1436,7 @@ $wgCacheEpoch = '20030516000000'; * to ensure that client-side caches don't keep obsolete copies of global * styles. */ -$wgStyleVersion = '184'; +$wgStyleVersion = '183'; # Server-side caching: @@ -1923,20 +1923,6 @@ $wgNamespacesToBeSearchedDefault = array( NS_MAIN => true, ); -/** - * Additional namespaces to those in $wgNamespacesToBeSearchedDefault that - * will be added to default search for "project" page inclusive searches - * - * Same format as $wgNamespacesToBeSearchedDefault - */ -$wgNamespacesToBeSearchedProject = array( - NS_USER => true, - NS_PROJECT => true, - NS_HELP => true, - NS_CATEGORY => true, -); - - /** * Site notice shown at the top of each page * diff --git a/includes/SearchEngine.php b/includes/SearchEngine.php index 032865e20d..85071d5c96 100644 --- a/includes/SearchEngine.php +++ b/includes/SearchEngine.php @@ -43,11 +43,6 @@ class SearchEngine { return null; } - /** If this search backend can list/unlist redirects */ - function acceptListRedirects() { - return true; - } - /** * If an exact title match can be find, or a very slightly close match, * return the title. If no match, returns NULL. @@ -267,51 +262,7 @@ class SearchEngine { return array_keys($wgNamespacesToBeSearchedDefault, true); } - - /** - * Get a list of namespace names useful for showing in tooltips - * and preferences - * - * @param unknown_type $namespaces - */ - public static function namespacesAsText( $namespaces ){ - global $wgContLang; - - $formatted = array_map( array($wgContLang,'getFormattedNsText'), $namespaces ); - foreach( $formatted as $key => $ns ){ - if ( empty($ns) ) - $formatted[$key] = wfMsg( 'blanknamespace' ); - } - return $formatted; - } - - /** - * An array of "project" namespaces indexes typically searched - * by logged-in users - * - * @return array - * @static - */ - public static function projectNamespaces() { - global $wgNamespacesToBeSearchedDefault, $wgNamespacesToBeSearchedProject; - - return array_keys( $wgNamespacesToBeSearchedProject, true ); - } - - /** - * An array of "project" namespaces indexes typically searched - * by logged-in users in addition to the default namespaces - * - * @return array - * @static - */ - public static function defaultAndProjectNamespaces() { - global $wgNamespacesToBeSearchedDefault, $wgNamespacesToBeSearchedProject; - - return array_keys( $wgNamespacesToBeSearchedDefault + - $wgNamespacesToBeSearchedProject, true); - } - + /** * Return a 'cleaned up' search string * @@ -534,11 +485,11 @@ class SearchResult { var $mRevision = null; var $mImage = null; - function __construct( $row ) { + function SearchResult( $row ) { $this->mTitle = Title::makeTitle( $row->page_namespace, $row->page_title ); if( !is_null($this->mTitle) ){ $this->mRevision = Revision::newFromTitle( $this->mTitle ); - if( $this->mTitle->getNamespace() === NS_IMAGE ) + if($this->mTitle->getNamespace() == NS_IMAGE) $this->mImage = wfFindFile( $this->mTitle ); } } diff --git a/includes/specials/SpecialSearch.php b/includes/specials/SpecialSearch.php index 4a4d5122aa..f9d08f968d 100644 --- a/includes/specials/SpecialSearch.php +++ b/includes/specials/SpecialSearch.php @@ -39,8 +39,7 @@ function wfSpecialSearch( $par = '' ) { $searchPage = new SpecialSearch( $wgRequest, $wgUser ); if( $wgRequest->getVal( 'fulltext' ) || !is_null( $wgRequest->getVal( 'offset' )) - || !is_null( $wgRequest->getVal( 'searchx' )) ) - { + || !is_null( $wgRequest->getVal( 'searchx' ))) { $searchPage->showResults( $search, 'search' ); } else { $searchPage->goResult( $search ); @@ -70,7 +69,6 @@ class SpecialSearch { } $this->searchRedirects = $request->getcheck( 'redirs' ) ? true : false; - $this->searchAdvanced = $request->getVal('advanced'); } /** @@ -79,7 +77,8 @@ class SpecialSearch { * @public */ function goResult( $term ) { - global $wgOut, $wgGoToEdit; + global $wgOut; + global $wgGoToEdit; $this->setupPage( $term ); @@ -87,7 +86,7 @@ class SpecialSearch { $t = Title::newFromText( $term ); # If the string cannot be used to create a title - if( is_null( $t ) ) { + if( is_null( $t ) ){ return $this->showResults( $term ); } @@ -103,12 +102,19 @@ class SpecialSearch { if( ! is_null( $t ) ) { wfRunHooks( 'SpecialSearchNogomatch', array( &$t ) ); # If the feature is enabled, go straight to the edit page - if( $wgGoToEdit ) { + if ( $wgGoToEdit ) { $wgOut->redirect( $t->getFullURL( 'action=edit' ) ); return; } } + $wgOut->wrapWikiMsg( "==$1==\n", 'notitlematches' ); + if( $t->quickUserCan( 'create' ) && $t->quickUserCan( 'edit' ) ) { + $wgOut->addWikiMsg( 'noexactmatch', wfEscapeWikiText( $term ) ); + } else { + $wgOut->addWikiMsg( 'noexactmatch-nocreate', wfEscapeWikiText( $term ) ); + } + return $this->showResults( $term ); } @@ -123,36 +129,20 @@ class SpecialSearch { $sk = $wgUser->getSkin(); $this->setupPage( $term ); - $this->searchEngine = SearchEngine::create(); - - $t = Title::newFromText( $term ); - $wgOut->addHtml( - Xml::openElement( 'table', array( 'border'=>0, 'cellpadding'=>0, 'cellspacing'=>0 ) ) . - Xml::openElement( 'tr' ) . - Xml::openElement( 'td' ) . "\n" - ); - if( $this->searchAdvanced ) { - $wgOut->addHTML( $this->powerSearchBox( $term ) ); - $showMenu = false; - } else { - $wgOut->addHTML( $this->shortDialog( $term ) ); - $showMenu = true; - } - $wgOut->addHtml( - Xml::closeElement('td') . - Xml::closeElement('tr') . - Xml::closeElement('table') - ); + $wgOut->addWikiMsg( 'searchresulttext' ); if( '' === trim( $term ) ) { // Empty query -- straight view of search form + $wgOut->setSubtitle( '' ); + $wgOut->addHTML( $this->powerSearchBox( $term ) ); + $wgOut->addHTML( $this->powerSearchFocus() ); wfProfileOut( $fname ); return; } global $wgDisableTextSearch; - if( $wgDisableTextSearch ) { + if ( $wgDisableTextSearch ) { global $wgSearchForwardUrl; if( $wgSearchForwardUrl ) { $url = str_replace( '$1', urlencode( $term ), $wgSearchForwardUrl ); @@ -175,7 +165,9 @@ class SpecialSearch { return; } - $search =& $this->searchEngine; + $wgOut->addHTML( $this->shortDialog( $term ) ); + + $search = SearchEngine::create(); $search->setLimitOffset( $this->limit, $this->offset ); $search->setNamespaces( $this->namespaces ); $search->showRedirects = $this->searchRedirects; @@ -184,53 +176,43 @@ class SpecialSearch { $titleMatches = $search->searchTitle( $rewritten ); // Sometimes the search engine knows there are too many hits - if( $titleMatches instanceof SearchResultTooMany ) { + if ($titleMatches instanceof SearchResultTooMany) { $wgOut->addWikiText( '==' . wfMsg( 'toomanymatches' ) . "==\n" ); + $wgOut->addHTML( $this->powerSearchBox( $term ) ); + $wgOut->addHTML( $this->powerSearchFocus() ); wfProfileOut( $fname ); return; } $textMatches = $search->searchText( $rewritten ); - + // did you mean... suggestions - if( $textMatches && $textMatches->hasSuggestion() ) { + if($textMatches && $textMatches->hasSuggestion()){ $st = SpecialPage::getTitleFor( 'Search' ); - $stParams = wfArrayToCGI( - array( 'search' => $textMatches->getSuggestionQuery(), 'fulltext' => wfMsg('search') ), - $this->powerSearchOptions() - ); + $stParams = wfArrayToCGI( array( + 'search' => $textMatches->getSuggestionQuery(), + 'fulltext' => wfMsg('search')), + $this->powerSearchOptions()); + $suggestLink = ''. - $textMatches->getSuggestionSnippet().''; - + $textMatches->getSuggestionSnippet().''; + $wgOut->addHTML('
'.wfMsg('search-suggest',$suggestLink).'
'); } - - // show direct page/create link - if( !is_null($t) ) { - if( !$t->exists() ) { - $wgOut->addWikiMsg( 'searchmenu-new', wfEscapeWikiText( $t->getPrefixedText() ) ); - } else { - $wgOut->addWikiMsg( 'searchmenu-exists', wfEscapeWikiText( $t->getPrefixedText() ) ); - } - } - + // show number of results - $numTitleMatches = $titleMatches ? $titleMatches->numRows() : 0; - $numTextMatches = $textMatches ? $textMatches->numRows() : 0; - $highestNum = max( $numTitleMatches, $numTextMatches ); - // Total query matches (possible false positives) - $num = $numTitleMatches + $numTextMatches; - // Get total actual results + $num = ( $titleMatches ? $titleMatches->numRows() : 0 ) + + ( $textMatches ? $textMatches->numRows() : 0); $totalNum = 0; - if( $titleMatches && !is_null($titleMatches->getTotalHits()) ) + if($titleMatches && !is_null($titleMatches->getTotalHits())) $totalNum += $titleMatches->getTotalHits(); - if( $textMatches && !is_null($textMatches->getTotalHits()) ) + if($textMatches && !is_null($textMatches->getTotalHits())) $totalNum += $textMatches->getTotalHits(); - if( $num > 0 ) { - if( $totalNum > 0 ) { + if ( $num > 0 ) { + if ( $totalNum > 0 ){ $top = wfMsgExt('showingresultstotal', array( 'parseinline' ), $this->offset+1, $this->offset+$num, $totalNum, $num ); - } elseif( $num >= $this->limit ) { + } elseif ( $num >= $this->limit ) { $top = wfShowingResults( $this->offset, $this->limit ); } else { $top = wfShowingResultsNum( $this->offset, $this->limit, $num ); @@ -242,17 +224,16 @@ class SpecialSearch { if( $num || $this->offset ) { $prevnext = wfViewPrevNext( $this->offset, $this->limit, SpecialPage::getTitleFor( 'Search' ), - wfArrayToCGI( $this->powerSearchOptions(), array( 'search' => $term ) ), - ($highestNum < $this->limit) - ); + wfArrayToCGI( + $this->powerSearchOptions(), + array( 'search' => $term ) ), + ($num < $this->limit) ); $wgOut->addHTML( "

{$prevnext}

\n" ); wfRunHooks( 'SpecialSearchResults', array( $term, &$titleMatches, &$textMatches ) ); } else { wfRunHooks( 'SpecialSearchNoResults', array( $term ) ); } - $wgOut->addHtml( "
" ); - if( $titleMatches ) { if( $titleMatches->numRows() ) { $wgOut->wrapWikiMsg( "==$1==\n", 'titlematches' ); @@ -282,27 +263,30 @@ class SpecialSearch { $textMatches->free(); } - if( $num == 0 ) { - $wgOut->addWikiMsg( 'search-nonefound' ); + if ( $num == 0 ) { + $wgOut->addWikiMsg( 'nonefound' ); } - - $wgOut->addHtml( "
" ); - if( $num || $this->offset ) { $wgOut->addHTML( "

{$prevnext}

\n" ); } + $wgOut->addHTML( $this->powerSearchBox( $term ) ); wfProfileOut( $fname ); } + + #------------------------------------------------------------------ + # Private methods below this line /** * */ - protected function setupPage( $term ) { + function setupPage( $term ) { global $wgOut; - if( !empty( $term ) ) { + if( !empty( $term ) ){ $wgOut->setPageTitle( wfMsg( 'searchresults') ); $wgOut->setHTMLTitle( wfMsg( 'pagetitle', wfMsg( 'searchresults-title', $term) ) ); } + $subtitlemsg = ( Title::newFromText( $term ) ? 'searchsubtitle' : 'searchsubtitleinvalid' ); + $wgOut->setSubtitle( $wgOut->parse( wfMsg( $subtitlemsg, wfEscapeWikiText($term) ) ) ); $wgOut->setArticleRelated( false ); $wgOut->setRobotPolicy( 'noindex,nofollow' ); } @@ -313,8 +297,9 @@ class SpecialSearch { * * @param WebRequest $request * @return array + * @private */ - protected function powerSearch( &$request ) { + function powerSearch( &$request ) { $arr = array(); foreach( SearchEngine::searchableNamespaces() as $ns => $name ) { if( $request->getCheck( 'ns' . $ns ) ) { @@ -327,15 +312,14 @@ class SpecialSearch { /** * Reconstruct the 'power search' options for links * @return array + * @private */ - protected function powerSearchOptions() { + function powerSearchOptions() { $opt = array(); foreach( $this->namespaces as $n ) { $opt['ns' . $n] = 1; } $opt['redirs'] = $this->searchRedirects ? 1 : 0; - if( $this->searchAdvanced ) - $opt['advanced'] = $this->searchAdvanced; return $opt; } @@ -344,11 +328,11 @@ class SpecialSearch { * * @param SearchResultSet $matches */ - protected function showMatches( &$matches ) { - global $wgContLang; + function showMatches( &$matches ) { $fname = 'SpecialSearch::showMatches'; wfProfileIn( $fname ); + global $wgContLang; $terms = $wgContLang->convertForSearchResult( $matches->termMatches() ); $out = ""; @@ -360,12 +344,14 @@ class SpecialSearch { $off = $this->offset + 1; $out .= "\n"; // convert the whole thing to desired language variant + global $wgContLang; $out = $wgContLang->convert( $out ); wfProfileOut( $fname ); return $out; @@ -376,7 +362,7 @@ class SpecialSearch { * @param SearchResult $result * @param array $terms terms to highlight */ - protected function showHit( $result, $terms ) { + function showHit( $result, $terms ) { $fname = 'SpecialSearch::showHit'; wfProfileIn( $fname ); global $wgUser, $wgContLang, $wgLang; @@ -394,7 +380,7 @@ class SpecialSearch { //If page content is not readable, just return the title. //This is not quite safe, but better than showing excerpts from non-readable pages //Note that hiding the entry entirely would screw up paging. - if(!$t->userCanRead()) { + if (!$t->userCanRead()) { wfProfileOut( $fname ); return "
  • {$link}
  • \n"; } @@ -448,7 +434,7 @@ class SpecialSearch { // link to related articles if supported $related = ''; - if( $result->hasRelated() ) { + if( $result->hasRelated() ){ $st = SpecialPage::getTitleFor( 'Search' ); $stParams = wfArrayToCGI( $this->powerSearchOptions(), array('search' => wfMsgForContent('searchrelated').':'.$t->getPrefixedText(), @@ -466,13 +452,14 @@ class SpecialSearch { if( $thumb ) { $desc = $img->getShortDesc(); wfProfileOut( $fname ); + // Ugly table. :D // Float doesn't seem to interact well with the bullets. - // Table messes up vertical alignment of the bullets. - // Bullets are therefore disabled (didn't look great anyway). + // Table messes up vertical alignment of the bullet, but I'm + // not sure what more I can do about that. :( return "
  • " . '' . '' . - '' . '
    ' . + '' . $thumb->toHtml( array( 'desc-link' => true ) ) . '' . @@ -499,22 +486,21 @@ class SpecialSearch { * * @param SearchResultSet $matches */ - protected function showInterwiki( &$matches, $query ) { + function showInterwiki( &$matches, $query ) { $fname = 'SpecialSearch::showInterwiki'; wfProfileIn( $fname ); global $wgContLang; $terms = $wgContLang->convertForSearchResult( $matches->termMatches() ); - $out = "
    ". - wfMsg('search-interwiki-caption')."
    \n"; + $out = "
    ".wfMsg('search-interwiki-caption')."
    \n"; $off = $this->offset + 1; $out .= "
      \n"; // work out custom project captions $customCaptions = array(); $customLines = explode("\n",wfMsg('search-interwiki-custom')); // format per line :
    - foreach($customLines as $line) { + foreach($customLines as $line){ $parts = explode(":",$line,2); if(count($parts) == 2) // validate line $customCaptions[$parts[0]] = $parts[1]; @@ -545,7 +531,7 @@ class SpecialSearch { * @param string $query * @param array $customCaptions iw prefix -> caption */ - protected function showInterwikiHit( $result, $lastInterwiki, $terms, $query, $customCaptions) { + function showInterwikiHit( $result, $lastInterwiki, $terms, $query, $customCaptions){ $fname = 'SpecialSearch::showInterwikiHit'; wfProfileIn( $fname ); global $wgUser, $wgContLang, $wgLang; @@ -571,7 +557,7 @@ class SpecialSearch { $out = ""; // display project name - if(is_null($lastInterwiki) || $lastInterwiki != $t->getInterwiki()) { + if(is_null($lastInterwiki) || $lastInterwiki != $t->getInterwiki()){ if( key_exists($t->getInterwiki(),$customCaptions) ) // captions from 'search-interwiki-custom' $caption = $customCaptions[$t->getInterwiki()]; @@ -585,8 +571,7 @@ class SpecialSearch { $searchTitle = Title::newFromText($t->getInterwiki().":Special:Search"); $searchLink = $sk->makeKnownLinkObj( $searchTitle, wfMsg('search-interwiki-more'), wfArrayToCGI(array('search' => $query, 'fulltext' => 'Search'))); - $out .= "
    - {$searchLink}{$caption}
    \n
      "; + $out .= "
    {$searchLink}{$caption}
    \n
      "; } $out .= "
    • {$link} {$redirect}
    • \n"; @@ -600,7 +585,7 @@ class SpecialSearch { * @param $term string: search term * @return $out string: HTML form */ - protected function powerSearchBox( $term ) { + function powerSearchBox( $term ) { global $wgScript; $namespaces = ''; @@ -614,189 +599,61 @@ class SpecialSearch { Xml::closeElement( 'span' ) . "\n"; } - if( $this->searchEngine->acceptListRedirects() ) { - $redirect = Xml::check( 'redirs', $this->searchRedirects, array( 'value' => '1', 'id' => 'redirs' ) ); - $redirectLabel = Xml::label( wfMsg( 'powersearch-redir' ), 'redirs' ); - } else{ - $redirect = ''; - $redirectLabel = ''; - } + $redirect = Xml::check( 'redirs', $this->searchRedirects, array( 'value' => '1', 'id' => 'redirs' ) ); + $redirectLabel = Xml::label( wfMsg( 'powersearch-redir' ), 'redirs' ); $searchField = Xml::input( 'search', 50, $term, array( 'type' => 'text', 'id' => 'powerSearchText' ) ); $searchButton = Xml::submitButton( wfMsg( 'powersearch' ), array( 'name' => 'fulltext' ) ) . "\n"; $searchTitle = SpecialPage::getTitleFor( 'Search' ); $out = Xml::openElement( 'form', array( 'id' => 'powersearch', 'method' => 'get', 'action' => $wgScript ) ) . - Xml::hidden( 'title', $searchTitle->getPrefixedText() ) . - Xml::hidden( 'advanced', 1 ) . - "

      " . - wfMsgExt( 'powersearch-ns', array( 'parseinline' ) ) . - "
      " . - $namespaces . - "

      " . - "

      " . - $redirect . " " . $redirectLabel . - "

      " . - wfMsgExt( 'powersearch-field', array( 'parseinline' ) ) . - " " . - $searchField . - " " . - $searchButton . - ' (' . wfMsgExt('searchmenu-help',array('parseinline') ) . ')' . + Xml::fieldset( wfMsg( 'powersearch-legend' ), + Xml::hidden( 'title', $searchTitle->getPrefixedText() ) . + "

      " . + wfMsgExt( 'powersearch-ns', array( 'parseinline' ) ) . + "
      " . + $namespaces . + "

      " . + "

      " . + $redirect . " " . $redirectLabel . + "

      " . + wfMsgExt( 'powersearch-field', array( 'parseinline' ) ) . + " " . + $searchField . + " " . + $searchButton ) . ""; - if( $term ) - $out .= wfMsgExt( 'searchmenu-prefix', array('parseinline'), $term ); - return Xml::openElement( 'fieldset', array('id' => 'mw-searchoptions','style' => 'margin:0em;') ) . - Xml::element( 'legend', null, wfMsg('searchmenu-legend') ) . - $this->formHeader($term) . $out . - Xml::closeElement( 'fieldset' ); + return $out; } - protected function powerSearchFocus() { + function powerSearchFocus() { global $wgJsMimeType; return ""; } - - /** Make a search link with some target namespaces */ - protected function makeSearchLink( $term, $namespaces, $label, $tooltip, $params=array() ) { - $opt = $params; - foreach( $namespaces as $n ) { - $opt['ns' . $n] = 1; - } - $opt['redirs'] = $this->searchRedirects ? 1 : 0; - - $st = SpecialPage::getTitleFor( 'Search' ); - $stParams = wfArrayToCGI( array( 'search' => $term, 'fulltext' => wfMsg( 'search' ) ), $opt ); - return Xml::element( 'a', - array( 'href'=> $st->getLocalURL( $stParams ), 'title' => $tooltip ), - $label ); - } - - /** Check if query starts with image: prefix */ - protected function startsWithImage( $term ) { - global $wgContLang; - - $p = explode( ':', $term ); - if( count( $p ) > 1 ) { - return $wgContLang->getNsIndex( $p[0] ) == NS_IMAGE; - } - return false; - } - - protected function formHeader( $term ) { - global $wgContLang, $wgCanonicalNamespaceNames; - - $sep = '   '; - $out = Xml::openElement('div', array( 'style' => 'padding-bottom:0.5em;' ) ); - - $bareterm = $term; - if( $this->startsWithImage( $term ) ) - $bareterm = substr( $term, strpos( $term, ':' ) + 1 ); // delete all/image prefix - - $nsAllSet = array_keys( SearchEngine::searchableNamespaces() ); - // figure out the active search profile header - if( $this->searchAdvanced ) - $active = 'advanced'; - else if( $this->namespaces === NS_IMAGE || $this->startsWithImage( $term ) ) - $active = 'images'; - elseif( $this->namespaces === $nsAllSet ) - $active = 'all'; - elseif( $this->namespaces === SearchEngine::defaultNamespaces() ) - $active = 'default'; - elseif( $this->namespaces === SearchEngine::defaultAndProjectNamespaces() ) - $active = 'withproject'; - elseif( $this->namespaces === SearchEngine::projectNamespaces() ) - $active = 'project'; - else - $active = 'advanced'; - - - // search profiles headers - $m = wfMsg( 'searchprofile-articles' ); - $tt = wfMsg( 'searchprofile-articles-tooltip', - implode( ', ', SearchEngine::namespacesAsText( SearchEngine::defaultNamespaces() ) ) ); - if( $active == 'default' ) { - $out .= Xml::element( 'strong', array( 'title'=>$tt ), $m ); - } else { - $out .= $this->makeSearchLink( $bareterm, SearchEngine::defaultNamespaces(), $m, $tt ); - } - $out .= $sep; - - $m = wfMsg( 'searchprofile-images' ); - $tt = wfMsg( 'searchprofile-images-tooltip' ); - if( $active == 'images' ) { - $out .= Xml::element( 'strong', array( 'title'=>$tt ), $m ); - } else { - $imageTextForm = $wgContLang->getFormattedNsText(NS_IMAGE).':'.$bareterm; - $out .= $this->makeSearchLink( $imageTextForm, array( NS_IMAGE ) , $m, $tt ); - } - $out .= $sep; - - $m = wfMsg( 'searchprofile-articles-and-proj' ); - $tt = wfMsg( 'searchprofile-project-tooltip', - implode( ', ', SearchEngine::namespacesAsText( SearchEngine::defaultAndProjectNamespaces() ) ) ); - if( $active == 'withproject' ) { - $out .= Xml::element( 'strong', array( 'title'=>$tt ), $m ); - } else { - $out .= $this->makeSearchLink( $bareterm, SearchEngine::defaultAndProjectNamespaces(), $m, $tt ); - } - $out .= $sep; - - $m = wfMsg( 'searchprofile-project' ); - $tt = wfMsg( 'searchprofile-project-tooltip', - implode( ', ', SearchEngine::namespacesAsText( SearchEngine::projectNamespaces() ) ) ); - if( $active == 'project' ) { - $out .= Xml::element( 'strong', array( 'title'=>$tt ), $m ); - } else { - $out .= $this->makeSearchLink( $bareterm, SearchEngine::projectNamespaces(), $m, $tt ); - } - $out .= $sep; - - $m = wfMsg( 'searchprofile-everything' ); - $tt = wfMsg( 'searchprofile-everything-tooltip' ); - if( $active == 'all' ) { - $out .= Xml::element( 'strong', array( 'title'=>$tt ), $m ); - } else { - $out .= $this->makeSearchLink( $bareterm, $nsAllSet, $m, $tt ); - } - $out .= $sep; - - $m = wfMsg( 'searchprofile-advanced' ); - $tt = wfMsg( 'searchprofile-advanced-tooltip' ); - if( $active == 'advanced' ) { - $out .= Xml::element( 'strong', array( 'title'=>$tt ), $m ); - } else { - $out .= $this->makeSearchLink( $bareterm, $this->namespaces, $m, $tt, array( 'advanced' => '1' ) ); - } - $out .= Xml::closeElement('div') ; - - return $out; - } - - protected function shortDialog( $term ) { + function shortDialog($term) { global $wgScript; - $out = Xml::openElement( 'form', array( 'id' => 'search', 'method' => 'get', 'action' => $wgScript ) ); + + $out = Xml::openElement( 'form', array( + 'id' => 'search', + 'method' => 'get', + 'action' => $wgScript + )); $searchTitle = SpecialPage::getTitleFor( 'Search' ); - $out .= Xml::hidden( 'title', $searchTitle->getPrefixedText() ) . "\n"; - $out .= Xml::input( 'search', 50, $term, array( 'type' => 'text', 'id' => 'searchText' ) ) . "\n"; + $out .= Xml::hidden( 'title', $searchTitle->getPrefixedText() ); + $out .= Xml::input( 'search', 50, $term, array( 'type' => 'text', 'id' => 'searchText' ) ) . ' '; foreach( SearchEngine::searchableNamespaces() as $ns => $name ) { if( in_array( $ns, $this->namespaces ) ) { $out .= Xml::hidden( "ns{$ns}", '1' ); } } $out .= Xml::submitButton( wfMsg( 'searchbutton' ), array( 'name' => 'fulltext' ) ); - $out .= ' (' . wfMsgExt('searchmenu-help',array('parseinline') ) . ')'; $out .= Xml::closeElement( 'form' ); - if( $term ) - $out .= wfMsgExt( 'searchmenu-prefix', array('parseinline'), $term ); - return Xml::openElement( 'fieldset', array('id' => 'mw-searchoptions','style' => 'margin:0em;') ) . - Xml::element( 'legend', null, wfMsg('searchmenu-legend') ) . - $this->formHeader($term) . $out . - Xml::closeElement( 'fieldset' ); + + return $out; } } diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index d735f8ab5c..1af007f24a 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -1418,61 +1418,49 @@ Note that using the navigation links will reset this column.', 'diff-strike' => "'''strikethrough'''", # Search results -'searchresults' => 'Search results', -'searchresults-title' => 'Search results for "$1"', -'toomanymatches' => 'Too many matches were returned, please try a different query', -'titlematches' => 'Page title matches', -'notitlematches' => 'No page title matches', -'textmatches' => 'Page text matches', -'notextmatches' => 'No page text matches', -'prevn' => 'previous $1', -'nextn' => 'next $1', -'viewprevnext' => 'View ($1) ($2) ($3)', -'searchmenu-legend' => 'Search options', -'searchmenu-exists' => "'''There is page named \"[[\$1]]\" on this wiki'''", -'searchmenu-new' => "'''[[:\$1|Create]] the page \"[[\$1]]\" on this wiki!'''", -'searchhelp-url' => 'Project:Searching', -'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Browse pages with this prefix]]', -'searchmenu-help' => '[[{{MediaWiki:Searchhelp-url}}|{{int:help}}]]?', # do not translate or duplicate this message to other languages -'searchprofile-articles' => 'Pages', -'searchprofile-articles-and-proj' => 'Pages & Project', -'searchprofile-project' => 'Project', -'searchprofile-images' => 'Files', -'searchprofile-everything' => 'Everything', -'searchprofile-advanced' => 'Advanced', -'searchprofile-articles-tooltip' => 'Search in $1', -'searchprofile-project-tooltip' => 'Search in $1', -'searchprofile-images-tooltip' => 'Search for files', -'searchprofile-everything-tooltip' => 'Search all of content (including talk pages)', -'searchprofile-advanced-tooltip' => 'Search in custom namespaces', -'prefs-search-nsdefault' => 'Search using defaults:', -'prefs-search-nscustom' => 'Search custom namespaces:', -'search-result-size' => '$1 ({{PLURAL:$2|1 word|$2 words}})', -'search-result-score' => 'Relevance: $1%', -'search-redirect' => '(redirect $1)', -'search-section' => '(section $1)', -'search-suggest' => 'Did you mean: $1', -'search-interwiki-caption' => 'Sister projects', -'search-interwiki-default' => '$1 results:', -'search-interwiki-custom' => '', # do not translate or duplicate this message to other languages -'search-interwiki-more' => '(more)', -'search-mwsuggest-enabled' => 'with suggestions', -'search-mwsuggest-disabled' => 'no suggestions', -'search-relatedarticle' => 'Related', -'mwsuggest-disable' => 'Disable AJAX suggestions', -'searchrelated' => 'related', -'searchall' => 'all', -'showingresults' => "Showing below up to {{PLURAL:$1|'''1''' result|'''$1''' results}} starting with #'''$2'''.", -'showingresultsnum' => "Showing below {{PLURAL:$3|'''1''' result|'''$3''' results}} starting with #'''$2'''.", -'showingresultstotal' => "Showing below {{PLURAL:$4|result '''$1''' of '''$3'''|results '''$1 - $2''' of '''$3'''}}", -'search-nonefound' => 'There were no results matching the query.', -'powersearch' => 'Advanced search', -'powersearch-legend' => 'Advanced search', -'powersearch-ns' => 'Search in namespaces:', -'powersearch-redir' => 'List redirects', -'powersearch-field' => 'Search for', -'search-external' => 'External search', -'searchdisabled' => '{{SITENAME}} search is disabled. +'searchresults' => 'Search results', +'searchresults-title' => 'Search results for $1', +'searchresulttext' => 'For more information about searching {{SITENAME}}, see [[{{MediaWiki:Helppage}}|{{int:help}}]].', +'searchsubtitle' => 'You searched for \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|all pages starting with "$1"]] | [[Special:WhatLinksHere/$1|all pages that link to "$1"]])', +'searchsubtitleinvalid' => "You searched for '''$1'''", +'noexactmatch' => "'''There is no page titled \"\$1\".''' +You can [[:\$1|create this page]].", +'noexactmatch-nocreate' => "'''There is no page titled \"\$1\".'''", +'toomanymatches' => 'Too many matches were returned, please try a different query', +'titlematches' => 'Page title matches', +'notitlematches' => 'No page title matches', +'textmatches' => 'Page text matches', +'notextmatches' => 'No page text matches', +'prevn' => 'previous $1', +'nextn' => 'next $1', +'viewprevnext' => 'View ($1) ($2) ($3)', +'search-result-size' => '$1 ({{PLURAL:$2|1 word|$2 words}})', +'search-result-score' => 'Relevance: $1%', +'search-redirect' => '(redirect $1)', +'search-section' => '(section $1)', +'search-suggest' => 'Did you mean: $1', +'search-interwiki-caption' => 'Sister projects', +'search-interwiki-default' => '$1 results:', +'search-interwiki-custom' => '', # do not translate or duplicate this message to other languages +'search-interwiki-more' => '(more)', +'search-mwsuggest-enabled' => 'with suggestions', +'search-mwsuggest-disabled' => 'no suggestions', +'search-relatedarticle' => 'Related', +'mwsuggest-disable' => 'Disable AJAX suggestions', +'searchrelated' => 'related', +'searchall' => 'all', +'showingresults' => "Showing below up to {{PLURAL:$1|'''1''' result|'''$1''' results}} starting with #'''$2'''.", +'showingresultsnum' => "Showing below {{PLURAL:$3|'''1''' result|'''$3''' results}} starting with #'''$2'''.", +'showingresultstotal' => "Showing below {{PLURAL:$4|result '''$1''' of '''$3'''|results '''$1 - $2''' of '''$3'''}}", +'nonefound' => "'''Note''': Only some namespaces are searched by default. +Try prefixing your query with ''all:'' to search all content (including talk pages, templates, etc), or use the desired namespace as prefix.", +'powersearch' => 'Advanced search', +'powersearch-legend' => 'Advanced search', +'powersearch-ns' => 'Search in namespaces:', +'powersearch-redir' => 'List redirects', +'powersearch-field' => 'Search for', +'search-external' => 'External search', +'searchdisabled' => '{{SITENAME}} search is disabled. You can search via Google in the meantime. Note that their indexes of {{SITENAME}} content may be out of date.', 'googlesearch' => '
      diff --git a/maintenance/language/messages.inc b/maintenance/language/messages.inc index 0d8c168ac9..0b9ef45e9c 100644 --- a/maintenance/language/messages.inc +++ b/maintenance/language/messages.inc @@ -760,6 +760,11 @@ $wgMessageStructure = array( 'search' => array( 'searchresults', 'searchresults-title', + 'searchresulttext', + 'searchsubtitle', + 'searchsubtitleinvalid', + 'noexactmatch', + 'noexactmatch-nocreate', 'toomanymatches', 'titlematches', 'notitlematches', @@ -768,25 +773,6 @@ $wgMessageStructure = array( 'prevn', 'nextn', 'viewprevnext', - 'searchmenu-legend', - 'searchmenu-exists', - 'searchmenu-new', - 'searchhelp-url', - 'searchmenu-prefix', - 'searchmenu-help', - 'searchprofile-articles', - 'searchprofile-articles-and-proj', - 'searchprofile-project', - 'searchprofile-images', - 'searchprofile-everything', - 'searchprofile-advanced', - 'searchprofile-articles-tooltip', - 'searchprofile-project-tooltip', - 'searchprofile-images-tooltip', - 'searchprofile-everything-tooltip', - 'searchprofile-advanced-tooltip', - 'prefs-search-nsdefault', - 'prefs-search-nscustom', 'search-result-size', 'search-result-score', 'search-redirect', @@ -805,7 +791,7 @@ $wgMessageStructure = array( 'showingresults', 'showingresultsnum', 'showingresultstotal', - 'search-nonefound', + 'nonefound', 'powersearch', 'powersearch-legend', 'powersearch-ns', @@ -879,6 +865,7 @@ $wgMessageStructure = array( 'allowemail', 'prefs-searchoptions', 'prefs-namespaces', + 'defaultns', 'default', 'files', ), diff --git a/skins/common/shared.css b/skins/common/shared.css index 8dad1e1a25..b6020d81b5 100644 --- a/skins/common/shared.css +++ b/skins/common/shared.css @@ -106,18 +106,12 @@ div.searchresult { } .mw-search-results li { padding-bottom: 1em; - list-style:none; } .mw-search-result-data { color: green; font-size: 97%; } -td#mw-search-menu { - padding-left:6em; - font-size:85%; -} - div#mw-search-interwiki { float: right; width: 18em; @@ -150,14 +144,6 @@ div.searchdidyoumean { font-weight: bold; } -div.searchresults { - border:1px solid darkblue; - padding-top: 5px; - padding-bottom: 5px; - padding-left: 15px; - padding-right: 15px; -} - /* * UserRights stuff */ diff --git a/skins/monobook/main.css b/skins/monobook/main.css index 1824fa59be..170dae4911 100644 --- a/skins/monobook/main.css +++ b/skins/monobook/main.css @@ -1409,10 +1409,6 @@ div#searchTargetHide { padding:2px; } -#powersearch p { - margin-top:0px; -} - div.multipageimagenavbox { border: solid 1px silver; padding: 4px; -- 2.20.1