78 lines
3.3 KiB
JavaScript
78 lines
3.3 KiB
JavaScript
(function(define) {
|
|
'use strict';
|
|
define(['backbone',
|
|
'jquery',
|
|
'underscore',
|
|
'gettext'
|
|
],
|
|
function(
|
|
Backbone,
|
|
$,
|
|
_,
|
|
gettext
|
|
) {
|
|
return Backbone.View.extend({
|
|
el: '.unenroll-modal',
|
|
|
|
switchToSlideOne: function() {
|
|
var survey, i;
|
|
// Randomize survey option order
|
|
survey = document.querySelector('.options');
|
|
for (i = survey.children.length - 1; i >= 0; i--) {
|
|
survey.appendChild(survey.children[Math.random() * i | 0]);
|
|
}
|
|
this.$('.inner-wrapper header').hide();
|
|
this.$('#unenroll_form').hide();
|
|
this.$('.slide1').removeClass('hidden');
|
|
},
|
|
|
|
switchToSlideTwo: function() {
|
|
var reason = this.$(".reasons_survey input[name='reason']:checked").attr('val');
|
|
if (reason === 'Other') {
|
|
reason = this.$('.other_text').val();
|
|
}
|
|
if (reason) {
|
|
window.analytics.track('unenrollment_reason.selected', {
|
|
category: 'user-engagement',
|
|
label: reason,
|
|
displayName: 'v1'
|
|
});
|
|
}
|
|
this.$('.slide1').addClass('hidden');
|
|
this.$('.survey_course_name').text(this.$('#unenroll_course_name').text());
|
|
this.$('.slide2').removeClass('hidden');
|
|
this.$('.reasons_survey .return_to_dashboard').attr('href', this.urls.dashboard);
|
|
this.$('.reasons_survey .browse_courses').attr('href', this.urls.browseCourses);
|
|
},
|
|
|
|
unenrollComplete: function(event, xhr) {
|
|
if (xhr.status === 200) {
|
|
if (!this.isEdx) {
|
|
location.href = this.urls.dashboard;
|
|
} else {
|
|
this.switchToSlideOne();
|
|
this.$('.reasons_survey:first .submit_reasons').click(this.switchToSlideTwo.bind(this));
|
|
}
|
|
} else if (xhr.status === 403) {
|
|
location.href = this.urls.signInUser + '?course_id=' +
|
|
encodeURIComponent($('#unenroll_course_id').val()) + '&enrollment_action=unenroll';
|
|
} else {
|
|
$('#unenroll_error').text(
|
|
gettext('Unable to determine whether we should give you a refund because' +
|
|
' of System Error. Please try again later.')
|
|
).stop()
|
|
.css('display', 'block');
|
|
}
|
|
},
|
|
|
|
initialize: function(options) {
|
|
this.urls = options.urls;
|
|
this.isEdx = options.isEdx;
|
|
|
|
$('#unenroll_form').on('ajax:complete', this.unenrollComplete.bind(this));
|
|
}
|
|
});
|
|
}
|
|
);
|
|
}).call(this, define || RequireJS.define);
|