diff options
Diffstat (limited to 'includes/specials/SpecialSearch.php')
-rw-r--r-- | includes/specials/SpecialSearch.php | 85 |
1 files changed, 45 insertions, 40 deletions
diff --git a/includes/specials/SpecialSearch.php b/includes/specials/SpecialSearch.php index f3117242..cb783819 100644 --- a/includes/specials/SpecialSearch.php +++ b/includes/specials/SpecialSearch.php @@ -41,7 +41,7 @@ function wfSpecialSearch( $par = '' ) { || !is_null( $wgRequest->getVal( 'offset' )) || !is_null( $wgRequest->getVal( 'searchx' )) ) { - $searchPage->showResults( $search, 'search' ); + $searchPage->showResults( $search ); } else { $searchPage->goResult( $search ); } @@ -74,6 +74,7 @@ class SpecialSearch { $this->active = 'advanced'; $this->sk = $user->getSkin(); $this->didYouMeanHtml = ''; # html of did you mean... link + $this->fulltext = $request->getVal('fulltext'); } /** @@ -163,9 +164,13 @@ class SpecialSearch { // did you mean... suggestions if( $textMatches && $textMatches->hasSuggestion() ) { - $st = SpecialPage::getTitleFor( 'Search' ); + $st = SpecialPage::getTitleFor( 'Search' ); + # mirror Go/Search behaviour of original request .. + $didYouMeanParams = array( 'search' => $textMatches->getSuggestionQuery() ); + if($this->fulltext != NULL) + $didYouMeanParams['fulltext'] = $this->fulltext; $stParams = wfArrayToCGI( - array( 'search' => $textMatches->getSuggestionQuery(), 'fulltext' => wfMsg('search') ), + $didYouMeanParams, $this->powerSearchOptions() ); $suggestLink = $sk->makeKnownLinkObj( $st, @@ -610,7 +615,8 @@ class SpecialSearch { $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' ) ); + $searchField = Xml::inputLabel( wfMsg('powersearch-field'), 'search', 'powerSearchText', 50, $term, + array( 'type' => 'text') ); $searchButton = Xml::submitButton( wfMsg( 'powersearch' ), array( 'name' => 'fulltext' )) . "\n"; $searchTitle = SpecialPage::getTitleFor( 'Search' ); @@ -630,10 +636,9 @@ class SpecialSearch { "<hr style=\"clear: both;\" />\n". $redirectText ."\n". "<div style=\"padding-top:2px;padding-bottom:2px;\">". - wfMsgExt( 'powersearch-field', array( 'parseinline' ) ) . - " " . $searchField . " " . + Xml::hidden( 'fulltext', 'Advanced search' ) . "\n" . $searchButton . "</div>". "</form>"; @@ -666,7 +671,7 @@ class SpecialSearch { } protected function formHeader( $term ) { - global $wgContLang, $wgCanonicalNamespaceNames; + global $wgContLang, $wgCanonicalNamespaceNames, $wgLang; $sep = ' '; $out = Xml::openElement('div', array( 'style' => 'padding-bottom:0.5em;' ) ); @@ -680,7 +685,7 @@ class SpecialSearch { // search profiles headers $m = wfMsg( 'searchprofile-articles' ); $tt = wfMsg( 'searchprofile-articles-tooltip', - implode( ', ', SearchEngine::namespacesAsText( SearchEngine::defaultNamespaces() ) ) ); + $wgLang->commaList( SearchEngine::namespacesAsText( SearchEngine::defaultNamespaces() ) ) ); if( $this->active == 'default' ) { $out .= Xml::element( 'strong', array( 'title'=>$tt ), $m ); } else { @@ -697,22 +702,10 @@ class SpecialSearch { $out .= $this->makeSearchLink( $imageTextForm, array( NS_FILE ) , $m, $tt ); } $out .= $sep; - - /* - $m = wfMsg( 'searchprofile-articles-and-proj' ); - $tt = wfMsg( 'searchprofile-project-tooltip', - implode( ', ', SearchEngine::namespacesAsText( SearchEngine::defaultAndProjectNamespaces() ) ) ); - if( $this->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() ) ) ); + $wgLang->commaList( SearchEngine::namespacesAsText( SearchEngine::projectNamespaces() ) ) ); if( $this->active == 'project' ) { $out .= Xml::element( 'strong', array( 'title'=>$tt ), $m ); } else { @@ -765,6 +758,7 @@ class SpecialSearch { $out .= Xml::hidden( "redirs", (int)$this->searchRedirects ); // Term box $out .= Xml::input( 'search', 50, $term, array( 'type' => 'text', 'id' => 'searchText' ) ) . "\n"; + $out .= Xml::hidden( 'fulltext', 'Search' ); $out .= Xml::submitButton( wfMsg( 'searchbutton' ), array( 'name' => 'fulltext' ) ); $out .= ' (' . wfMsgExt('searchmenu-help',array('parseinline') ) . ')'; $out .= Xml::closeElement( 'form' ); @@ -867,6 +861,7 @@ class SpecialSearchOld { } $this->searchRedirects = $request->getcheck( 'redirs' ) ? true : false; + $this->fulltext = $request->getVal('fulltext'); } /** @@ -906,21 +901,21 @@ class SpecialSearchOld { } } - $wgOut->wrapWikiMsg( "==$1==\n", 'notitlematches' ); + $extra = $wgOut->parse( '=='.wfMsgNoTrans( 'notitlematches' )."==\n" ); if( $t->quickUserCan( 'create' ) && $t->quickUserCan( 'edit' ) ) { - $wgOut->addWikiMsg( 'noexactmatch', wfEscapeWikiText( $term ) ); + $extra .= wfMsgExt( 'noexactmatch', 'parse', wfEscapeWikiText( $term ) ); } else { - $wgOut->addWikiMsg( 'noexactmatch-nocreate', wfEscapeWikiText( $term ) ); + $extra .= wfMsgExt( 'noexactmatch-nocreate', 'parse', wfEscapeWikiText( $term ) ); } - return $this->showResults( $term ); + $this->showResults( $term, $extra ); } /** * @param string $term - * @public + * @param string $extra Extra HTML to add after "did you mean" */ - function showResults( $term ) { + public function showResults( $term, $extra = '' ) { wfProfileIn( __METHOD__ ); global $wgOut, $wgUser; $sk = $wgUser->getSkin(); @@ -931,7 +926,7 @@ class SpecialSearchOld { $search->showRedirects = $this->searchRedirects; $search->prefix = $this->mPrefix; $term = $search->transformSearchTerm($term); - + $this->setupPage( $term ); $rewritten = $search->replacePrefixes($term); @@ -940,20 +935,27 @@ class SpecialSearchOld { // did you mean... suggestions if($textMatches && $textMatches->hasSuggestion()){ - $st = SpecialPage::getTitleFor( 'Search' ); - $stParams = wfArrayToCGI( array( - 'search' => $textMatches->getSuggestionQuery(), - 'fulltext' => wfMsg('search')), - $this->powerSearchOptions()); - + $st = SpecialPage::getTitleFor( 'Search' ); + + # mirror Go/Search behaviour of original request + $didYouMeanParams = array( 'search' => $textMatches->getSuggestionQuery() ); + if($this->fulltext != NULL) + $didYouMeanParams['fulltext'] = $this->fulltext; + $stParams = wfArrayToCGI( + $didYouMeanParams, + $this->powerSearchOptions() + ); + $suggestLink = $sk->makeKnownLinkObj( $st, $textMatches->getSuggestionSnippet(), $stParams ); - + $wgOut->addHTML('<div class="searchdidyoumean">'.wfMsg('search-suggest',$suggestLink).'</div>'); } - $wgOut->addWikiMsg( 'searchresulttext' ); + $wgOut->addHTML( $extra ); + + $wgOut->wrapWikiMsg( "<div class='mw-searchresult'>\n$1</div>", 'searchresulttext' ); if( '' === trim( $term ) ) { // Empty query -- straight view of search form @@ -1428,10 +1430,11 @@ class SpecialSearchOld { $searchField = Xml::input( 'search', 50, $term, array( 'type' => 'text', 'id' => 'powerSearchText' ) ); $searchButton = Xml::submitButton( wfMsg( 'powersearch' ), array( 'name' => 'fulltext' ) ) . "\n"; $searchTitle = SpecialPage::getTitleFor( 'Search' ); + $searchHiddens = Xml::hidden( 'title', $searchTitle->getPrefixedText() ) . "\n"; + $searchHiddens .= Xml::hidden( 'fulltext', 'Advanced search' ) . "\n"; $out = Xml::openElement( 'form', array( 'id' => 'powersearch', 'method' => 'get', 'action' => $wgScript ) ) . - Xml::fieldset( wfMsg( 'powersearch-legend' ), - Xml::hidden( 'title', $searchTitle->getPrefixedText() ) . "\n" . + Xml::fieldset( wfMsg( 'powersearch-legend' ), "<p>" . wfMsgExt( 'powersearch-ns', array( 'parseinline' ) ) . "</p>\n" . @@ -1444,6 +1447,7 @@ class SpecialSearchOld { " " . $searchField . " " . + $searchHiddens . $searchButton ) . "</form>"; @@ -1468,13 +1472,14 @@ class SpecialSearchOld { 'action' => $wgScript )); $searchTitle = SpecialPage::getTitleFor( 'Search' ); - $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::hidden( 'title', $searchTitle->getPrefixedText() ); + $out .= Xml::hidden( 'fulltext', 'Search' ); $out .= Xml::submitButton( wfMsg( 'searchbutton' ), array( 'name' => 'fulltext' ) ); $out .= Xml::closeElement( 'form' ); |