r106469 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r106468‎ | r106469 | r106470 >
Date:19:40, 16 December 2011
Author:rsterbin
Status:resolved
Tags:
Comment:
Added edit tracking and tweaked tracking ids for bug #32992:
- modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.js:
- Renamed tracking ids:
- {option}-button-click-{location} to {option}-button_click-{location}
- {option}-{cta}-button-click-{location} to {option}-{cta}-button_click-{location}
- All CTA names from cta-{name} to cta_{name}
- Learn more CTA name from learnmore to learn_more
- {option}-overlay-impression to {option}-impression-overlay
- {option}-overlay-close to {option}-close-overlay
- Updated editUrl() to send articleFeedbackv5_click_tracking, and if
it's on, to also send articleFeedbackv5_bucket_id,
articleFeedbackv5_cta_id, articleFeedbackv5_link_id, and
articleFeedbackv5_ct_token
* NB: Although nothing else is being done with these parameters at
this time, future versions may use them outside of click tracking.
- ArticleFeedbackv5.hooks.php:
- Updated pushTrackingFieldsToEdit() to send
articleFeedbackv5_click_tracking, articleFeedbackv5_bucket_id,
articleFeedbackv5_cta_id, articleFeedbackv5_link_id, and
articleFeedbackv5_ct_token
- Made trackEdit() private and updated it to call out to click
tracking, if articleFeedbackv5_click_tracking is on
- Added trackEditAttempt() and trackEditSuccess()
- ArticleFeedbackv5.php:
- Changed ArticleSaveComplete hook to trackEditSuccess
- Added EditPage::attemptSave hook to trackEditAttempt
Modified paths:
  • /trunk/extensions/ArticleFeedbackv5/ArticleFeedbackv5.hooks.php (modified) (history)
  • /trunk/extensions/ArticleFeedbackv5/ArticleFeedbackv5.php (modified) (history)
  • /trunk/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.js (modified) (history)

Diff [purge]

Index: trunk/extensions/ArticleFeedbackv5/modules/jquery.articleFeedbackv5/jquery.articleFeedbackv5.js
@@ -1128,7 +1128,7 @@
11291129 .attr( 'href', mw.config.get( 'wgArticleFeedbackv5LearnToEdit' ) );
11301130
11311131 // Fill in the edit link
1132 - var edit_track_id = $.articleFeedbackv5.buttonName() + '-button-click-' +
 1132+ var edit_track_id = $.articleFeedbackv5.bucketName() + '-button_click-' +
11331133 ( $.articleFeedbackv5.inDialog ? 'overlay' : 'bottom' );
11341134 $block.find( '.articleFeedbackv5-cta-button' )
11351135 .attr( 'href', $.articleFeedbackv5.editUrl( edit_track_id ) );
@@ -1903,7 +1903,7 @@
19041904
19051905 // Fill in the link
19061906 var edit_track_id = $.articleFeedbackv5.bucketName() + '-' +
1907 - $.articleFeedbackv5.ctaName() + '-button-click-' +
 1907+ $.articleFeedbackv5.ctaName() + '-button_click-' +
19081908 ( $.articleFeedbackv5.inDialog ? 'overlay': 'bottom' );
19091909 $block.find( '.articleFeedbackv5-cta-button' )
19101910 .attr( 'href', $.articleFeedbackv5.editUrl( edit_track_id ) );
@@ -2251,13 +2251,13 @@
22522252 */
22532253 $.articleFeedbackv5.ctaName = function () {
22542254 if ( '0' == $.articleFeedbackv5.ctaId ) {
2255 - return 'cta-none';
 2255+ return 'cta_none';
22562256 } else if ( '1' == $.articleFeedbackv5.ctaId ) {
2257 - return 'cta-edit';
 2257+ return 'cta_edit';
22582258 } else if ( '2' == $.articleFeedbackv5.ctaId ) {
2259 - return 'cta-learnmore';
 2259+ return 'cta_learn_more';
22602260 } else {
2261 - return 'cta-unknown';
 2261+ return 'cta_unknown';
22622262 }
22632263 };
22642264
@@ -2290,16 +2290,15 @@
22912291 var params = {
22922292 'title': mw.config.get( 'wgPageName' ),
22932293 'action': 'edit',
 2294+ 'articleFeedbackv5_click_tracking': $.articleFeedbackv5.clickTracking ? '1' : '0',
22942295 };
2295 - if ( $.articleFeedbackv5.bucketId ) {
 2296+ if ( $.articleFeedbackv5.clickTracking ) {
 2297+ params.articleFeedbackv5_ct_token = $.cookie( 'clicktracking-session' );
22962298 params.articleFeedbackv5_bucket_id = $.articleFeedbackv5.bucketId;
 2299+ params.articleFeedbackv5_cta_id = $.articleFeedbackv5.ctaId;
 2300+ params.articleFeedbackv5_link_id = $.articleFeedbackv5.linkId;
 2301+ params.articleFeedbackv5_location = $.articleFeedbackv5.inDialog ? 'overlay' : 'bottom';
22972302 }
2298 - if ( $.articleFeedbackv5.ctaId ) {
2299 - params.articleFeedbackv5_cta_id = $.articleFeedbackv5.ctaId;
2300 - }
2301 - if ( $.articleFeedbackv5.feedbackId ) {
2302 - params.articleFeedbackv5_feedback_id = $.articleFeedbackv5.feedbackId;
2303 - }
23042303 var url = mw.config.get( 'wgScript' ) + '?' + $.param( params );
23052304 if ( trackingId ) {
23062305 return $.articleFeedbackv5.trackingUrl( url, trackingId );
@@ -2463,10 +2462,10 @@
24642463
24652464 // Track the event
24662465 if ( $.articleFeedbackv5.inDialog ) {
2467 - $.articleFeedbackv5.trackClick( $.articleFeedbackv5.bucketName() + '-overlay-impression' );
 2466+ $.articleFeedbackv5.trackClick( $.articleFeedbackv5.bucketName() + '-impression-overlay' );
24682467 } else {
24692468 // Don't track bottom-of-the-page loads, at least for now
2470 - // $.articleFeedbackv5.trackClick( $.articleFeedbackv5.bucketName() + '-bottom-impression' );
 2469+ // $.articleFeedbackv5.trackClick( $.articleFeedbackv5.bucketName() + '-impression-bottom' );
24712470 }
24722471
24732472 $.articleFeedbackv5.nowShowing = 'form';
@@ -2912,10 +2911,10 @@
29132912 $.articleFeedbackv5.closeAsModal = function () {
29142913 if ( $.articleFeedbackv5.inDialog ) {
29152914 if ( 'form' == $.articleFeedbackv5.nowShowing ) {
2916 - $.articleFeedbackv5.trackClick( $.articleFeedbackv5.bucketName() + '-overlay-close' );
 2915+ $.articleFeedbackv5.trackClick( $.articleFeedbackv5.bucketName() + '-close-overlay' );
29172916 } else if ('cta' == $.articleFeedbackv5.nowShowing ) {
29182917 $.articleFeedbackv5.trackClick( $.articleFeedbackv5.bucketName() + '-' +
2919 - $.articleFeedbackv5.ctaName() + '-overlay-close' );
 2918+ $.articleFeedbackv5.ctaName() + '-close-overlay' );
29202919 }
29212920 $.articleFeedbackv5.setLinkId( '0' );
29222921 $.articleFeedbackv5.$dialog.find( '.articleFeedbackv5-tooltip' ).hide();
Index: trunk/extensions/ArticleFeedbackv5/ArticleFeedbackv5.php
@@ -239,7 +239,8 @@
240240 $wgHooks['ResourceLoaderGetConfigVars'][] = 'ArticleFeedbackv5Hooks::resourceLoaderGetConfigVars';
241241 $wgHooks['GetPreferences'][] = 'ArticleFeedbackv5Hooks::getPreferences';
242242 $wgHooks['EditPage::showEditForm:fields'][] = 'ArticleFeedbackv5Hooks::pushTrackingFieldsToEdit';
243 -$wgHooks['ArticleSaveComplete'][] = 'ArticleFeedbackv5Hooks::trackEdit';
 243+$wgHooks['EditPage::attemptSave'][] = 'ArticleFeedbackv5Hooks::trackEditAttempt';
 244+$wgHooks['ArticleSaveComplete'][] = 'ArticleFeedbackv5Hooks::trackEditSuccess';
244245
245246 // API Registration
246247 //$wgAPIListModules['articlefeedbackv5-view-ratings'] = 'ApiViewRatingsArticleFeedbackv5';
Index: trunk/extensions/ArticleFeedbackv5/ArticleFeedbackv5.hooks.php
@@ -286,33 +286,81 @@
287287 public static function pushTrackingFieldsToEdit( $editPage, $output ) {
288288 global $wgRequest;
289289
290 - $feedbackId = $wgRequest->getVal( 'articleFeedbackv5_feedback_id' );
291 - $ctaId = $wgRequest->getVal( 'articleFeedbackv5_cta_id' );
 290+ $tracking = $wgRequest->getVal( 'articleFeedbackv5_click_tracking' );
292291 $bucketId = $wgRequest->getVal( 'articleFeedbackv5_bucket_id' );
 292+ $ctaId = $wgRequest->getVal( 'articleFeedbackv5_cta_id' );
 293+ $location = $wgRequest->getVal( 'articleFeedbackv5_location' );
 294+ $token = $wgRequest->getVal( 'articleFeedbackv5_ct_token' );
293295
294 - $editPage->editFormTextAfterContent .= Html::hidden( 'articleFeedbackv5_feedback_id', $feedbackId );
 296+ $editPage->editFormTextAfterContent .= Html::hidden( 'articleFeedbackv5_click_tracking', $tracking );
 297+ $editPage->editFormTextAfterContent .= Html::hidden( 'articleFeedbackv5_bucket_id', $bucketId );
295298 $editPage->editFormTextAfterContent .= Html::hidden( 'articleFeedbackv5_cta_id', $ctaId );
296 - $editPage->editFormTextAfterContent .= Html::hidden( 'articleFeedbackv5_bucket_id', $bucketId );
 299+ $editPage->editFormTextAfterContent .= Html::hidden( 'articleFeedbackv5_location', $location );
 300+ $editPage->editFormTextAfterContent .= Html::hidden( 'articleFeedbackv5_ct_token', $token );
297301
298302 return true;
299303 }
300304
301305 /**
302 - * Tracks edits
 306+ * Tracks edit attempts
303307 *
 308+ * @see http://www.mediawiki.org/wiki/Manual:Hooks/EditPage::attemptSave
 309+ */
 310+ public static function trackEditAttempt( $editpage ) {
 311+ self::trackEvent( 'edit_attempt' );
 312+ return true;
 313+ }
 314+
 315+ /**
 316+ * Tracks successful edits
 317+ *
304318 * @see http://www.mediawiki.org/wiki/Manual:Hooks/ArticleSaveComplete
305319 */
306 - public static function trackEdit( $article, $user, $text, $summary, $minoredit,
307 - $watchthis, $sectionanchor, $flags, $revision, $baseRevId ) {
308 - global $wgRequest;
 320+ public static function trackEditSuccess( &$article, &$user, $text,
 321+ $summary, $minoredit, $watchthis, $sectionanchor, &$flags,
 322+ $revision, &$status, $baseRevId, &$redirect) {
 323+ self::trackEvent( 'edit_success' );
 324+ return true;
 325+ }
309326
310 - $feedbackId = $wgRequest->getVal( 'articleFeedbackv5_feedback_id' );
311 - $ctaId = $wgRequest->getVal( 'articleFeedbackv5_cta_id' );
 327+ /**
 328+ * Internal use: Tracks an event
 329+ *
 330+ * @param $event string the event name
 331+ */
 332+ private static function trackEvent( $event ) {
 333+ global $wgRequest,
 334+ $wgArticleFeedbackv5Tracking,
 335+ $wgTitle;
 336+ $ctas = array( 'none', 'edit', 'learn_more' );
 337+
 338+ $tracking = $wgRequest->getVal( 'articleFeedbackv5_click_tracking' );
 339+ if ( !$tracking ) {
 340+ return;
 341+ }
 342+
 343+ $version = $wgArticleFeedbackv5Tracking['version'];
312344 $bucketId = $wgRequest->getVal( 'articleFeedbackv5_bucket_id' );
 345+ $ctaId = $wgRequest->getVal( 'articleFeedbackv5_cta_id' );
 346+ $location = $wgRequest->getVal( 'articleFeedbackv5_location' );
 347+ $token = $wgRequest->getVal( 'articleFeedbackv5_ct_token' );
313348
314 - return true;
 349+ $trackingId = 'ext.articleFeedbackv5@' . $version
 350+ . '-option' . $bucketId
 351+ . '-cta_' . ( isset( $ctas[$ctaId] ) ? $ctas[$ctaId] : 'unknown' )
 352+ . '-' . $event
 353+ . '-' . $location;
 354+
 355+ $params = new FauxRequest( array(
 356+ 'action' => 'clicktracking',
 357+ 'eventid' => $trackingId,
 358+ 'token' => $token,
 359+ 'info' => $wgTitle->getText(),
 360+ 'namespacenumber' => $wgTitle->getNamespace()
 361+ ) );
 362+ $api = new ApiMain( $params, true );
 363+ $api->execute();
315364 }
316365
317 -
318366 }
319367

Follow-up revisions

RevisionCommit summaryAuthorDate
r106471Missed an underscore for the learn more url link click tracking id in r106469rsterbin19:59, 16 December 2011
r106661Followup r106469, death to $wgTitlecatrope16:09, 19 December 2011

Past revisions this follows-up on

RevisionCommit summaryAuthorDate
r106251First pass addressing bug #32992:...rsterbin22:06, 14 December 2011
r106267Tweaks to tracking ids for bug #32992:...rsterbin22:30, 14 December 2011
r106268Tweak for bug #32992 -- renamed learn-more cta to learnmorersterbin22:36, 14 December 2011

Status & tagging log