45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
/**
|
|
* Use the shopping cart to purchase courses.
|
|
*/
|
|
(function(define) {
|
|
'use strict';
|
|
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);
|