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

Reply via email to