Merge "Convert Special:Search to OOUI"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 9 Jul 2015 21:08:51 +0000 (21:08 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 9 Jul 2015 21:08:51 +0000 (21:08 +0000)
1  2 
resources/Resources.php
resources/src/mediawiki/mediawiki.searchSuggest.js

diff --combined resources/Resources.php
@@@ -853,7 -853,6 +853,7 @@@ return array
        'mediawiki.api.parse' => array(
                'scripts' => 'resources/src/mediawiki.api/mediawiki.api.parse.js',
                'dependencies' => 'mediawiki.api',
 +              'targets' => array( 'desktop', 'mobile' ),
        ),
        'mediawiki.api.watch' => array(
                'scripts' => 'resources/src/mediawiki.api/mediawiki.api.watch.js',
                'position' => 'top',
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.search.js',
                'styles' => 'resources/src/mediawiki.special/mediawiki.special.search.css',
+               'dependencies' => 'mediawiki.widgets',
                'messages' => array(
                        'powersearch-togglelabel',
                        'powersearch-toggleall',
@@@ -3,7 -3,7 +3,7 @@@
   */
  ( function ( mw, $ ) {
        $( function () {
 -              var api, map, resultRenderCache, searchboxesSelectors,
 +              var api, map, searchboxesSelectors,
                        // Region where the suggestions box will appear directly below
                        // (using the same width). Can be a container element or the input
                        // itself, depending on what suits best in the environment.
                }
  
                // Compute form data for search suggestions functionality.
 -              function computeResultRenderCache( context ) {
 +              function getFormData( context ) {
                        var $form, baseHref, linkParams;
  
 -                      // Compute common parameters for links' hrefs
 -                      $form = context.config.$region.closest( 'form' );
 +                      if ( !context.formData ) {
 +                              // Compute common parameters for links' hrefs
 +                              $form = context.config.$region.closest( 'form' );
  
 -                      baseHref = $form.attr( 'action' );
 -                      baseHref += baseHref.indexOf( '?' ) > -1 ? '&' : '?';
 +                              baseHref = $form.attr( 'action' );
 +                              baseHref += baseHref.indexOf( '?' ) > -1 ? '&' : '?';
  
 -                      linkParams = $form.serializeObject();
 +                              linkParams = $form.serializeObject();
  
 -                      return {
 -                              textParam: context.data.$textbox.attr( 'name' ),
 -                              linkParams: linkParams,
 -                              baseHref: baseHref
 -                      };
 +                              context.formData = {
 +                                      textParam: context.data.$textbox.attr( 'name' ),
 +                                      linkParams: linkParams,
 +                                      baseHref: baseHref
 +                              };
 +                      }
 +
 +                      return context.formData;
                }
  
                /**
  
                // The function used to render the suggestions.
                function renderFunction( text, context ) {
 -                      if ( !resultRenderCache ) {
 -                              resultRenderCache = computeResultRenderCache( context );
 -                      }
 +                      var formData = getFormData( context );
  
                        // linkParams object is modified and reused
 -                      resultRenderCache.linkParams[ resultRenderCache.textParam ] = text;
 +                      formData.linkParams[ formData.textParam ] = text;
  
                        // this is the container <div>, jQueryfied
                        this.text( text )
                                .wrap(
                                        $( '<a>' )
 -                                              .attr( 'href', resultRenderCache.baseHref + $.param( resultRenderCache.linkParams ) )
 +                                              .attr( 'href', formData.baseHref + $.param( formData.linkParams ) )
                                                .attr( 'title', text )
                                                .addClass( 'mw-searchSuggest-link' )
                                );
                }
  
                function specialRenderFunction( query, context ) {
 -                      var $el = this;
 -
 -                      if ( !resultRenderCache ) {
 -                              resultRenderCache = computeResultRenderCache( context );
 -                      }
 +                      var $el = this,
 +                              formData = getFormData( context );
  
                        // linkParams object is modified and reused
 -                      resultRenderCache.linkParams[ resultRenderCache.textParam ] = query;
 +                      formData.linkParams[ formData.textParam ] = query;
  
                        if ( $el.children().length === 0 ) {
                                $el
                        }
  
                        if ( $el.parent().hasClass( 'mw-searchSuggest-link' ) ) {
 -                              $el.parent().attr( 'href', resultRenderCache.baseHref + $.param( resultRenderCache.linkParams ) + '&fulltext=1' );
 +                              $el.parent().attr( 'href', formData.baseHref + $.param( formData.linkParams ) + '&fulltext=1' );
                        } else {
                                $el.wrap(
                                        $( '<a>' )
 -                                              .attr( 'href', resultRenderCache.baseHref + $.param( resultRenderCache.linkParams ) + '&fulltext=1' )
 +                                              .attr( 'href', formData.baseHref + $.param( formData.linkParams ) + '&fulltext=1' )
                                                .addClass( 'mw-searchSuggest-link' )
                                );
                        }
                searchboxesSelectors = [
                        // Primary searchbox on every page in standard skins
                        '#searchInput',
-                       // Special:Search
-                       '#powerSearchText',
-                       '#searchText',
                        // Generic selector for skins with multiple searchboxes (used by CologneBlue)
                        // and for MediaWiki itself (special pages with page title inputs)
                        '.mw-searchInput'