diff --git a/lib/jquery.ime/jquery.ime.js b/lib/jquery.ime/jquery.ime.js
index fbe5dd8e..ace47dc5 100644
--- a/lib/jquery.ime/jquery.ime.js
+++ b/lib/jquery.ime/jquery.ime.js
@@ -1,4 +1,4 @@
-/*! jquery.ime - v0.1.0+20130819
+/*! jquery.ime - v0.1.0+20130820
* https://github.com/wikimedia/jquery.ime
* Copyright (c) 2013 Santhosh Thottingal; Licensed GPL, MIT */
( function ( $ ) {
@@ -881,12 +881,14 @@
imeselector.$menu.on( 'click.ime', 'li.ime-im', function () {
imeselector.selectIM( $( this ).data( 'ime-inputmethod' ) );
+ imeselector.$element.trigger( 'setim.ime', $( this ).data( 'ime-inputmethod' ) );
return false;
} );
imeselector.$menu.on( 'click.ime', 'li.ime-lang', function () {
- imeselector.selectLanguage( $( this ).attr( 'lang' ) );
+ var im = imeselector.selectLanguage( $( this ).attr( 'lang' ) );
+ imeselector.$element.trigger( 'setim.ime', im );
return false;
} );
@@ -942,9 +944,11 @@
if ( isShortcutKey( e ) ) {
if ( ime.isActive() ) {
this.disableIM();
+ this.$element.trigger( 'setim.ime', 'system' );
} else {
if ( this.inputmethod !== null ) {
this.selectIM( this.inputmethod.id );
+ this.$element.trigger( 'setim.ime', this.inputmethod.id );
} else {
languageCode = this.decideLanguage();
this.selectLanguage( languageCode );
@@ -1042,7 +1046,8 @@
/**
* Select a language
*
- * @param languageCode
+ * @param {string} languageCode
+ * @return {string|bool} Selected input method id or false
*/
selectLanguage: function ( languageCode ) {
var ime,
@@ -1062,7 +1067,7 @@
this.selectIM( $.ime.preferences.getIM( languageCode ) );
}
- return false;
+ return $.ime.preferences.getIM( languageCode );
}
this.$menu.find( 'li.ime-lang' ).show();
@@ -1075,6 +1080,8 @@
ime.setLanguage( languageCode );
this.inputmethod = null;
this.selectIM( $.ime.preferences.getIM( languageCode ) );
+
+ return $.ime.preferences.getIM( languageCode );
},
/**
@@ -1283,11 +1290,11 @@
}
function imeList() {
- return $( '
' ).addClass( 'ime-list' );
+ return $( '' ).addClass( 'ime-list' );
}
function imeListTitle() {
- return $( '' ).addClass( 'ime-list-title' );
+ return $( '' ).addClass( 'ime-list-title' );
}
function toggleMenuItem() {
diff --git a/lib/jquery.ime/rules/pa/pa-phonetic.js b/lib/jquery.ime/rules/pa/pa-phonetic.js
index e97f558b..9b1570ea 100644
--- a/lib/jquery.ime/rules/pa/pa-phonetic.js
+++ b/lib/jquery.ime/rules/pa/pa-phonetic.js
@@ -23,7 +23,7 @@
['6', '6'],
['7', '7'],
['8', '8'],
- ['\\)', '੯'],
+ ['\\(', '੯'],
['9', '9'],
['\\),', '੦'],
['0', '0'],
diff --git a/resources/js/ext.uls.eventlogger.js b/resources/js/ext.uls.eventlogger.js
index e0f49bc2..75db1152 100644
--- a/resources/js/ext.uls.eventlogger.js
+++ b/resources/js/ext.uls.eventlogger.js
@@ -78,6 +78,7 @@
mw.hook( 'mw.uls.language.revert' ).add( $.proxy( this.ulsLanguageRevert, this ) );
mw.hook( 'mw.uls.ime.enable' ).add( $.proxy( this.enableIME, this ) );
mw.hook( 'mw.uls.ime.disable' ).add( $.proxy( this.disableIME, this ) );
+ mw.hook( 'mw.uls.ime.change' ).add( $.proxy( this.changeIME, this ) );
mw.hook( 'mw.uls.login.click' ).add( $.proxy( this.loginClick, this ) );
mw.hook( 'mw.uls.ime.morelanguages' ).add( $.proxy( this.imeMoreLanguages, this ) );
mw.hook( 'mw.uls.interface.morelanguages' ).add( $.proxy( this.interfaceMoreLanguages, this ) );
@@ -121,6 +122,17 @@
this.log( { action: 'ime-enable' } );
},
+ /**
+ * Log IME change
+ * @param {string} inputMethod
+ */
+ changeIME: function ( inputMethod ) {
+ this.log( {
+ action: 'ime-change',
+ inputMethod: inputMethod
+ } );
+ },
+
/**
* Log login link click in display settings.
* @param {jQuery.Deferred} deferred
diff --git a/resources/js/ext.uls.ime.js b/resources/js/ext.uls.ime.js
index 7266247d..819bab46 100644
--- a/resources/js/ext.uls.ime.js
+++ b/resources/js/ext.uls.ime.js
@@ -262,9 +262,11 @@
imeselector = $input.data( 'imeselector' );
if ( imeselector ) {
imeselector.selectLanguage( $.ime.preferences.getLanguage() );
+ imeselector.$element.on( 'setim.ime', function ( event, inputMethod ) {
+ mw.hook( 'mw.uls.ime.change' ).fire( inputMethod );
+ } );
}
} );
-
};
$( document ).ready( function () {
diff --git a/resources/js/ext.uls.inputsettings.js b/resources/js/ext.uls.inputsettings.js
index 720d4823..ea98ea3d 100644
--- a/resources/js/ext.uls.inputsettings.js
+++ b/resources/js/ext.uls.inputsettings.js
@@ -530,6 +530,10 @@
apply: function () {
var inputSettings = this;
+ mw.hook( 'mw.uls.ime.change' ).fire(
+ $.ime.preferences.getIM( $.ime.preferences.getLanguage() )
+ );
+
// Save the preferences
$.ime.preferences.save( function ( result ) {
// closure for not losing the scope