Brion VIBBER has submitted this change and it was merged. Change subject: Add event logging to photo uploads ......................................................................
Add event logging to photo uploads Change-Id: Ie344a292dd3289d35cf222ac7a846a18080b7f51 --- M javascripts/modules/mf-photo.js M javascripts/modules/mf-watchlist.js M javascripts/specials/donateimage.js 3 files changed, 51 insertions(+), 18 deletions(-) Approvals: Brion VIBBER: Verified; Looks good to me, approved diff --git a/javascripts/modules/mf-photo.js b/javascripts/modules/mf-photo.js index 2f56e71..a86de73 100644 --- a/javascripts/modules/mf-photo.js +++ b/javascripts/modules/mf-photo.js @@ -30,6 +30,23 @@ ); } + function getLog( funnel ) { + return function( data ) { + // FIXME: remove this check if we get rid of dynamic loading + if ( mw.config.get( 'wgTitle' ) === M.getConfig( 'title' ) ) { + data.pageId = mw.config.get( 'wgArticleId' ); + } + + M.log( 'MobileWebUploads', $.extend( { + token: M.getSessionId(), + funnel: funnel, + isEditable: M.getConfig( 'can_edit' ), + mobileMode: M.getConfig( 'alpha' ) ? 'alpha' : ( M.getConfig( 'beta' ) ? 'beta' : 'stable' ), + userAgent: window.navigator.userAgent + }, data ) ); + }; + } + function generateFileName( file, pageTitle ) { // FIXME: deal with long and invalid names var name = 'Lead_Photo_For_' + pageTitle.replace( / /g, '_' ) + Math.random(), @@ -55,8 +72,9 @@ } ); }, - save: function( options, callback ) { - var self = this; + save: function( options ) { + var self = this, result = $.Deferred(); + options.editSummaryMessage = options.insertInPage ? 'mobile-frontend-photo-article-edit-comment' : 'mobile-frontend-photo-article-donate-comment'; @@ -89,8 +107,8 @@ } ).done( function( data ) { var descriptionUrl = ''; if ( !data || !data.upload ) { - // FIXME: use event logging to log errors - callback( null ); + // error uploading image + result.reject( data.error ? data.error.info : '' ); return; } options.fileName = data.upload.filename || data.upload.warnings.duplicate['0']; @@ -99,15 +117,24 @@ descriptionUrl = data.upload.imageinfo.descriptionurl; } if ( options.insertInPage ) { - self.updatePage( options, function() { - // FIXME: check for errors here too? - callback( options.fileName, descriptionUrl ); + self.updatePage( options, function( data ) { + if ( !data || data.error ) { + // error updating page's wikitext + result.reject( data.error.info ); + } else { + result.resolve( options.fileName, descriptionUrl ); + } } ); } else { - callback( options.fileName, descriptionUrl ); + result.resolve( options.fileName, descriptionUrl ); } + } ).fail( function( xhr, status, error ) { + // error on the server side + result.reject( status + ': ' + error ); } ); }, endpoint ); + + return result; } } ); @@ -263,6 +290,7 @@ var self = this, $input = this.$( 'input' ); this.options = options; + this.log = getLog( options.funnel ); $input. // accept must be set via attr otherwise cannot use camera on Android @@ -275,11 +303,14 @@ // clear so that change event is fired again when user selects the same file $input.val( '' ); + self.log( { action: 'preview' } ); preview. on( 'cancel', function() { + self.log( { action: 'previewCancel' } ); nav.closeOverlay(); } ). on( 'submit', function() { + self.log( { action: 'previewSubmit' } ); self._submit(); } ); @@ -308,6 +339,7 @@ nav.closeOverlay(); popup.show( progressPopup.$el, 'locked noButton loading' ); progressPopup.on( 'cancel', function() { + self.log( { action: 'cancel' } ); api.abort(); } ); @@ -316,21 +348,19 @@ description: description, insertInPage: this.options.insertInPage, pageTitle: this.options.pageTitle - }, function( fileName, descriptionUrl ) { + } ).done( function( fileName, descriptionUrl ) { popup.close(); - - if ( !fileName ) { - popup.show( mw.msg( 'mobile-frontend-photo-upload-error' ), 'toast error' ); - self.emit( 'error' ); - return; - } - + self.log( { action: 'success' } ); self.emit( 'success', { fileName: fileName, description: description, descriptionUrl: descriptionUrl, url: self.preview.imageUrl } ); + } ).fail( function( err ) { + popup.show( mw.msg( 'mobile-frontend-photo-upload-error' ), 'toast error' ); + self.log( { action: 'error', errorText: err } ); + self.emit( 'error' ); } ); api.on( 'progress', function( value ) { @@ -353,7 +383,8 @@ photoUploader = new PhotoUploader( { buttonCaption: mw.msg( 'mobile-frontend-photo-upload' ), insertInPage: true, - pageTitle: M.getConfig( 'title' ) + pageTitle: M.getConfig( 'title' ), + funnel: 'article' } ). insertAfter( $page.find( 'h1' ) ). on( 'start', function() { diff --git a/javascripts/modules/mf-watchlist.js b/javascripts/modules/mf-watchlist.js index 8881919..6eaa4ce 100644 --- a/javascripts/modules/mf-watchlist.js +++ b/javascripts/modules/mf-watchlist.js @@ -7,6 +7,7 @@ function logWatchEvent( eventType ) { var types = [ 'watchlist', 'unwatchlist', 'anonCTA' ], data = { + // FIXME: this gives wrong results when page loaded dynamically articleID: mw.config.get( 'wgArticleId' ), anon: mw.config.get( 'wgUserName' ) === null, action: types[ eventType ], diff --git a/javascripts/specials/donateimage.js b/javascripts/specials/donateimage.js index 5bf3eac..d24a033 100644 --- a/javascripts/specials/donateimage.js +++ b/javascripts/specials/donateimage.js @@ -140,7 +140,8 @@ new photo.PhotoUploader( { buttonCaption: mw.msg( 'mobile-frontend-photo-upload-generic' ), - pageTitle: mw.config.get( 'wgTitle' ) + pageTitle: mw.config.get( 'wgTitle' ), + funnel: 'uploads' } ). prependTo( $container ). on( 'success', function( image ) { -- To view, visit https://gerrit.wikimedia.org/r/50053 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ie344a292dd3289d35cf222ac7a846a18080b7f51 Gerrit-PatchSet: 3 Gerrit-Project: mediawiki/extensions/MobileFrontend Gerrit-Branch: master Gerrit-Owner: JGonera <jgon...@wikimedia.org> Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org> Gerrit-Reviewer: JGonera <jgon...@wikimedia.org> Gerrit-Reviewer: awjrichards <aricha...@wikimedia.org> Gerrit-Reviewer: jenkins-bot _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits