Implement language-selection-method event
Change-Id: If2d207f8a221c8f2a560b1399ad69a3032b2064b
This commit is contained in:
committed by
Nikerabbit
parent
e5891b83b5
commit
a3bca89a42
@@ -177,7 +177,7 @@ $wgExtensionFunctions[] = function() {
|
|||||||
$wgResourceModules['schema.UniversalLanguageSelector'] = array(
|
$wgResourceModules['schema.UniversalLanguageSelector'] = array(
|
||||||
'class' => 'ResourceLoaderSchemaModule',
|
'class' => 'ResourceLoaderSchemaModule',
|
||||||
'schema' => 'UniversalLanguageSelector',
|
'schema' => 'UniversalLanguageSelector',
|
||||||
'revision' => 5573536,
|
'revision' => 5729800,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
wfWarn( 'UniversalLanguageSelector is configured to use EventLogging, but '
|
wfWarn( 'UniversalLanguageSelector is configured to use EventLogging, but '
|
||||||
|
|||||||
@@ -295,12 +295,18 @@
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
onVisible: function () {
|
onVisible: function () {
|
||||||
|
var $parent;
|
||||||
|
|
||||||
|
mw.uls.addEventLoggingTriggers();
|
||||||
|
|
||||||
if ( !displaySettings.$parent.$window.hasClass( 'callout' ) ) {
|
if ( !displaySettings.$parent.$window.hasClass( 'callout' ) ) {
|
||||||
// callout menus will have position rules. others use
|
// callout menus will have position rules. others use
|
||||||
// default position
|
// default position
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var $parent = $( '#language-settings-dialog' );
|
|
||||||
|
$parent = $( '#language-settings-dialog' );
|
||||||
|
|
||||||
// Re-position the element according to the window that called it
|
// Re-position the element according to the window that called it
|
||||||
if ( parseInt( $parent.css( 'left' ), 10 ) ) {
|
if ( parseInt( $parent.css( 'left' ), 10 ) ) {
|
||||||
this.$menu.css( 'left', $parent.css( 'left' ) );
|
this.$menu.css( 'left', $parent.css( 'left' ) );
|
||||||
|
|||||||
@@ -146,11 +146,17 @@
|
|||||||
* @param {jQuery.Deferred} deferred
|
* @param {jQuery.Deferred} deferred
|
||||||
*/
|
*/
|
||||||
interfaceLanguageChange: function ( language, deferred ) {
|
interfaceLanguageChange: function ( language, deferred ) {
|
||||||
this.log( {
|
var logParams = {
|
||||||
action: 'language-change',
|
action: 'language-change',
|
||||||
context: 'interface',
|
context: 'interface',
|
||||||
interfaceLanguage: language
|
interfaceLanguage: language
|
||||||
} ).always( deferred.resolve );
|
};
|
||||||
|
|
||||||
|
if ( mw.uls.languageSelectionMethod !== undefined ) {
|
||||||
|
logParams.languageSelectionMethod = mw.uls.languageSelectionMethod;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.log( logParams ).always( deferred.resolve );
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -39,6 +39,39 @@
|
|||||||
mw.uls.previousLanguagesCookie = 'uls-previous-languages';
|
mw.uls.previousLanguagesCookie = 'uls-previous-languages';
|
||||||
mw.uls.languageSettingsModules = ['ext.uls.inputsettings', 'ext.uls.displaysettings'];
|
mw.uls.languageSettingsModules = ['ext.uls.inputsettings', 'ext.uls.displaysettings'];
|
||||||
|
|
||||||
|
// What was the last thing that the user did to select the language:
|
||||||
|
// * 'map' - clicked the map
|
||||||
|
// * 'search' - typed in the search box
|
||||||
|
// * 'common' - clicked a link in the "Common languages" section
|
||||||
|
// If the user just clicked in some other section, it remains undefined.
|
||||||
|
// This is useful for logging.
|
||||||
|
mw.uls.languageSelectionMethod = undefined;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add event logging triggers, which are common to different
|
||||||
|
* ULS instances
|
||||||
|
*/
|
||||||
|
mw.uls.addEventLoggingTriggers = function () {
|
||||||
|
// Remove previous values when reinitializing
|
||||||
|
mw.uls.languageSelectionMethod = undefined;
|
||||||
|
|
||||||
|
$( '#map-block' ).on( 'click', function () {
|
||||||
|
mw.uls.languageSelectionMethod = 'map';
|
||||||
|
} );
|
||||||
|
|
||||||
|
$( '#languagefilter' ).on( 'keydown', function () {
|
||||||
|
// If it's the first letter,
|
||||||
|
// log the usage of the search box
|
||||||
|
if ( $( this ).val() === '' ) {
|
||||||
|
mw.uls.languageSelectionMethod = 'search';
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
|
||||||
|
$( '#uls-lcd-quicklist a' ).on( 'click', function () {
|
||||||
|
mw.uls.languageSelectionMethod = 'common';
|
||||||
|
} );
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Change the language of wiki using setlang URL parameter
|
* Change the language of wiki using setlang URL parameter
|
||||||
* @param {string} language Language code.
|
* @param {string} language Language code.
|
||||||
|
|||||||
@@ -420,6 +420,9 @@
|
|||||||
},
|
},
|
||||||
onSelect: function ( language ) {
|
onSelect: function ( language ) {
|
||||||
mw.uls.changeLanguage( language );
|
mw.uls.changeLanguage( language );
|
||||||
|
},
|
||||||
|
onVisible: function () {
|
||||||
|
mw.uls.addEventLoggingTriggers();
|
||||||
}
|
}
|
||||||
} ).trigger( 'click', eventParams );
|
} ).trigger( 'click', eventParams );
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user