Daniel Kinzler has submitted this change and it was merged.

Change subject: (Bug 43066) Replace search box with item selector
......................................................................


(Bug 43066) Replace search box with item selector

- patch set 5: Improved removing native suggestion context, added some doc
- patch set 6: Further improvement of suggestion context removal
- patch set 7: rebase
- patch set 8: Set correct file group

Change-Id: Ic70e323c118ed066c7846de57651076865106b2d
---
M repo/Wikibase.hooks.php
M repo/Wikibase.php
M repo/resources/Resources.php
A repo/resources/wikibase.ui.entitysearch.js
4 files changed, 72 insertions(+), 0 deletions(-)

Approvals:
  Daniel Kinzler: Verified; Looks good to me, approved



diff --git a/repo/Wikibase.hooks.php b/repo/Wikibase.hooks.php
index 6ad7768..8b1c5e6 100644
--- a/repo/Wikibase.hooks.php
+++ b/repo/Wikibase.hooks.php
@@ -32,8 +32,20 @@
  * @author Nikola Smolenski
  * @author Daniel Werner
  * @author Michał Łazowik
+ * @author Jens Ohlig
  */
 final class RepoHooks {
+       /**
+        * Handler for the BeforePageDisplay hook, simply injects 
wikibase.ui.entitysearch module
+        *
+        * @since 0.4
+        *
+        * @return boolean
+        */
+       public static function onBeforePageDisplay( \OutputPage &$out, \Skin 
&$skin ) {
+               $out->addModules( 'wikibase.ui.entitysearch' );
+               return true;
+       }
 
        /**
         * Handler for the SetupAfterCache hook, completing setup of
diff --git a/repo/Wikibase.php b/repo/Wikibase.php
index bd04822..d02b327 100644
--- a/repo/Wikibase.php
+++ b/repo/Wikibase.php
@@ -247,6 +247,7 @@
 
 
 // Hooks
+$wgHooks['BeforePageDisplay'][]                                                
= 'Wikibase\RepoHooks::onBeforePageDisplay';
 $wgHooks['LoadExtensionSchemaUpdates'][]                       = 
'Wikibase\RepoHooks::onSchemaUpdate';
 $wgHooks['UnitTestsList'][]                                            = 
'Wikibase\RepoHooks::registerUnitTests';
 $wgHooks['NamespaceIsMovable'][]                                       = 
'Wikibase\RepoHooks::onNamespaceIsMovable';
diff --git a/repo/resources/Resources.php b/repo/resources/Resources.php
index b230b1f..147ed5f 100644
--- a/repo/resources/Resources.php
+++ b/repo/resources/Resources.php
@@ -56,6 +56,15 @@
                        )
                ),
 
+               'wikibase.ui.entitysearch' => $moduleTemplate + array(
+                       'scripts' => array(
+                               'wikibase.ui.entitysearch.js',
+                       ),
+                       'dependencies' => array(
+                               'jquery.ui.entityselector',
+                       ),
+               ),
+
                /* Wikibase special pages */
 
                'wikibase.special' => $moduleTemplate + array(
diff --git a/repo/resources/wikibase.ui.entitysearch.js 
b/repo/resources/wikibase.ui.entitysearch.js
new file mode 100644
index 0000000..702f662
--- /dev/null
+++ b/repo/resources/wikibase.ui.entitysearch.js
@@ -0,0 +1,50 @@
+/**
+ * Replacing the native MediaWiki search suggestions with Wikibase's entity 
selector widget.
+ *
+ * @file
+ * @ingroup WikibaseRepo
+ *
+ * @license GNU GPL v2+
+ * @author Jens Ohlig
+ * @author H. Snater < mediaw...@snater.com >
+ */
+( function( $, mw ) {
+       'use strict';
+
+       $( document ).ready( function() {
+
+               /**
+                * Removes the native search box suggestion list.
+                *
+                * @param {Object} input Search box node
+                */
+               function removeSuggestionContext( input ) {
+                       // Native fetch() updates/re-sets the data attribute 
with the suggestion context.
+                       $.data( input, 'suggestionsContext' ).config.fetch = 
function() {};
+                       $.removeData( input, 'suggestionsContext' );
+               }
+
+               $( '#searchInput' )
+               .one( 'focus', function( event ) {
+                       if ( $.data( this, 'suggestionsContext' ) ) {
+                               removeSuggestionContext( this );
+                       } else {
+                               // Suggestion context might not be initialized 
when focusing the search box while
+                               // the page is still rendered.
+                               var $input = $( this );
+                               $input.on( 'keypress.entitysearch', function( 
event ) {
+                                       if ( $.data( this, 'suggestionsContext' 
) ) {
+                                               removeSuggestionContext( this );
+                                               $input.off( '.entitysearch' );
+                                       }
+                               } );
+                       }
+               } )
+               .entityselector( {
+                       url: mw.config.get( 'wgServer' ) + mw.config.get( 
'wgScriptPath' ) + '/api.php',
+                       language: mw.config.get( 'wgUserLanguage' )
+               } );
+
+       } );
+
+}( jQuery, mediaWiki ) );

-- 
To view, visit https://gerrit.wikimedia.org/r/49263
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ic70e323c118ed066c7846de57651076865106b2d
Gerrit-PatchSet: 8
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Jens Ohlig <jens.oh...@wikimedia.de>
Gerrit-Reviewer: Aude <aude.w...@gmail.com>
Gerrit-Reviewer: Daniel Kinzler <daniel.kinz...@wikimedia.de>
Gerrit-Reviewer: Daniel Werner <daniel.wer...@wikimedia.de>
Gerrit-Reviewer: Denny Vrandecic <denny.vrande...@wikimedia.de>
Gerrit-Reviewer: Henning Snater <henning.sna...@wikimedia.de>
Gerrit-Reviewer: Jens Ohlig <jens.oh...@wikimedia.de>
Gerrit-Reviewer: John Erling Blad <john.b...@wikimedia.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to