master
 1(function($) {
 2  Backbone._sync = Backbone.sync;
 3
 4  Backbone.sync = function(method, model, options) {
 5    if (!options.noCSRF) {
 6      var beforeSend = options.beforeSend;
 7
 8      // Set X-CSRF-Token HTTP header
 9      options.beforeSend = function(xhr) {
10        var token = $('meta[name="csrf-token"]').attr('content');
11        if (token) xhr.setRequestHeader('X-CSRF-Token', token);
12        if (beforeSend) return beforeSend.apply(this, arguments);
13      };
14    }
15
16    // Serialize data, optionally using paramRoot
17    if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {
18      options.contentType = 'application/json';
19      data = JSON.stringify(options.attrs || model.toJSON(options));
20      if (model.paramRoot) {
21        data = {};
22        data[model.paramRoot] = model.toJSON(options);
23      } else {
24        data = model.toJSON();
25      }
26      options.data = JSON.stringify(data);
27    }
28
29    return Backbone._sync(method, model, options);
30  };
31
32})(jQuery);