Only use jQuery.tipsy for undo popover
Per discussion on Gerrit about previous patch-sets in this change, only use jQuery.tipsy for the undo popover. This means that in the common case (i.e., the user has not just changed languages), the ULS tooltip will be system native tooltip. Change-Id: I9206a79d59687930c26b7ef86d29bfba050691fe
This commit is contained in:
@@ -112,7 +112,6 @@ $wgResourceModules['ext.uls.interface'] = array(
|
|||||||
'scripts' => 'resources/js/ext.uls.interface.js',
|
'scripts' => 'resources/js/ext.uls.interface.js',
|
||||||
'dependencies' => array(
|
'dependencies' => array(
|
||||||
'ext.uls.init',
|
'ext.uls.init',
|
||||||
'jquery.tipsy',
|
|
||||||
'mediawiki.jqueryMsg',
|
'mediawiki.jqueryMsg',
|
||||||
'mediawiki.user',
|
'mediawiki.user',
|
||||||
// We cannot delay the loading of the basic webfonts library
|
// We cannot delay the loading of the basic webfonts library
|
||||||
|
|||||||
@@ -197,7 +197,6 @@
|
|||||||
"scripts": "js/ext.uls.interface.js",
|
"scripts": "js/ext.uls.interface.js",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"ext.uls.init",
|
"ext.uls.init",
|
||||||
"jquery.tipsy",
|
|
||||||
"mediawiki.jqueryMsg",
|
"mediawiki.jqueryMsg",
|
||||||
"mediawiki.user",
|
"mediawiki.user",
|
||||||
"ext.uls.webfonts"
|
"ext.uls.webfonts"
|
||||||
|
|||||||
@@ -174,9 +174,11 @@
|
|||||||
autonym = $.cookie( mw.uls.previousLanguageAutonymCookie );
|
autonym = $.cookie( mw.uls.previousLanguageAutonymCookie );
|
||||||
|
|
||||||
if ( autonym ) {
|
if ( autonym ) {
|
||||||
|
mw.loader.using( 'jquery.tipsy', function () {
|
||||||
deferred.resolve( autonym );
|
deferred.resolve( autonym );
|
||||||
|
} );
|
||||||
} else {
|
} else {
|
||||||
mw.loader.using( 'jquery.uls.data', function () {
|
mw.loader.using( [ 'jquery.uls.data', 'jquery.tipsy' ], function () {
|
||||||
deferred.resolve( $.uls.data.getAutonym( code ) );
|
deferred.resolve( $.uls.data.getAutonym( code ) );
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
@@ -184,12 +186,22 @@
|
|||||||
return deferred.promise();
|
return deferred.promise();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function userCanChangeLanguage() {
|
||||||
|
return mw.config.get( 'wgULSAnonCanChangeLanguage') || !mw.user.isAnon();
|
||||||
|
}
|
||||||
|
|
||||||
|
function userHasChangedLanguage() {
|
||||||
|
var previousLang = mw.uls.getPreviousLanguages().slice( -1 )[ 0 ],
|
||||||
|
currentLang = mw.config.get( 'wgUserLanguage' );
|
||||||
|
return previousLang && previousLang !== currentLang;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The tooltip to be shown when language changed using ULS.
|
* The tooltip to be shown when language changed using ULS.
|
||||||
* It also allows to undo the language selection.
|
* It also allows to undo the language selection.
|
||||||
*/
|
*/
|
||||||
function showULSTooltip() {
|
function showUndoTooltip() {
|
||||||
var previousLang, $ulsTrigger, anonMode, showUndo, newLanguage, previousLanguages,
|
var previousLanguages, previousLang, $ulsTrigger,
|
||||||
ulsPosition = mw.config.get( 'wgULSPosition' ),
|
ulsPosition = mw.config.get( 'wgULSPosition' ),
|
||||||
currentLang = mw.config.get( 'wgUserLanguage' ),
|
currentLang = mw.config.get( 'wgUserLanguage' ),
|
||||||
rtlPage = $( 'body' ).hasClass( 'rtl' ),
|
rtlPage = $( 'body' ).hasClass( 'rtl' ),
|
||||||
@@ -202,26 +214,11 @@
|
|||||||
$( '.uls-settings-trigger' ) :
|
$( '.uls-settings-trigger' ) :
|
||||||
$( '.uls-trigger' );
|
$( '.uls-trigger' );
|
||||||
|
|
||||||
previousLanguages = mw.uls.getPreviousLanguages() || [];
|
previousLanguages = mw.uls.getPreviousLanguages();
|
||||||
previousLang = previousLanguages.slice( -1 )[0];
|
previousLang = previousLanguages.slice( -1 )[0];
|
||||||
|
|
||||||
// Whether we see current language for the first time
|
|
||||||
newLanguage = currentLang !== previousLang;
|
|
||||||
// Whether user is able to change language
|
|
||||||
anonMode = ( mw.user.isAnon() && !mw.config.get( 'wgULSAnonCanChangeLanguage' ) );
|
|
||||||
// Whether user is able to change language, and just did so
|
|
||||||
showUndo = !anonMode && newLanguage && previousLang !== undefined;
|
|
||||||
|
|
||||||
if ( newLanguage ) {
|
|
||||||
previousLanguages.push( currentLang );
|
previousLanguages.push( currentLang );
|
||||||
mw.uls.setPreviousLanguages( previousLanguages );
|
mw.uls.setPreviousLanguages( previousLanguages );
|
||||||
}
|
|
||||||
|
|
||||||
if ( !showUndo ) {
|
|
||||||
// In interlanguage mode, we will have normal tooltip, make it look same using tipsy
|
|
||||||
$ulsTrigger.tipsy( { gravity: tipsyGravity[ulsPosition] } );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
getUndoAutonym( previousLang ).done( function( autonym ) {
|
getUndoAutonym( previousLang ).done( function( autonym ) {
|
||||||
// Attach a tipsy tooltip to the trigger
|
// Attach a tipsy tooltip to the trigger
|
||||||
@@ -475,7 +472,9 @@
|
|||||||
return false;
|
return false;
|
||||||
} );
|
} );
|
||||||
|
|
||||||
showULSTooltip();
|
if ( userCanChangeLanguage() && userHasChangedLanguage() ) {
|
||||||
|
showUndoTooltip();
|
||||||
|
}
|
||||||
|
|
||||||
$( 'body' ).on( 'focus.imeinit', imeSelector, function () {
|
$( 'body' ).on( 'focus.imeinit', imeSelector, function () {
|
||||||
var $input = $( this );
|
var $input = $( this );
|
||||||
|
|||||||
Reference in New Issue
Block a user