Commit 1fa1d357 by Renzo Lucioni

Merge pull request #6326 from edx/renzo/split-verification-dashboard-analytics

Split verification dashboard analytics
parents ccb5bfbc aeeb45cf
......@@ -31,23 +31,51 @@
*/
edx.dashboard.legacy.init = function(urls) {
// On initialization, set focus to the first notification available
// for screen readers.
var notifications = $('.dashboard-notifications');
if (notifications.children().length > 0) {
var notifications = $('.dashboard-notifications'),
upgradeButtonLinks = $('.action-upgrade'),
verifyButtonLinks = $('.verification-cta > .cta');
// On initialization, set focus to the first notification available for screen readers.
if ( notifications.children().length > 0 ) {
notifications.focus();
}
$('.message.is-expandable .wrapper-tip').bind('click', toggleExpandMessage);
function toggleExpandMessage(e) {
(e).preventDefault();
// Track clicks of the upgrade button. The `trackLink` method is a helper that makes
// a `track` call whenever a bound link is clicked. Usually the page would change before
// `track` had time to execute; `trackLink` inserts a small timeout to give the `track`
// call enough time to fire. The clicked link element is passed to `generateProperties`.
window.analytics.trackLink(upgradeButtonLinks, 'edx.bi.dashboard.upgrade_button.clicked', generateProperties);
// Track clicks of the "verify now" button.
window.analytics.trackLink(verifyButtonLinks, 'edx.bi.user.verification.resumed', generateProperties);
// Generate the properties object to be passed along with business intelligence events.
function generateProperties(element) {
var $el = $(element),
properties = {};
if ( $el.hasClass('action-upgrade') ) {
properties.category = 'upgrade';
} else if ( $el.hasClass('cta') ) {
properties.category = 'verification';
}
properties.label = $el.data('course-id');
return properties;
}
function toggleExpandMessage(event) {
var course = $(event.target).closest('.message-upsell').find('.action-upgrade').data('course-id');
event.preventDefault();
$(this).closest('.message.is-expandable').toggleClass('is-expanded');
var course = $("#upgrade-to-verified").data("course-id");
analytics.track('edx.bi.dashboard.upsell_copy.clicked', {
category: 'user-engagement',
window.analytics.track('edx.bi.dashboard.upgrade_copy.expanded', {
category: 'upgrade',
label: course
});
}
......@@ -61,8 +89,9 @@
});
$("#upgrade-to-verified").click(function(event) {
var user = $(event.target).data("user");
var course = $(event.target).data("course-id");
var user = $(event.target).closest(".action-upgrade").data("user"),
course = $(event.target).closest(".action-upgrade").data("course-id");
Logger.log('edx.course.enrollment.upgrade.clicked', [user, course], null);
});
......
......@@ -11,6 +11,11 @@ var edx = edx || {};
// Currently, this step does not need to install any event handlers,
// since the displayed information is static.
edx.verify_student.EnrollmentConfirmationStepView = edx.verify_student.StepView.extend({});
edx.verify_student.EnrollmentConfirmationStepView = edx.verify_student.StepView.extend({
postRender: function() {
// Track a virtual pageview, for easy funnel reconstruction.
window.analytics.page( 'verification', this.templateName );
}
});
})( jQuery );
......@@ -19,6 +19,9 @@ var edx = edx || {};
errorModel: this.errorModel
}).render();
// Track a virtual pageview, for easy funnel reconstruction.
window.analytics.page( 'verification', this.templateName );
this.listenTo( webcam, 'imageCaptured', function() {
// Track the user's successful image capture
window.analytics.track( 'edx.bi.user.face_image.captured', {
......
......@@ -19,6 +19,9 @@ var edx = edx || {};
errorModel: this.errorModel
}).render();
// Track a virtual pageview, for easy funnel reconstruction.
window.analytics.page( 'verification', this.templateName );
this.listenTo( webcam, 'imageCaptured', function() {
// Track the user's successful image capture
window.analytics.track( 'edx.bi.user.identification_image.captured', {
......
......@@ -21,6 +21,9 @@ var edx = edx || {};
el: $( '.requirements-container', this.el ),
requirements: this.stepData.requirements
}).render();
// Track a virtual pageview, for easy funnel reconstruction.
window.analytics.page( 'verification', this.templateName );
}
});
......
......@@ -17,6 +17,9 @@ var edx = edx || {};
requirements: this.stepData.requirements
}).render();
// Track a virtual pageview, for easy funnel reconstruction.
window.analytics.page( 'payment', this.templateName );
// Update the contribution amount with the amount the user
// selected in a previous screen.
if ( this.stepData.contributionAmount ) {
......@@ -84,7 +87,7 @@ var edx = edx || {};
// Marketing needs a way to tell the difference between users
// leaving for the payment processor and users dropping off on
// this page. A virtual pageview can be used to do this.
window.analytics.page( 'verification', 'payment_processor_step' );
window.analytics.page( 'payment', 'payment_processor_step' );
form.submit();
},
......
......@@ -71,18 +71,20 @@ var edx = edx || {};
* those used to track business intelligence events.
*/
postRender: function() {
var $verifyNowButton = $('#verify_now_button'),
$verifyLaterButton = $('#verify_later_button');
// Track a virtual pageview, for easy funnel reconstruction.
window.analytics.page( 'payment', this.templateName );
// Track the user's decision to verify immediately
$( '#verify_now_button' ).on( 'click', function() {
window.analytics.track( 'edx.bi.user.verification.immediate', {
category: 'verification'
});
window.analytics.trackLink( $verifyNowButton, 'edx.bi.user.verification.immediate', {
category: 'verification'
});
// Track the user's decision to defer their verification
$( '#verify_later_button' ).on( 'click', function() {
window.analytics.track( 'edx.bi.user.verification.deferred', {
category: 'verification'
});
window.analytics.trackLink( $verifyLaterButton, 'edx.bi.user.verification.deferred', {
category: 'verification'
});
},
......
......@@ -30,6 +30,9 @@ var edx = edx || {};
// When moving to the next step, submit photos for verification
$( '#next_step_button' ).on( 'click', _.bind( this.submitPhotos, this ) );
// Track a virtual pageview, for easy funnel reconstruction.
window.analytics.page( 'verification', this.templateName );
},
toggleSubmitEnabled: function() {
......@@ -38,7 +41,7 @@ var edx = edx || {};
retakePhotos: function() {
// Track the user's intent to retake their photos
window.analytics.track( 'edx.bi.user.verification_images.retaken', {
window.analytics.track( 'edx.bi.user.images.retaken', {
category: 'verification'
});
......
......@@ -47,9 +47,6 @@
this.postRender();
}
).fail( _.bind( this.handleError, this ) );
// Track a virtual pageview, for easy funnel reconstruction.
window.analytics.page( 'verification', this.templateName );
},
handleResponse: function( data ) {
......
......@@ -141,7 +141,7 @@
% endif
</div>
<div class="verification-cta">
<a href="${reverse('verify_student_verify_later', kwargs={'course_id': unicode(course.id)})}" class="cta">${_('Verify Now')}</a>
<a href="${reverse('verify_student_verify_later', kwargs={'course_id': unicode(course.id)})}" class="cta" data-course-id="${course.id | h}">${_('Verify Now')}</a>
</div>
% elif verification_status['status'] == VERIFY_STATUS_SUBMITTED:
<h4 class="message-title">${_('You have already verified your ID!')}</h4>
......@@ -173,13 +173,13 @@
<ul class="actions message-actions">
<li class="action-item">
% if settings.FEATURES.get('SEPARATE_VERIFICATION_FROM_PAYMENT'):
<a class="action action-upgrade" href="${reverse('verify_student_upgrade_and_verify', kwargs={'course_id': unicode(course.id)})}">
<a class="action action-upgrade" href="${reverse('verify_student_upgrade_and_verify', kwargs={'course_id': unicode(course.id)})}" data-course-id="${course.id | h}" data-user="${user.username | h}">
% else:
<a class="action action-upgrade" href="${reverse('course_modes_choose', kwargs={'course_id': unicode(course.id)})}?upgrade=True">
<a class="action action-upgrade" href="${reverse('course_modes_choose', kwargs={'course_id': unicode(course.id)})}?upgrade=True" data-course-id="${course.id | h}" data-user="${user.username | h}">
% endif
<img class="deco-graphic" src="${static.url('images/vcert-ribbon-s.png')}" alt="ID Verified Ribbon/Badge">
<span class="wrapper-copy">
<span class="copy" id="upgrade-to-verified" data-course-id="${course.id | h}" data-user="${user.username | h}">${_("Upgrade to Verified Track")}</span>
<span class="copy" id="upgrade-to-verified">${_("Upgrade to Verified Track")}</span>
</span>
</a>
</li>
......
......@@ -19,6 +19,7 @@
<script type="text/javascript">
var analytics = {
track: function() { return; },
trackLink: function() { return; },
pageview: function() { return; },
page: function() { return; }
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment