jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/376427 )
Change subject: Add support for Schema:Print ...................................................................... Add support for Schema:Print Bug: T169730 Change-Id: Id506d44f572687ff9c26118ceaa69c6146fedf86 --- M WikimediaEventsHooks.php M extension.json A modules/ext.wikimediaEvents.print.js 3 files changed, 117 insertions(+), 1 deletion(-) Approvals: Pmiazga: Looks good to me, approved jenkins-bot: Verified diff --git a/WikimediaEventsHooks.php b/WikimediaEventsHooks.php index 709eb12..ff1836c 100644 --- a/WikimediaEventsHooks.php +++ b/WikimediaEventsHooks.php @@ -413,10 +413,15 @@ } public static function onResourceLoaderGetConfigVars( &$vars ) { - global $wgWMEStatsdBaseUri, $wgWMEReadingDepthSamplingRate, $wgWMEReadingDepthEnabled; + global $wgWMEStatsdBaseUri, $wgWMEReadingDepthSamplingRate, + $wgWMEReadingDepthEnabled, $wgWMEPrintSamplingRate, + $wgWMEPrintEnabled; + $vars['wgWMEStatsdBaseUri'] = $wgWMEStatsdBaseUri; $vars['wgWMEReadingDepthSamplingRate'] = $wgWMEReadingDepthSamplingRate; $vars['wgWMEReadingDepthEnabled'] = $wgWMEReadingDepthEnabled; + $vars['wgWMEPrintSamplingRate'] = $wgWMEPrintSamplingRate; + $vars['wgWMEPrintEnabled'] = $wgWMEPrintEnabled; } /** diff --git a/extension.json b/extension.json index db369ac..ed8b003 100644 --- a/extension.json +++ b/extension.json @@ -94,6 +94,11 @@ "schema": "DeprecatedUsage", "revision": 7906187 }, + "schema.Print": { + "class": "ResourceLoaderSchemaModule", + "schema": "Print", + "revision": 17199246 + }, "schema.ReadingDepth": { "class": "ResourceLoaderSchemaModule", "schema": "ReadingDepth", @@ -164,6 +169,7 @@ "ext.wikimediaEvents.events.js", "ext.wikimediaEvents.statsd.js", "ext.wikimediaEvents.kartographer.js", + "ext.wikimediaEvents.print.js", "ext.wikimediaEvents.readingDepth.js", "ext.wikimediaEvents.geoFeatures.js", "ext.wikimediaEvents.recentChangesClicks.js" @@ -221,6 +227,8 @@ "remoteExtPath": "WikimediaEvents/modules" }, "config": { + "WMEPrintSamplingRate": 0.1, + "WMEPrintEnabled": false, "WMEReadingDepthSamplingRate": 0.005, "WMEReadingDepthEnabled": false, "WMEStatsdBaseUri": false, diff --git a/modules/ext.wikimediaEvents.print.js b/modules/ext.wikimediaEvents.print.js new file mode 100644 index 0000000..b9c1ddf --- /dev/null +++ b/modules/ext.wikimediaEvents.print.js @@ -0,0 +1,103 @@ +/* + * Track browser print events + * + * Each action is only logged once per page view. That is, no matter how many + * times the user clicks on 'Printable Version', only one + * 'clickPrintableVersion' action is logged for that page until the page is + * refreshed. Ditto the `onBeforePrint` action. + * + * @see https://phabricator.wikimedia.org/T169730 + * @see https://meta.wikimedia.org/wiki/Schema:Print + */ +( function ( $, track, config, user, mwExperiments ) { + /** + * Log an event to the Schema:Print + * + * @param {string} action a valid value for the action property inside the + * schema Schema:Print + */ + function logEvent( action ) { + track( 'event.Print', { + sessionToken: user.sessionId(), + isAnon: user.isAnon(), + pageTitle: config.get( 'wgPageName' ), + namespaceId: config.get( 'wgNamespaceNumber' ), + skin: config.get( 'skin' ), + action: action + } ); + } + + /** + * Whether the user session is sampled + * + * @param {number} samplingRate - a float between 0 and 1 for which events + * in the schema should be logged. + * @return {boolean} + */ + function isInSample( samplingRate ) { + var bucket = mwExperiments.getBucket( { + name: 'WMEPrint', + enabled: true, + buckets: { + control: 1 - samplingRate, + A: samplingRate + } + }, user.sessionId() ); + return bucket === 'A'; + } + + /** + * Log the click on the 'Printable Version' link. + * Do it only once. + */ + function setupClickLogging() { + var EVENT_NAME = 'clickPrintableVersion', + $link = $( 'a', '#t-print' ); + + function log() { + $link.off( 'click', log ); + logEvent( EVENT_NAME ); + } + + $link.on( 'click', log ); + } + + /** + * Log the event of printing. + * Do it only once. + */ + function setupPrintLogging() { + var mediaQueryList, + EVENT_NAME = 'onBeforePrint'; + + function logMatchMedia( event ) { + if ( event.matches ) { + mediaQueryList.removeListener( logMatchMedia ); + logEvent( EVENT_NAME ); + } + } + + function logBeforePrint() { + $( window ).off( 'beforeprint', logBeforePrint ); + logEvent( EVENT_NAME ); + } + + // Chrome, Safari, and Opera + if ( 'matchMedia' in window && !( 'onbeforeprint' in window ) ) { + mediaQueryList = window.matchMedia( 'print' ); + mediaQueryList.addListener( logMatchMedia ); + } else { + // IE, Edge, and Firefox + $( window ).on( 'beforeprint', logBeforePrint ); + } + } + + if ( config.get( 'wgWMEPrintEnabled' ) && + isInSample( config.get( 'wgWMEPrintSamplingRate', 0 ) ) + ) { + $( function () { + setupClickLogging(); + setupPrintLogging(); + } ); + } +}( jQuery, mediaWiki.track, mediaWiki.config, mediaWiki.user, mediaWiki.experiments ) ); -- To view, visit https://gerrit.wikimedia.org/r/376427 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Id506d44f572687ff9c26118ceaa69c6146fedf86 Gerrit-PatchSet: 8 Gerrit-Project: mediawiki/extensions/WikimediaEvents Gerrit-Branch: master Gerrit-Owner: Bmansurov <bmansu...@wikimedia.org> Gerrit-Reviewer: Bmansurov <bmansu...@wikimedia.org> Gerrit-Reviewer: Pmiazga <pmia...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits