56 lines
1.8 KiB
CoffeeScript
56 lines
1.8 KiB
CoffeeScript
define ["domReady", "jquery", "underscore.string", "backbone", "gettext",
|
|
"common/js/components/views/feedback_notification",
|
|
"coffee/src/ajax_prefix", "jquery.cookie"],
|
|
(domReady, $, str, Backbone, gettext, NotificationView) ->
|
|
main = ->
|
|
AjaxPrefix.addAjaxPrefix jQuery, ->
|
|
$("meta[name='path_prefix']").attr('content')
|
|
|
|
window.CMS = window.CMS or {}
|
|
CMS.URL = CMS.URL or {}
|
|
window.onTouchBasedDevice = ->
|
|
navigator.userAgent.match /iPhone|iPod|iPad|Android/i
|
|
|
|
_.extend CMS, Backbone.Events
|
|
Backbone.emulateHTTP = true
|
|
|
|
$.ajaxSetup
|
|
headers : { 'X-CSRFToken': $.cookie 'csrftoken' }
|
|
dataType: 'json'
|
|
|
|
$(document).ajaxError (event, jqXHR, ajaxSettings, thrownError) ->
|
|
if ajaxSettings.notifyOnError is false
|
|
return
|
|
if jqXHR.responseText
|
|
try
|
|
message = JSON.parse(jqXHR.responseText).error
|
|
catch error
|
|
message = str.truncate(jqXHR.responseText, 300)
|
|
else
|
|
message = gettext("This may be happening because of an error with our server or your internet connection. Try refreshing the page or making sure you are online.")
|
|
msg = new NotificationView.Error(
|
|
"title": gettext("Studio's having trouble saving your work")
|
|
"message": message
|
|
)
|
|
msg.show()
|
|
|
|
$.postJSON = (url, data, callback) ->
|
|
# shift arguments if data argument was omitted
|
|
if $.isFunction(data)
|
|
callback = data
|
|
data = `undefined`
|
|
$.ajax
|
|
url: url
|
|
type: "POST"
|
|
contentType: "application/json; charset=utf-8"
|
|
dataType: "json"
|
|
data: JSON.stringify(data)
|
|
success: callback
|
|
|
|
domReady ->
|
|
if onTouchBasedDevice()
|
|
$('body').addClass 'touch-based-device'
|
|
|
|
main()
|
|
return main
|