Merge "Only use jQuery.tipsy for undo popover"
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 ) {
|
||||||
deferred.resolve( autonym );
|
mw.loader.using( 'jquery.tipsy', function () {
|
||||||
|
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
|
previousLanguages.push( currentLang );
|
||||||
newLanguage = currentLang !== previousLang;
|
mw.uls.setPreviousLanguages( previousLanguages );
|
||||||
// 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 );
|
|
||||||
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