Revision: 43499
Author: brion
Date: 2008-11-14 19:11:52 +0000 (Fri, 14 Nov 2008)
Log Message:
-----------
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
Modified Paths:
--------------
trunk/phase3/includes/DefaultSettings.php
trunk/phase3/includes/SearchEngine.php
trunk/phase3/includes/specials/SpecialSearch.php
trunk/phase3/languages/messages/MessagesEn.php
trunk/phase3/maintenance/language/messages.inc
trunk/phase3/skins/common/shared.css
trunk/phase3/skins/monobook/main.css
Modified: trunk/phase3/includes/DefaultSettings.php
===================================================================
--- trunk/phase3/includes/DefaultSettings.php 2008-11-14 17:21:21 UTC (rev
43498)
+++ trunk/phase3/includes/DefaultSettings.php 2008-11-14 19:11:52 UTC (rev
43499)
@@ -1436,7 +1436,7 @@
* to ensure that client-side caches don't keep obsolete copies of global
* styles.
*/
-$wgStyleVersion = '184';
+$wgStyleVersion = '183';
# Server-side caching:
@@ -1924,20 +1924,6 @@
);
/**
- * 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
*
* This message can contain wiki text, and can also be set through the
Modified: trunk/phase3/includes/SearchEngine.php
===================================================================
--- trunk/phase3/includes/SearchEngine.php 2008-11-14 17:21:21 UTC (rev
43498)
+++ trunk/phase3/includes/SearchEngine.php 2008-11-14 19:11:52 UTC (rev
43499)
@@ -43,11 +43,6 @@
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,52 +262,8 @@
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
*
* @return string
@@ -534,11 +485,11 @@
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 );
}
}
Modified: trunk/phase3/includes/specials/SpecialSearch.php
===================================================================
--- trunk/phase3/includes/specials/SpecialSearch.php 2008-11-14 17:21:21 UTC
(rev 43498)
+++ trunk/phase3/includes/specials/SpecialSearch.php 2008-11-14 19:11:52 UTC
(rev 43499)
@@ -39,8 +39,7 @@
$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 @@
}
$this->searchRedirects = $request->getcheck( 'redirs' ) ? true
: false;
- $this->searchAdvanced = $request->getVal('advanced');
}
/**
@@ -79,7 +77,8 @@
* @public
*/
function goResult( $term ) {
- global $wgOut, $wgGoToEdit;
+ global $wgOut;
+ global $wgGoToEdit;
$this->setupPage( $term );
@@ -87,7 +86,7 @@
$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 @@
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 @@
$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 @@
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 @@
$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 = '<a
href="'.$st->escapeLocalURL($stParams).'">'.
- $textMatches->getSuggestionSnippet().'</a>';
-
+
$textMatches->getSuggestionSnippet().'</a>';
+
$wgOut->addHTML('<div
class="searchdidyoumean">'.wfMsg('search-suggest',$suggestLink).'</div>');
}
-
- // 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 @@
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( "<p
class='mw-search-pager-top'>{$prevnext}</p>\n" );
wfRunHooks( 'SpecialSearchResults', array( $term,
&$titleMatches, &$textMatches ) );
} else {
wfRunHooks( 'SpecialSearchNoResults', array( $term ) );
}
- $wgOut->addHtml( "<div class='searchresults'>" );
-
if( $titleMatches ) {
if( $titleMatches->numRows() ) {
$wgOut->wrapWikiMsg( "==$1==\n", 'titlematches'
);
@@ -282,27 +263,30 @@
$textMatches->free();
}
- if( $num == 0 ) {
- $wgOut->addWikiMsg( 'search-nonefound' );
+ if ( $num == 0 ) {
+ $wgOut->addWikiMsg( 'nonefound' );
}
-
- $wgOut->addHtml( "</div>" );
-
if( $num || $this->offset ) {
$wgOut->addHTML( "<p
class='mw-search-pager-bottom'>{$prevnext}</p>\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 @@
*
* @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 @@
/**
* 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 @@
*
* @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 @@
$off = $this->offset + 1;
$out .= "<ul class='mw-search-results'>\n";
+
while( $result = $matches->next() ) {
$out .= $this->showHit( $result, $terms );
}
$out .= "</ul>\n";
// convert the whole thing to desired language variant
+ global $wgContLang;
$out = $wgContLang->convert( $out );
wfProfileOut( $fname );
return $out;
@@ -376,7 +362,7 @@
* @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 @@
//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 "<li>{$link}</li>\n";
}
@@ -448,7 +434,7 @@
// 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 @@
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 "<li>" .
'<table
class="searchResultImage">' .
'<tr>' .
- '<td width="120" align="center"
valign="top">' .
+ '<td width="120"
align="center">' .
$thumb->toHtml( array(
'desc-link' => true ) ) .
'</td>' .
'<td valign="top">' .
@@ -499,22 +486,21 @@
*
* @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 = "<div id='mw-search-interwiki'><div
id='mw-search-interwiki-caption'>".
- wfMsg('search-interwiki-caption')."</div>\n";
+ $out = "<div id='mw-search-interwiki'><div
id='mw-search-interwiki-caption'>".wfMsg('search-interwiki-caption')."</div>\n";
$off = $this->offset + 1;
$out .= "<ul start='{$off}' class='mw-search-iwresults'>\n";
// work out custom project captions
$customCaptions = array();
$customLines = explode("\n",wfMsg('search-interwiki-custom'));
// format per line <iwprefix>:<caption>
- 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 @@
* @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 @@
$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 @@
$searchTitle =
Title::newFromText($t->getInterwiki().":Special:Search");
$searchLink = $sk->makeKnownLinkObj( $searchTitle,
wfMsg('search-interwiki-more'),
wfArrayToCGI(array('search' => $query,
'fulltext' => 'Search')));
- $out .= "</ul><div
class='mw-search-interwiki-project'><span class='mw-search-interwiki-more'>
- {$searchLink}</span>{$caption}</div>\n<ul>";
+ $out .= "</ul><div
class='mw-search-interwiki-project'><span
class='mw-search-interwiki-more'>{$searchLink}</span>{$caption}</div>\n<ul>";
}
$out .= "<li>{$link} {$redirect}</li>\n";
@@ -600,7 +585,7 @@
* @param $term string: search term
* @return $out string: HTML form
*/
- protected function powerSearchBox( $term ) {
+ function powerSearchBox( $term ) {
global $wgScript;
$namespaces = '';
@@ -614,189 +599,61 @@
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 ) .
- "<p>" .
- wfMsgExt( 'powersearch-ns', array( 'parseinline' ) ) .
- "<br />" .
- $namespaces .
- "</p>" .
- "<p>" .
- $redirect . " " . $redirectLabel .
- "</p>" .
- wfMsgExt( 'powersearch-field', array( 'parseinline' ) )
.
- " " .
- $searchField .
- " " .
- $searchButton .
- ' (' . wfMsgExt('searchmenu-help',array('parseinline')
) . ')' .
+ Xml::fieldset( wfMsg( 'powersearch-legend' ),
+ Xml::hidden( 'title',
$searchTitle->getPrefixedText() ) .
+ "<p>" .
+ wfMsgExt( 'powersearch-ns', array(
'parseinline' ) ) .
+ "<br />" .
+ $namespaces .
+ "</p>" .
+ "<p>" .
+ $redirect . " " . $redirectLabel .
+ "</p>" .
+ wfMsgExt( 'powersearch-field', array(
'parseinline' ) ) .
+ " " .
+ $searchField .
+ " " .
+ $searchButton ) .
"</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;
}
- protected function powerSearchFocus() {
+ function powerSearchFocus() {
global $wgJsMimeType;
return "<script type=\"$wgJsMimeType\">" .
- "hookEvent(\"load\", function() {" .
+ "hookEvent(\"load\", function(){" .
"document.getElementById('powerSearchText').focus();" .
"});" .
"</script>";
}
-
- /** 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;
}
}
Modified: trunk/phase3/languages/messages/MessagesEn.php
===================================================================
--- trunk/phase3/languages/messages/MessagesEn.php 2008-11-14 17:21:21 UTC
(rev 43498)
+++ trunk/phase3/languages/messages/MessagesEn.php 2008-11-14 19:11:52 UTC
(rev 43499)
@@ -1418,61 +1418,49 @@
'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' => '<form method="get"
action="http://www.google.com/search" id="googlesearch">
Modified: trunk/phase3/maintenance/language/messages.inc
===================================================================
--- trunk/phase3/maintenance/language/messages.inc 2008-11-14 17:21:21 UTC
(rev 43498)
+++ trunk/phase3/maintenance/language/messages.inc 2008-11-14 19:11:52 UTC
(rev 43499)
@@ -760,6 +760,11 @@
'search' => array(
'searchresults',
'searchresults-title',
+ 'searchresulttext',
+ 'searchsubtitle',
+ 'searchsubtitleinvalid',
+ 'noexactmatch',
+ 'noexactmatch-nocreate',
'toomanymatches',
'titlematches',
'notitlematches',
@@ -768,25 +773,6 @@
'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 @@
'showingresults',
'showingresultsnum',
'showingresultstotal',
- 'search-nonefound',
+ 'nonefound',
'powersearch',
'powersearch-legend',
'powersearch-ns',
@@ -879,6 +865,7 @@
'allowemail',
'prefs-searchoptions',
'prefs-namespaces',
+ 'defaultns',
'default',
'files',
),
Modified: trunk/phase3/skins/common/shared.css
===================================================================
--- trunk/phase3/skins/common/shared.css 2008-11-14 17:21:21 UTC (rev
43498)
+++ trunk/phase3/skins/common/shared.css 2008-11-14 19:11:52 UTC (rev
43499)
@@ -106,18 +106,12 @@
}
.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 @@
font-weight: bold;
}
-div.searchresults {
- border:1px solid darkblue;
- padding-top: 5px;
- padding-bottom: 5px;
- padding-left: 15px;
- padding-right: 15px;
-}
-
/*
* UserRights stuff
*/
Modified: trunk/phase3/skins/monobook/main.css
===================================================================
--- trunk/phase3/skins/monobook/main.css 2008-11-14 17:21:21 UTC (rev
43498)
+++ trunk/phase3/skins/monobook/main.css 2008-11-14 19:11:52 UTC (rev
43499)
@@ -1409,10 +1409,6 @@
padding:2px;
}
-#powersearch p {
- margin-top:0px;
-}
-
div.multipageimagenavbox {
border: solid 1px silver;
padding: 4px;
_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs