Update jquery.ime from upstream

Provides overridable help link along with other code cleanups

Change-Id: I78b8cdcd3ca53c9008674fc775e98aa9cf1e5764
This commit is contained in:
Santhosh Thottingal
2012-10-29 16:17:09 +05:30
parent 8a0845ee55
commit 45acc5d7b3

View File

@@ -161,6 +161,10 @@
this.active = !this.active;
},
getIM: function () {
return this.inputmethod;
},
setIM: function ( inputmethodId ) {
this.inputmethod = $.ime.inputmethods[inputmethodId];
$.ime.preferences.setIM( inputmethodId );
@@ -171,7 +175,8 @@
},
load: function ( name, callback ) {
var ime = this, dependency;
var ime = this,
dependency;
if ( $.ime.inputmethods[name] ) {
if ( callback ) {
@@ -181,7 +186,7 @@
return true;
}
dependency = $.ime.sources[name].depends;
dependency = $.ime.sources[name].depends;
if ( dependency ) {
this.load( dependency ) ;
}
@@ -208,7 +213,8 @@
options = typeof option === 'object' && option;
if ( !data ) {
$this.data( 'ime', ( data = new IME( this, options ) ) );
data = new IME( this, options );
$this.data( 'ime', data );
}
if ( typeof option === 'string' ) {
@@ -793,7 +799,6 @@
this.$imeSetting = $( selectorTemplate );
this.$menu = $( '<ul class="imeselector-menu" role="menu">' );
this.inputmethod = null;
this.shown = false;
this.init();
this.listen();
}
@@ -814,7 +819,7 @@
this.$menu.append( toggleMenuItem() );
this.$menu.append( languageListTitle() );
this.prepareLanguageList();
this.$menu.append( helpLink() );
this.$menu.append( this.helpLink() );
},
focus: function ( ) {
@@ -824,11 +829,9 @@
},
toggle: function () {
var isActive = this.$menu.hasClass( 'open' );
this.$menu.removeClass( 'open' );
if ( !isActive ) {
if ( !this.$menu.hasClass( 'open' ) ) {
this.$menu.toggleClass( 'open' );
}
@@ -846,14 +849,12 @@
} );
imeselector.$menu.on( 'click', 'li.ime-im', function ( e ) {
var inputmethodId = $( this ).data( 'ime-inputmethod' );
imeselector.selectIM( inputmethodId );
imeselector.selectIM( $( this ).data( 'ime-inputmethod' ) );
e.stopPropagation();
} );
imeselector.$menu.on( 'click', 'li.ime-lang', function ( e ) {
var language = $( this ).attr( 'lang' );
imeselector.selectLanguage( language );
imeselector.selectLanguage( $( this ).attr( 'lang' ) );
e.stopPropagation();
} );
@@ -884,14 +885,14 @@
var ime = $( e.target ).data( 'ime' );
if ( isShortcutKey( e ) ) {
ime.toggle();
if ( ime.isActive() ) {
this.disableIM();
} else {
if ( this.inputmethod !== null ) {
this.selectIM( this.inputmethod.id );
} else {
this.selectLanguage ( $.ime.preferences.getLanguage() );
}
} else {
this.disableIM();
}
e.preventDefault();
@@ -920,21 +921,16 @@
* @param languageCode
*/
selectLanguage: function ( languageCode ) {
var imeselector = this,
ime = this.$element.data( 'ime' ),
languageName = $.ime.languages[languageCode].autonym;
this.$menu.find( 'li.ime-lang' ).show();
this.$menu.find( 'li[lang=' + languageCode + ']' ).hide();
//imeselector.$menu.find( 'li.ime-im' ).remove();
this.$menu.find( 'li.ime-list-title' ).text( languageName );
this.$menu.find( 'li.ime-list-title' ).text( $.ime.languages[languageCode].autonym );
this.prepareInputMethods( languageCode );
imeselector.$menu.removeClass( 'open' );
this.$menu.removeClass( 'open' );
// And select the default inputmethod
imeselector.selectIM( $.ime.preferences.getIM( languageCode ) );
ime.setLanguage( languageCode );
this.$element.data( 'ime' ).setLanguage( languageCode );
this.inputmethod = null;
this.selectIM( $.ime.preferences.getIM( languageCode ) );
},
/**
@@ -965,7 +961,6 @@
var name;
imeselector.inputmethod = $.ime.inputmethods[inputmethodId];
//imeselector.$element.focus();
imeselector.$menu.removeClass( 'open' );
ime.enable();
name = imeselector.inputmethod.name;
@@ -984,15 +979,12 @@
* Disable the inputmethods (Use the system input method)
*/
disableIM: function () {
var imeselector = this,
ime = imeselector.$element.data( 'ime' );
this.$menu.find( 'li.ime-im.checked' ).removeClass( 'checked' );
this.$menu.find( 'li.ime-disable-link' ).addClass( 'checked' );
ime.disable();
imeselector.$imeSetting.find( 'a.ime-name' ).text( '' );
this.$element.data( 'ime' ).disable();
this.$imeSetting.find( 'a.ime-name' ).text( '' );
this.$menu.removeClass( 'open' );
imeselector.position();
this.position();
// save this preference
$.ime.preferences.save();
},
@@ -1001,7 +993,7 @@
* Prepare language list
*/
prepareLanguageList: function () {
var imeselector = this, languageCodeIndex = 0, $languageListDiv, $languageList, languageList;
var languageCodeIndex = 0, $languageListDiv, $languageList, languageList;
// Language list can be very long. So we use a container with
// overflow auto.
@@ -1031,10 +1023,10 @@
}
$languageListDiv.append( $languageList );
imeselector.$menu.append( $languageListDiv );
this.$menu.append( $languageListDiv );
if ( this.options.languageSelector ) {
imeselector.$menu.append( this.options.languageSelector() );
this.$menu.append( this.options.languageSelector() );
}
},
@@ -1044,11 +1036,9 @@
* @param languageCode
*/
prepareInputMethods: function ( languageCode ) {
var imeselector = this,
language = $.ime.languages[languageCode],
$imeList;
var language = $.ime.languages[languageCode],
$imeList = this.$menu.find( 'div.ime-list' );
$imeList = imeselector.$menu.find( 'div.ime-list' );
$imeList.empty();
$.each( language.inputmethods, function ( index, inputmethod ) {
@@ -1060,6 +1050,16 @@
$inputMethod.addClass( 'ime-im' );
$imeList.append( $inputMethod );
} );
},
helpLink: function () {
return $( '<li class="ime-help-link">' )
.append( $( '<a>' ).text( 'Help' )
.attr( {
'href': 'http://github.com/wikimedia/jquery.ime',
'target': '_blank'
} )
);
}
};
@@ -1087,14 +1087,6 @@
$.fn.imeselector.Constructor = IMESelector;
// Private functions
function helpLink () {
return $( '<li class="ime-help-link">' )
.append( $( '<a>' )
.attr( 'href', '#' )
.text( 'Help' ) ); // TODO i18n
}
function languageListTitle () {
return $( '<li class="ime-lang-title">' )
.text( 'Other languages' ); // TODO i18n