jenkins-bot has submitted this change and it was merged.

Change subject: Hygiene: Use mw.eventLog.Schema for logging 
MobileWebMainMenuClickTracking events
......................................................................


Hygiene: Use mw.eventLog.Schema for logging MobileWebMainMenuClickTracking 
events

Load the schema file only when needed and do not bundle it with
other schema files.

Bug: T122504
Change-Id: I71fb074226c3d0f0a0d8a32de3794158adfb0e48
---
M extension.json
M includes/MobileFrontend.hooks.php
A resources/mobile.loggingSchemas/schemaMobileWebMainMenuClickTracking.js
M resources/mobile.mainMenu/MainMenu.js
M resources/skins.minerva.scripts/initLogging.js
5 files changed, 59 insertions(+), 11 deletions(-)

Approvals:
  Phuedx: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/extension.json b/extension.json
index 63f45c4..d5e9b32 100644
--- a/extension.json
+++ b/extension.json
@@ -372,7 +372,8 @@
                        ],
                        "dependencies": [
                                "mobile.view",
-                               "mobile.browser"
+                               "mobile.browser",
+                               
"mobile.loggingSchemas.mobileWebMainMenuClickTracking"
                        ],
                        "position": "bottom",
                        "styles": [
diff --git a/includes/MobileFrontend.hooks.php 
b/includes/MobileFrontend.hooks.php
index 538bc48..d4c63fd 100644
--- a/includes/MobileFrontend.hooks.php
+++ b/includes/MobileFrontend.hooks.php
@@ -1153,7 +1153,6 @@
        private static function getEventLoggingSchemas() {
                return array(
                        'MobileWebDiffClickTracking' => 10720373,
-                       'MobileWebMainMenuClickTracking' => 11568715,
                        'MobileWebWatchlistClickTracking' => 10720361,
                );
        }
@@ -1176,6 +1175,7 @@
                $schemas += self::getEventLoggingSchemas();
                // eventually we'll get rid of the getEventLoggingSchemas 
function
                // FIXME: remove the above comment when we do
+               $schemas['MobileWebMainMenuClickTracking'] = 11568715;
                $schemas['MobileWebSearch'] = 12054448;
                $schemas['MobileWebLanguageSwitcher'] = 15302503;
                return true;
@@ -1202,6 +1202,7 @@
                $schemaModules = array();
                $schemaEdit = $mfResourceFileModuleBoilerplate;
                $schemaMobileWebLanguageSwitcher = 
$mfResourceFileModuleBoilerplate;
+               $schemaMobileWebMainMenuClickTracking = 
$mfResourceFileModuleBoilerplate;
                $schemaMobileWebSearch = $mfResourceFileModuleBoilerplate;
 
                if ( class_exists( 'EventLogging' ) ) {
@@ -1233,6 +1234,16 @@
                                        
'resources/mobile.loggingSchemas/schemaMobileWebLanguageSwitcher.js',
                                ),
                        );
+                       $schemaMobileWebMainMenuClickTracking += array(
+                               'dependencies' => array(
+                                       'schema.MobileWebMainMenuClickTracking',
+                                       'mobile.context',
+                                       'mobile.user'
+                               ),
+                               'scripts' => array(
+                                       
'resources/mobile.loggingSchemas/schemaMobileWebMainMenuClickTracking.js',
+                               )
+                       );
                        $schemaMobileWebSearch += array(
                                'dependencies' => array(
                                        'schema.MobileWebSearch',
@@ -1259,6 +1270,8 @@
                        'mobile.loggingSchemas.edit' => $schemaEdit,
                        'mobile.loggingSchemas.mobileWebLanguageSwitcher' =>
                                $schemaMobileWebLanguageSwitcher,
+                       'mobile.loggingSchemas.mobileWebMainMenuClickTracking' 
=>
+                               $schemaMobileWebMainMenuClickTracking,
                        'mobile.loggingSchemas.mobileWebSearch' => 
$schemaMobileWebSearch,
                ) );
        }
diff --git 
a/resources/mobile.loggingSchemas/schemaMobileWebMainMenuClickTracking.js 
b/resources/mobile.loggingSchemas/schemaMobileWebMainMenuClickTracking.js
new file mode 100755
index 0000000..551839b
--- /dev/null
+++ b/resources/mobile.loggingSchemas/schemaMobileWebMainMenuClickTracking.js
@@ -0,0 +1,35 @@
+( function ( M ) {
+       var user = M.require( 'mobile.user/user' ),
+               context = M.require( 'mobile.context/context' ),
+               /**
+                * MobileWebMainMenuClickTracking schema
+                * 
https://meta.wikimedia.org/wiki/Schema:MobileWebMainMenuClickTracking
+                *
+                * @class MobileWebMainMenuClickTracking
+                * @singleton
+                */
+               schemaMobileWebMainMenuClickTracking = new mw.eventLog.Schema(
+                       'MobileWebMainMenuClickTracking',
+                       0.5,
+                       /**
+                        * @cfg {Object} defaults Default options hash
+                        * @cfg {String} defaults.mobileMode whether user is in 
stable or beta
+                        * @cfg {String|undefined} 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.
+                        * @cfg {Number|undefined} 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( 'mf.schemaMobileWebMainMenuClickTracking', function 
( topic, data ) {
+               schemaMobileWebMainMenuClickTracking.log( data );
+       } );
+} )( mw.mobileFrontend );
diff --git a/resources/mobile.mainMenu/MainMenu.js 
b/resources/mobile.mainMenu/MainMenu.js
index 77bf925..062d576 100644
--- a/resources/mobile.mainMenu/MainMenu.js
+++ b/resources/mobile.mainMenu/MainMenu.js
@@ -68,14 +68,16 @@
                /**
                 * Turn on event logging on the existing main menu by reading 
`event-name` data
                 * attributes on elements.
-                * @param {SchemaMobileWebClickTracking} schema to use
                 */
-               enableLogging: function ( schema ) {
-                       this.$( 'a' ).each( function () {
+               enableLogging: function () {
+                       this.$( 'a' ).on( 'click', function () {
                                var $link = $( this ),
                                        eventName = $link.data( 'event-name' );
                                if ( eventName ) {
-                                       schema.hijackLink( $link, eventName );
+                                       mw.track( 
'mf.schemaMobileWebMainMenuClickTracking', {
+                                               name: eventName,
+                                               destination: $link.attr( 'href' 
)
+                                       } );
                                }
                        } );
                },
diff --git a/resources/skins.minerva.scripts/initLogging.js 
b/resources/skins.minerva.scripts/initLogging.js
index 2765f1b..8979e03 100644
--- a/resources/skins.minerva.scripts/initLogging.js
+++ b/resources/skins.minerva.scripts/initLogging.js
@@ -1,12 +1,9 @@
 // This initialises EventLogging for main menu and some prominent links in the 
UI.
 // This code should only be loaded on the Minerva skin, it does not apply to 
other skins.
 ( function ( M, $ ) {
-       var SchemaMobileWebClickTracking = M.require(
-                       'mobile.loggingSchemas/SchemaMobileWebClickTracking' ),
-               skin = M.require( 'skins.minerva.scripts/skin' ),
-               mainMenuSchema = new SchemaMobileWebClickTracking( {}, 
'MobileWebMainMenuClickTracking' );
+       var skin = M.require( 'skins.minerva.scripts/skin' );
 
        $( function () {
-               skin.getMainMenu().enableLogging( mainMenuSchema );
+               skin.getMainMenu().enableLogging();
        } );
 } )( mw.mobileFrontend, jQuery );

-- 
To view, visit https://gerrit.wikimedia.org/r/273456
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I71fb074226c3d0f0a0d8a32de3794158adfb0e48
Gerrit-PatchSet: 10
Gerrit-Project: mediawiki/extensions/MobileFrontend
Gerrit-Branch: master
Gerrit-Owner: Bmansurov <[email protected]>
Gerrit-Reviewer: Bmansurov <[email protected]>
Gerrit-Reviewer: Jdlrobson <[email protected]>
Gerrit-Reviewer: Phuedx <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to