Commit 1ceb8a0d by Peter Fogg Committed by cahrens

Optimize finish_auth_factory.

TNL-2602
parent 4f0ab6f9
......@@ -1275,9 +1275,6 @@ student_account_js = [
'js/src/accessibility_tools.js',
'js/src/ie_shim.js',
'js/src/string_utils.js',
'js/student_account/enrollment.js',
'js/student_account/emailoptin.js',
'js/student_account/shoppingcart.js',
'js/student_account/models/LoginModel.js',
'js/student_account/models/RegisterModel.js',
'js/student_account/models/PasswordResetModel.js',
......
......@@ -373,18 +373,6 @@
'js/models/notification', 'jquery.fileupload'
]
},
'js/student_account/enrollment': {
exports: 'edx.student.account.EnrollmentInterface',
deps: ['jquery', 'jquery.cookie']
},
'js/student_account/emailoptin': {
exports: 'edx.student.account.EmailOptInInterface',
deps: ['jquery', 'jquery.cookie']
},
'js/student_account/shoppingcart': {
exports: 'edx.student.account.ShoppingCartInterface',
deps: ['jquery', 'jquery.cookie', 'underscore']
},
// Student account registration/login
// Loaded explicitly until these are converted to RequireJS
'js/student_account/views/FormView': {
......
......@@ -2,7 +2,7 @@ define(['common/js/spec_helpers/ajax_helpers', 'js/student_account/emailoptin'],
function( AjaxHelpers, EmailOptInInterface ) {
'use strict';
describe( 'edx.student.account.EmailOptInInterface', function() {
describe( 'EmailOptInInterface', function() {
var COURSE_KEY = 'edX/DemoX/Fall',
EMAIL_OPT_IN = 'True',
......
......@@ -2,7 +2,7 @@ define(['common/js/spec_helpers/ajax_helpers', 'js/student_account/enrollment'],
function( AjaxHelpers, EnrollmentInterface ) {
'use strict';
describe( 'edx.student.account.EnrollmentInterface', function() {
describe( 'EnrollmentInterface', function() {
var COURSE_KEY = 'edX/DemoX/Fall',
ENROLL_URL = '/api/commerce/v0/baskets/',
......
......@@ -2,7 +2,7 @@ define(['common/js/spec_helpers/ajax_helpers', 'js/student_account/shoppingcart'
function(AjaxHelpers, ShoppingCartInterface) {
'use strict';
describe( 'edx.student.account.ShoppingCartInterface', function() {
describe( 'ShoppingCartInterface', function() {
var COURSE_KEY = "edX/DemoX/Fall",
ADD_COURSE_URL = "/shoppingcart/add/course/edX/DemoX/Fall/",
......
var edx = edx || {};
(function($) {
;(function (define) {
'use strict';
define(['jquery', 'jquery.cookie'], function($) {
edx.student = edx.student || {};
edx.student.account = edx.student.account || {};
var EmailOptInInterface = {
edx.student.account.EmailOptInInterface = {
urls: {
emailOptInUrl: '/user_api/v1/preferences/email_opt_in/'
},
urls: {
emailOptInUrl: '/user_api/v1/preferences/email_opt_in/'
},
headers: {
'X-CSRFToken': $.cookie('csrftoken')
},
headers: {
'X-CSRFToken': $.cookie('csrftoken')
},
/**
* Set the email opt in setting for the organization associated
* with this course.
* @param {string} courseKey Slash-separated course key.
* @param {string} emailOptIn The preference to opt in or out of organization emails.
*/
setPreference: function( courseKey, emailOptIn ) {
return $.ajax({
url: this.urls.emailOptInUrl,
type: 'POST',
data: {course_id: courseKey, email_opt_in: emailOptIn},
headers: this.headers
});
}
};
/**
* Set the email opt in setting for the organization associated
* with this course.
* @param {string} courseKey Slash-separated course key.
* @param {string} emailOptIn The preference to opt in or out of organization emails.
*/
setPreference: function( courseKey, emailOptIn ) {
return $.ajax({
url: this.urls.emailOptInUrl,
type: 'POST',
data: {course_id: courseKey, email_opt_in: emailOptIn},
headers: this.headers
});
}
};
})(jQuery);
return EmailOptInInterface;
});
}).call(this, define || RequireJS.define);
var edx = edx || {};
(function($) {
;(function (define) {
'use strict';
define(['jquery', 'jquery.cookie'], function($) {
edx.student = edx.student || {};
edx.student.account = edx.student.account || {};
edx.student.account.EnrollmentInterface = {
var EnrollmentInterface = {
urls: {
baskets: '/api/commerce/v0/baskets/',
},
urls: {
baskets: '/api/commerce/v0/baskets/',
},
headers: {
'X-CSRFToken': $.cookie('csrftoken')
},
headers: {
'X-CSRFToken': $.cookie('csrftoken')
},
/**
* Enroll a user in a course, then redirect the user.
* @param {string} courseKey Slash-separated course key.
* @param {string} redirectUrl The URL to redirect to once enrollment completes.
*/
enroll: function( courseKey, redirectUrl ) {
var data_obj = {course_id: courseKey},
data = JSON.stringify(data_obj);
/**
* Enroll a user in a course, then redirect the user.
* @param {string} courseKey Slash-separated course key.
* @param {string} redirectUrl The URL to redirect to once enrollment completes.
*/
enroll: function( courseKey, redirectUrl ) {
var data_obj = {course_id: courseKey},
data = JSON.stringify(data_obj);
$.ajax({
url: this.urls.baskets,
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: data,
headers: this.headers,
context: this
})
.fail(function( jqXHR ) {
var responseData = JSON.parse(jqXHR.responseText);
if ( jqXHR.status === 403 && responseData.user_message_url ) {
// Check if we've been blocked from the course
// because of country access rules.
// If so, redirect to a page explaining to the user
// why they were blocked.
this.redirect( responseData.user_message_url );
} else {
// Otherwise, redirect the user to the next page.
$.ajax({
url: this.urls.baskets,
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: data,
headers: this.headers,
context: this
}).fail(function( jqXHR ) {
var responseData = JSON.parse(jqXHR.responseText);
if ( jqXHR.status === 403 && responseData.user_message_url ) {
// Check if we've been blocked from the course
// because of country access rules.
// If so, redirect to a page explaining to the user
// why they were blocked.
this.redirect( responseData.user_message_url );
} else {
// Otherwise, redirect the user to the next page.
if ( redirectUrl ) {
this.redirect( redirectUrl );
}
}
}).done(function() {
// If we successfully enrolled, redirect the user
// to the next page (usually the student dashboard or payment flow)
if ( redirectUrl ) {
this.redirect( redirectUrl );
}
}
})
.done(function() {
// If we successfully enrolled, redirect the user
// to the next page (usually the student dashboard or payment flow)
if ( redirectUrl ) {
this.redirect( redirectUrl );
}
});
},
});
},
/**
* Redirect to a URL. Mainly useful for mocking out in tests.
* @param {string} url The URL to redirect to.
*/
redirect: function(url) {
window.location.href = url;
}
};
/**
* Redirect to a URL. Mainly useful for mocking out in tests.
* @param {string} url The URL to redirect to.
*/
redirect: function(url) {
window.location.href = url;
}
};
})(jQuery);
return EnrollmentInterface;
});
}).call(this, define || RequireJS.define);
/**
* Use the shopping cart to purchase courses.
*/
var edx = edx || {};
(function($) {
* Use the shopping cart to purchase courses.
*/
;(function (define) {
'use strict';
edx.student = edx.student || {};
edx.student.account = edx.student.account || {};
edx.student.account.ShoppingCartInterface = {
urls: {
viewCart: "/shoppingcart/",
addCourse: "/shoppingcart/add/course/"
},
headers: {
'X-CSRFToken': $.cookie('csrftoken')
},
/**
* Add a course to a cart, then redirect to the view cart page.
* @param {string} courseId The slash-separated course ID to add to the cart.
*/
addCourseToCart: function( courseId ) {
$.ajax({
url: this.urls.addCourse + courseId + "/",
type: 'POST',
data: {},
headers: this.headers,
context: this
}).always(function() {
this.redirect( this.urls.viewCart );
});
},
/**
* Redirect to a URL. Mainly useful for mocking out in tests.
* @param {string} url The URL to redirect to.
*/
redirect: function( url ) {
window.location.href = url;
}
};
})(jQuery);
define(['jquery', 'jquery.cookie'], function($) {
var ShoppingCartInterface = {
urls: {
viewCart: "/shoppingcart/",
addCourse: "/shoppingcart/add/course/"
},
headers: {
'X-CSRFToken': $.cookie('csrftoken')
},
/**
* Add a course to a cart, then redirect to the view cart page.
* @param {string} courseId The slash-separated course ID to add to the cart.
*/
addCourseToCart: function( courseId ) {
$.ajax({
url: this.urls.addCourse + courseId + "/",
type: 'POST',
data: {},
headers: this.headers,
context: this
}).always(function() {
this.redirect( this.urls.viewCart );
});
},
/**
* Redirect to a URL. Mainly useful for mocking out in tests.
* @param {string} url The URL to redirect to.
*/
redirect: function( url ) {
window.location.href = url;
}
};
return ShoppingCartInterface;
});
}).call(this, define || RequireJS.define);
......@@ -26,18 +26,14 @@
;(function (define, undefined) {
'use strict';
define([
'jquery',
'underscore',
'backbone',
'gettext',
'js/student_account/emailoptin',
'js/student_account/enrollment',
'js/student_account/shoppingcart'
], function (_, Backbone, gettext, emailOptInInterface, enrollmentInterface, shoppingCartInterface) {
// These are not yet converted to requireJS:
var edx = window.edx || {};
emailOptInInterface = emailOptInInterface || edx.student.account.EmailOptInInterface;
enrollmentInterface = enrollmentInterface || edx.student.account.EnrollmentInterface;
shoppingCartInterface = shoppingCartInterface || edx.student.account.ShoppingCartInterface;
], function ($, _, Backbone, gettext, emailOptInInterface, enrollmentInterface, shoppingCartInterface) {
var FinishAuthView = Backbone.View.extend({
el: '#finish-auth-status',
......
(function (define) {
'use strict';
define("js/student_account/views/finish_auth_factory",
['jquery', 'underscore', 'backbone', 'js/student_account/views/FinishAuthView', 'utility'],
function ($, _, Backbone, FinishAuthView) {
return function() {
var view = new FinishAuthView({});
view.render();
};
}
);
}).call(this, define || RequireJS.define);
......@@ -18,9 +18,10 @@
* done.
*/
modules: getModulesList([
'teams/js/teams_tab_factory',
'js/student_account/views/account_settings_factory',
'js/student_account/views/finish_auth_factory',
'js/student_profile/views/learner_profile_factory',
'js/student_account/views/account_settings_factory'
'teams/js/teams_tab_factory'
]),
/**
......
......@@ -5,32 +5,9 @@
<%block name="pagetitle">${_("Please Wait")}</%block>
<%block name="headextra">
<script>
(function (require, define) {
'use strict';
define("js/student_account/views/finish_auth_factory",
[
'jquery', 'underscore', 'backbone',
'js/student_account/views/FinishAuthView'
],
function ($, _, Backbone, FinishAuthView) {
return function() {
var view = new FinishAuthView({});
view.render();
};
}
);
require(["js/student_account/views/finish_auth_factory"],
function (factory) {
factory();
}
);
}).call(this, require || RequireJS.require, define || RequireJS.define);
</script>
<%static:require_module module_name="js/student_account/views/finish_auth_factory" class_name="FinishAuthFactory">
FinishAuthFactory();
</%static:require_module>
</%block>
<div class="finish-auth">
......
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