5 'wlxml/extensions/list/list'
7 ], function($, saveDialog, wlxml) {
11 return function(sandbox) {
14 var document_id = sandbox.getBootstrappedData().document_id;
15 var document_version = sandbox.getBootstrappedData().version;
16 var history = sandbox.getBootstrappedData().history;
18 var wlxmlDocument = wlxml.WLXMLDocumentFromXML(sandbox.getBootstrappedData().document);
21 function readCookie(name) {
22 /* global escape, unescape */
23 var nameEQ = escape(name) + '=';
24 var ca = document.cookie.split(';');
25 for (var i = 0; i < ca.length; i++) {
27 while (c.charAt(0) === ' ') {
28 c = c.substring(1, c.length);
30 if (c.indexOf(nameEQ) === 0) {
31 return unescape(c.substring(nameEQ.length, c.length));
39 beforeSend: function(xhr, settings) {
40 if (!(/^(GET|HEAD|OPTIONS|TRACE)$/.test(settings.type))) {
41 xhr.setRequestHeader('X-CSRFToken', readCookie('csrftoken'));
46 var reloadHistory = function() {
49 url: '/' + gettext('editor') + '/' + document_id + '/history',
50 success: function(data) {
52 sandbox.publish('historyItemAdded', data.slice(-1)[0]);
59 sandbox.publish('ready');
61 getDocument: function() {
64 saveDocument: function() {
66 var dialog = saveDialog.create();
67 dialog.on('save', function(event) {
68 sandbox.publish('savingStarted');
69 dialog.toggleButtons(false);
72 url: '/' + gettext('editor') + '/' + document_id,
73 data: JSON.stringify({document:wlxmlDocument.toXML(), description: event.data.description}),
76 sandbox.publish('savingEnded', 'success');
79 error: function() {event.error(); sandbox.publish('savingEnded', 'error');}
82 dialog.on('cancel', function() {
88 getHistory: function() {
91 fetchDiff: function(ver1, ver2) {
94 url: '/' + gettext('editor') + '/' + document_id + '/diff',
95 data: {from: ver1, to: ver2},
96 success: function(data) {
97 sandbox.publish('diffFetched', {table: data, ver1: ver1, ver2: ver2});
101 restoreVersion: function(options) {
102 if(options.version && options.description) {
103 sandbox.publish('restoringStarted', {version: options.version});
107 url: '/' + gettext('editor') + '/' + document_id + '/revert',
108 data: JSON.stringify(options),
109 success: function(data) {
110 document_version = data.current_version;
112 wlxmlDocument.loadXML(data.document);
113 sandbox.publish('documentReverted', data);
118 getDocumentId: function() {
121 getDocumentVersion: function() {
122 return document_version;