Refactor showULSTooltip

Makes the code easier to understand and fixes T52743

Bug: T52743
Change-Id: If508f26b5133284f3059b50d420066a8b4fefb07
This commit is contained in:
Niklas Laxström
2015-03-26 14:13:59 +01:00
committed by Nikerabbit
parent db44516b27
commit d574548d41

View File

@@ -189,37 +189,37 @@
* It also allows to undo the language selection. * It also allows to undo the language selection.
*/ */
function showULSTooltip() { function showULSTooltip() {
var ulsPosition = mw.config.get( 'wgULSPosition' ), var previousLang, $ulsTrigger, anonMode, showUndo, newLanguage, previousLanguages,
ulsPosition = mw.config.get( 'wgULSPosition' ),
currentLang = mw.config.get( 'wgUserLanguage' ), currentLang = mw.config.get( 'wgUserLanguage' ),
previousLang,
$ulsTrigger,
anonMode,
rtlPage = $( 'body' ).hasClass( 'rtl' ), rtlPage = $( 'body' ).hasClass( 'rtl' ),
tipsyGravity = { tipsyGravity = {
personal: 'n', personal: 'n',
interlanguage: rtlPage ? 'e' : 'w' interlanguage: rtlPage ? 'e' : 'w'
}, };
previousLanguages = mw.uls.getPreviousLanguages() || [];
previousLang = previousLanguages.slice( -1 )[0];
$ulsTrigger = ( ulsPosition === 'interlanguage' ) ? $ulsTrigger = ( ulsPosition === 'interlanguage' ) ?
$( '.uls-settings-trigger' ) : $( '.uls-settings-trigger' ) :
$( '.uls-trigger' ); $( '.uls-trigger' );
if ( previousLang === currentLang ) { previousLanguages = mw.uls.getPreviousLanguages() || [];
$ulsTrigger.tipsy( { gravity: rtlPage ? 'e' : 'w' } ); previousLang = previousLanguages.slice( -1 )[0];
return; // 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 );
}
anonMode = ( mw.user.isAnon() && !mw.config.get( 'wgULSAnonCanChangeLanguage' ) ); if ( !showUndo ) {
// In interlanguage mode, we will have normal tooltip, make it look same using tipsy
if ( anonMode || !previousLang ) { $ulsTrigger.tipsy( { gravity: tipsyGravity[ulsPosition] } );
// Do not show tooltip
return; return;
} }