e4b564efb8d9a2f50c4298ab3261998cc123b6c1
[fnpeditor.git] / modules / data.js
1 rng.modules.data = function(sandbox) {\r
2 \r
3     var doc = sandbox.getBootstrappedData().document;\r
4     var document_id = sandbox.getBootstrappedData().document_id;\r
5 \r
6     function readCookie(name) {\r
7         var nameEQ = escape(name) + "=";\r
8         var ca = document.cookie.split(';');\r
9         for (var i = 0; i < ca.length; i++) {\r
10             var c = ca[i];\r
11             while (c.charAt(0) == ' ') c = c.substring(1, c.length);\r
12             if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length, c.length));\r
13         }\r
14         return null;\r
15     }\r
16     \r
17     $.ajaxSetup({\r
18         crossDomain: false,\r
19         beforeSend: function(xhr, settings) {\r
20             if (!(/^(GET|HEAD|OPTIONS|TRACE)$/.test(settings.type))) {\r
21                 xhr.setRequestHeader("X-CSRFToken", readCookie('csrftoken'));\r
22             }\r
23         }\r
24     });\r
25     \r
26     return {\r
27         start: function() {\r
28             sandbox.publish('ready');\r
29         },\r
30         getDocument: function() {\r
31             return doc;\r
32         },\r
33         commitDocument: function(newDocument, reason) {\r
34             doc = newDocument;\r
35             sandbox.publish('documentChanged', doc, reason);\r
36         },\r
37         saveDocument: function() {\r
38             $.ajax({\r
39                 method: 'post',\r
40                 url: '/editor/' + document_id,\r
41                 data: JSON.stringify({document:doc})\r
42             });\r
43         }\r
44         \r
45     }\r
46 \r
47 };