Move MainMenu click tracking schema from MobileFrontend to Minerva

Additional changes:
* Rename hook prefix from 'mf.' to 'minerva.'
* Remove now unnecessary RL call

Bug: T204584
Change-Id: I50619e71c5a98e95c8aed3c3f346d4cb8a70abbe
This commit is contained in:
jdlrobson 2018-10-02 14:54:11 -07:00
parent e679f5207a
commit 33a7484676
5 changed files with 59 additions and 3 deletions

View File

@ -142,3 +142,10 @@ Group membership can be debugged from the console via:
And since session ID is an input in calculating the group, reassignment occurs
when clearing it: `mw.storage.session.remove('mwuser-sessionId')`.
#### $wgMinervaSchemaMainMenuClickTrackingSampleRate
Defines the sampling rate for the MobileWebMainMenuClickTracking schema.
* Type: `Number`
* Default: `0.5`

View File

@ -194,6 +194,8 @@ class MinervaHooks {
->makeConfig( 'minerva' );
$vars += [
'wgMinervaSchemaMainMenuClickTrackingSampleRate' =>
$config->get( 'MinervaSchemaMainMenuClickTrackingSampleRate' ),
'wgMinervaABSamplingRate' => $config->get( 'MinervaABSamplingRate' ),
'wgMinervaErrorLogSamplingRate' => $config->get( 'MinervaErrorLogSamplingRate' ),
'wgMinervaReadOnly' => wfReadOnly()

View File

@ -37,13 +37,11 @@
* @instance
*/
enableLogging: function () {
// Load the EventLogging module inside MobileFrontend if available
mw.loader.using( 'mobile.loggingSchemas.mobileWebMainMenuClickTracking' );
this.$( 'a' ).on( 'click', function () {
var $link = $( this ),
eventName = $link.data( 'event-name' );
if ( eventName ) {
mw.track( 'mf.schemaMobileWebMainMenuClickTracking', {
mw.track( 'minerva.schemaMobileWebMainMenuClickTracking', {
name: eventName,
destination: $link.attr( 'href' )
} );

View File

@ -0,0 +1,47 @@
/**
* This module is loaded by resources/skins.minerva.mainMenu/MainMenu.js
* inside the Minerva skin. It should be moved to Minerva at our earliest possible
* convenience.
*/
mw.loader.using( [
'ext.eventLogging.subscriber'
] ).then( function () {
var M = mw.mobileFrontend,
user = M.require( 'mobile.startup/user' ),
// Schema provided by ext.eventLogging.subscriber class
Schema = mw.eventLog.Schema, // resource-modules-disable-line
context = M.require( 'mobile.startup/context' ),
/**
* MobileWebMainMenuClickTracking schema
* https://meta.wikimedia.org/wiki/Schema:MobileWebMainMenuClickTracking
*
* @class MobileWebMainMenuClickTracking
* @singleton
*/
schemaMobileWebMainMenuClickTracking = new Schema(
'MobileWebMainMenuClickTracking',
// todo: use a default value of 0 once config lands in production (T205008).
mw.config.get( 'wgMinervaSchemaMainMenuClickTrackingSampleRate', 0.5 ),
/**
* @property {Object} defaults Default options hash.
* @property {string} defaults.mobileMode whether user is in stable or beta
* @property {string} [defaults.username] Username if the user is logged in,
* otherwise - undefined.
* Assigning undefined will make event logger omit this property when sending
* the data to a server. According to the schema username is optional.
* @property {number} [defaults.userEditCount] The number of edits the user has made
* if the user is logged in, otherwise - undefined. Assigning undefined will make event
* logger omit this property when sending the data to a server. According to the schema
* userEditCount is optional.
*/
{
mobileMode: context.getMode(),
username: user.getName() || undefined,
userEditCount: typeof user.getEditCount() === 'number' ? user.getEditCount() : undefined
}
);
mw.trackSubscribe( 'minerva.schemaMobileWebMainMenuClickTracking', function ( topic, data ) {
schemaMobileWebMainMenuClickTracking.log( data );
} );
} );

View File

@ -44,6 +44,7 @@
"base": false,
"beta": true
},
"MinervaSchemaMainMenuClickTrackingSampleRate": 0.5,
"MinervaABSamplingRate": 0
},
"ValidSkinNames": {
@ -366,6 +367,7 @@
"menuGroup.hogan": "resources/skins.minerva.mainMenu/menuGroup.mustache"
},
"scripts": [
"resources/skins.minerva.mainMenu/schema.js",
"resources/skins.minerva.mainMenu/MainMenu.js"
]
},