SpecialSearch: add two hooks, one to modify the power search box, one to change the...
authorRobin Pepermans <robin@users.mediawiki.org>
Mon, 12 Sep 2011 01:39:11 +0000 (01:39 +0000)
committerRobin Pepermans <robin@users.mediawiki.org>
Mon, 12 Sep 2011 01:39:11 +0000 (01:39 +0000)
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
includes/specials/SpecialSearch.php

index c2a5f6d..8471448 100644 (file)
@@ -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.
 
index 351972f..ef38ee7 100644 (file)
@@ -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( "<p class=\"mw-search-createlink\">\n$1</p>", array( $messageName, wfEscapeWikiText( $t->getPrefixedText() ) ) );
+                       $this->getOutput()->wrapWikiMsg( "<p class=\"mw-search-createlink\">\n$1</p>", $params );
                } else {
                        // preserve the paragraph for margins etc...
                        $this->getOutput()->addHtml( '<p></p>' );
@@ -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' );
        }