Saving document
[fnpeditor.git] / modules / data.js
1 define(function() {\r
2 \r
3 return function(sandbox) {\r
4 \r
5     var doc = sandbox.getBootstrappedData().document;\r
6     var document_id = sandbox.getBootstrappedData().document_id;\r
7 \r
8     \r
9     if(doc === '') {\r
10         doc = '<section\n\\r
11         xmlns="http://nowoczesnapolska.org.pl/sst#"\n\\r
12         xmlns:xlink="http://www.w3.org/1999/xlink"\n\\r
13         xmlns:dc="http://purl.org/dc/elements/1.1/"\n\\r
14         xmlns:dcterms="http://purl.org/dc/terms/"\n\\r
15     >\n\\r
16         <metadata>\n\\r
17         </metadata>\n\\r
18         <div class="p"></div>\n\\r
19     </section>';\r
20     }\r
21     \r
22     \r
23     function readCookie(name) {\r
24         var nameEQ = escape(name) + "=";\r
25         var ca = document.cookie.split(';');\r
26         for (var i = 0; i < ca.length; i++) {\r
27             var c = ca[i];\r
28             while (c.charAt(0) == ' ') c = c.substring(1, c.length);\r
29             if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length, c.length));\r
30         }\r
31         return null;\r
32     }\r
33     \r
34     $.ajaxSetup({\r
35         crossDomain: false,\r
36         beforeSend: function(xhr, settings) {\r
37             if (!(/^(GET|HEAD|OPTIONS|TRACE)$/.test(settings.type))) {\r
38                 xhr.setRequestHeader("X-CSRFToken", readCookie('csrftoken'));\r
39             }\r
40         }\r
41     });\r
42     \r
43     return {\r
44         start: function() {\r
45             sandbox.publish('ready');\r
46         },\r
47         getDocument: function() {\r
48             return doc;\r
49         },\r
50         commitDocument: function(newDocument, reason) {\r
51             doc = newDocument;\r
52             sandbox.publish('documentChanged', doc, reason);\r
53         },\r
54         saveDocument: function() {\r
55             sandbox.publish('savingStarted');\r
56             $.ajax({\r
57                 method: 'post',\r
58                 url: '/' + gettext('editor') + '/' + document_id,\r
59                 data: JSON.stringify({document:doc}),\r
60                 success: function() {sandbox.publish('savingEnded', 'success');},\r
61                 error: function() {sandbox.publish('savingEnded', 'error');}\r
62             });\r
63         } \r
64     }\r
65 };\r
66 \r
67 });