From 6df3fdb64783cca306b6562c63857049c0fc644a Mon Sep 17 00:00:00 2001 From: Robin Pepermans Date: Mon, 12 Sep 2011 01:39:11 +0000 Subject: [PATCH] SpecialSearch: add two hooks, one to modify the power search box, one to change the message pointing to the page title searched for WikimediaIncubator: * use these hooks and SpecialSearchSetupEngine to improve search usability * use a different message for the language code in preferences, per suggestion of Amir --- docs/hooks.txt | 11 +++++++++++ includes/specials/SpecialSearch.php | 18 ++++++++++++------ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/docs/hooks.txt b/docs/hooks.txt index c2a5f6dca6..8471448ab3 100644 --- a/docs/hooks.txt +++ b/docs/hooks.txt @@ -1741,6 +1741,11 @@ $opts: FormOptions for this request &$query_options: array of options for the database request &$select: Array of columns to select +'SpecialSearchCreateLink': called when making the message to create a page or +go to the existing page +$t: title object searched for +&$params: an array of the default message name and page title (as parameter) + 'SpecialSearchGo': called when user clicked the "Go" &$title: title object generated from the text entered by the user &$term: the search term entered by the user @@ -1749,6 +1754,12 @@ $opts: FormOptions for this request target doesn't exist &$title: title object generated from the text entered by the user +'SpecialSearchPowerBox': the equivalent of SpecialSearchProfileForm for +the advanced form, a.k.a. power search box +&$showSections: an array to add values with more options to +$term: the search term (not a title object) +$opts: an array of hidden options (containing 'redirs' and 'profile') + 'SpecialSearchProfiles': allows modification of search profiles &$profiles: profiles, which can be modified. diff --git a/includes/specials/SpecialSearch.php b/includes/specials/SpecialSearch.php index 351972feba..ef38ee7e23 100644 --- a/includes/specials/SpecialSearch.php +++ b/includes/specials/SpecialSearch.php @@ -411,8 +411,11 @@ class SpecialSearch extends SpecialPage { $messageName = 'searchmenu-new-nocreate'; } } + $params = array( $messageName, wfEscapeWikiText( $t->getPrefixedText() ) ); + wfRunHooks( 'SpecialSearchCreateLink', array( $t, &$params ) ); + if( $messageName ) { - $this->getOutput()->wrapWikiMsg( "

\n$1

", array( $messageName, wfEscapeWikiText( $t->getPrefixedText() ) ) ); + $this->getOutput()->wrapWikiMsg( "

\n$1

", $params ); } else { // preserve the paragraph for margins etc... $this->getOutput()->addHtml( '

' ); @@ -871,13 +874,17 @@ class SpecialSearch extends SpecialPage { } $namespaceTables .= Xml::closeElement( 'table' ); } + + $showSections = array( 'namespaceTables' => $namespaceTables ); + // Show redirects check only if backend supports it - $redirects = ''; if( $this->getSearchEngine()->supports( 'list-redirects' ) ) { - $redirects = + $showSections['redirects'] = Xml::checkLabel( wfMsg( 'powersearch-redir' ), 'redirs', 'redirs', $this->searchRedirects ); } + wfRunHooks( 'SpecialSearchPowerBox', array( &$showSections, $term, $opts ) ); + $hidden = ''; unset( $opts['redirs'] ); foreach( $opts as $key => $value ) { @@ -913,9 +920,8 @@ class SpecialSearch extends SpecialPage { ) ) . Xml::element( 'div', array( 'class' => 'divider' ), '', false ) . - $namespaceTables . - Xml::element( 'div', array( 'class' => 'divider' ), '', false ) . - $redirects . $hidden . + implode( Xml::element( 'div', array( 'class' => 'divider' ), '', false ), $showSections ) . + $hidden . Xml::closeElement( 'fieldset' ); } -- 2.20.1