jenkins-bot has submitted this change and it was merged.

Change subject: Load jquery.ime only when user focus on editable fields
......................................................................


Load jquery.ime only when user focus on editable fields

To reduce javascript size for page load.

Change-Id: Ibf2ccd5b5501720837051d6e268b122e8a9f8590
---
M Resources.php
M resources/js/ext.uls.ime.js
M resources/js/ext.uls.inputsettings.js
3 files changed, 45 insertions(+), 28 deletions(-)

Approvals:
  Amire80: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/Resources.php b/Resources.php
index 6ce8de8..6ae9c6b 100644
--- a/Resources.php
+++ b/Resources.php
@@ -33,9 +33,11 @@
 $wgResourceModules['ext.uls.ime'] = array(
        'scripts' => 'resources/js/ext.uls.ime.js',
        'dependencies' => array(
-               'jquery.ime',
                'ext.uls.init',
                'ext.uls.preferences',
+       ),
+       'messages' => array(
+               'uls-ime-helppage',
        ),
 ) + $resourcePaths;
 
@@ -75,10 +77,8 @@
        'dependencies' => array(
                'ext.uls.languagesettings',
                'ext.uls.ime',
+               'jquery.ime',
                'jquery.i18n',
-       ),
-       'messages' => array(
-               'uls-ime-helppage',
        ),
 ) + $resourcePaths;
 
diff --git a/resources/js/ext.uls.ime.js b/resources/js/ext.uls.ime.js
index cc1df4e..010ded6 100644
--- a/resources/js/ext.uls.ime.js
+++ b/resources/js/ext.uls.ime.js
@@ -19,7 +19,7 @@
 ( function ( $, mw, document, undefined ) {
        'use strict';
 
-       var mwImeRulesPath, inputSelector, inputPreferences;
+       var mwImeRulesPath, inputSelector, inputPreferences, ulsIMEPreferences, 
customHelpLink;
 
        mwImeRulesPath = mw.config.get( 'wgExtensionAssetsPath' ) +
                '/UniversalLanguageSelector/lib/jquery.ime/';
@@ -57,8 +57,7 @@
                return unique.slice( 0, 6 );
        };
 
-       // Extend the ime preference system
-       $.extend( $.ime.preferences, {
+       ulsIMEPreferences = {
 
                save: function ( callback ) {
                        if ( !this.registry.isDirty ) {
@@ -102,15 +101,10 @@
                getDefaultLanguage: function () {
                        return mw.config.get( 'wgContentLanguage' );
                }
-       } );
-
-       // MediaWiki specific overrides for jquery.ime
-       $.extend( $.ime.defaults, {
-               imePath: mwImeRulesPath
-       } );
+       };
 
        // Add a 'more settings' link that takes to input settings of ULS
-       $.fn.imeselector.Constructor.prototype.helpLink = function () {
+       customHelpLink = function () {
                var $disableInputToolsLink, $moreSettingsLink,
                        imeselector = this;
 
@@ -173,23 +167,50 @@
                $( inputSelector ).trigger( 'destroy.ime' );
        };
 
-       mw.ime.setup = function () {
+       mw.ime.init = function () {
+               if ( !$.ime ) {
+                       // jquery.ime not loaded yet.
+                       return;
+               }
+               if ( $.ime.preferences.isEnabled ) {
+                       // mw.ime already initialized.
+                       return;
+               }
+               // Extend the ime preference system
+               $.extend( $.ime.preferences, ulsIMEPreferences );
+               // MediaWiki specific overrides for jquery.ime
+               $.extend( $.ime.defaults, {
+                       imePath: mwImeRulesPath
+               } );
+               // Load the ime preferences
+               $.ime.preferences.load();
+               $.fn.imeselector.Constructor.prototype.helpLink = 
customHelpLink;
+       };
 
+       mw.ime.setup = function () {
+               mw.ime.init();
                $( 'body' ).on( 'focus.ime', inputSelector, function () {
                        var imeselector, $input, noImeSelector;
 
-                       // It's possible to disable IME through the settings
-                       // panels before it was initialized, so we need to check
-                       // that it's supposed to be initialized
-                       if ( !$.ime.preferences.isEnabled() ) {
+                       noImeSelector = mw.config.get( 'wgULSNoImeSelectors' 
).join( ', ' );
+                       $input = $( this );
+
+                       if ( !$.ime ) {
+                               mw.loader.using( 'jquery.ime', function () {
+                                       $input.trigger( 'focus.ime' );
+                               } );
                                return;
                        }
 
-                       $input = $( this );
-                       noImeSelector = mw.config.get( 'wgULSNoImeSelectors' 
).join( ', ' );
+                       mw.ime.init();
+
+                       if ( $input.is( '.noime' ) || 
!$.ime.preferences.isEnabled() ) {
+                               return;
+                       }
 
                        if ( noImeSelector.length && $input.is( noImeSelector ) 
) {
                                $input.addClass( 'noime' );
+                               return;
                        }
 
                        $input.ime( {
@@ -238,12 +259,7 @@
 
        $( document ).ready( function () {
                mw.uls.init( function () {
-                       // Load the ime preferences
-                       $.ime.preferences.load();
-
-                       if ( $.ime.preferences.isEnabled() ) {
-                               mw.ime.setup();
-                       }
+                       mw.ime.setup();
                } );
        } );
 
diff --git a/resources/js/ext.uls.inputsettings.js 
b/resources/js/ext.uls.inputsettings.js
index ae0cc72..df263cf 100644
--- a/resources/js/ext.uls.inputsettings.js
+++ b/resources/js/ext.uls.inputsettings.js
@@ -94,7 +94,8 @@
                        this.$parent.$settingsPanel.append( this.$template );
 
                        $enabledOnly = this.$template.find( '.enabled-only' );
-
+                       // ime system is lazy loaded, make sure it is 
initialized
+                       mw.ime.init();
                        if ( $.ime.preferences.isEnabled() ) {
                                $enabledOnly.removeClass( 'hide' );
                        } else {

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ibf2ccd5b5501720837051d6e268b122e8a9f8590
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/UniversalLanguageSelector
Gerrit-Branch: master
Gerrit-Owner: Santhosh <[email protected]>
Gerrit-Reviewer: Amire80 <[email protected]>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to