editor: Allow for editing raw source in the source editor if document contains invali...
authorAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Mon, 14 Jul 2014 13:10:52 +0000 (15:10 +0200)
committerAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Mon, 14 Jul 2014 13:10:52 +0000 (15:10 +0200)
Up until now a stub empty document was loaded.

src/editor/modules/data/data.js
src/editor/modules/data/document.js
src/editor/modules/rng/rng.js

index 793d7b4..b3b9fe4 100644 (file)
@@ -11,8 +11,7 @@ define([
 'use strict';
 /* global gettext, alert, window */
 
 'use strict';
 /* global gettext, alert, window */
 
-var logger = logging.getLogger('editor.modules.data'),
-    stubDocument = '<section><div>' + gettext('This is an empty document.') + '</div></section>';
+var logger = logging.getLogger('editor.modules.data');
 
 
 return function(sandbox) {
 
 
 return function(sandbox) {
@@ -30,12 +29,14 @@ return function(sandbox) {
 
     var loadDocument = function(text, isDraft, draftTimestamp) {
         logger.debug('loading document');
 
     var loadDocument = function(text, isDraft, draftTimestamp) {
         logger.debug('loading document');
+        var xmlValid = true;
         try {
         try {
-            wlxmlDocument = wlxml.WLXMLDocumentFromXML(text, {editorConfig: sandbox.getConfig()}, Document);
+            wlxmlDocument = wlxml.WLXMLDocumentFromXML(text, {editorConfig: sandbox.getConfig()}, Document.Document);
         } catch(e) {
             logger.exception(e);
         } catch(e) {
             logger.exception(e);
-            alert(gettext('This document contains errors and can\'t be loaded. :(')); // TODO
-            wlxmlDocument = wlxml.WLXMLDocumentFromXML(stubDocument, {}, Document);
+            alert(gettext('The content of this document seems to be invalid - only XML source editing will be possible. :(')); // TODO
+            wlxmlDocument = wlxml.WLXMLDocumentFromXML(text, {}, Document.DumbDocument);
+            xmlValid = false;
         }
 
         Object.keys(data)
         }
 
         Object.keys(data)
@@ -79,7 +80,7 @@ return function(sandbox) {
                 }
             }, sandbox.getConfig().autoSaveInterval || 2500);
         }
                 }
             }, sandbox.getConfig().autoSaveInterval || 2500);
         }
-        sandbox.publish('ready', isDraft, draftTimestamp);
+        sandbox.publish('ready', isDraft, draftTimestamp, xmlValid);
     };
     
     function readCookie(name) {
     };
     
     function readCookie(name) {
index b0f7c25..15dd608 100644 (file)
@@ -63,6 +63,20 @@ _.extend(Document.prototype, {
     }
 });
 
     }
 });
 
-return Document;
+var DumbDocument = function() {
+    Document.apply(this, Array.prototype.slice.call(arguments, 0));
+};
+DumbDocument.prototype = Object.create(Document.prototype);
+_.extend(DumbDocument.prototype, {
+    loadXML: function(xml) {
+        this._xml = xml;
+        this.trigger('contentSet');
+    },
+    toXML: function() {
+        return this._xml;
+    }
+});
+
+return {Document: Document, DumbDocument: DumbDocument};
 
 });
\ No newline at end of file
 
 });
\ No newline at end of file
index 4160ad9..73f83d5 100644 (file)
@@ -59,7 +59,7 @@ return function(sandbox) {
     };
     
     eventHandlers.data = {
     };
     
     eventHandlers.data = {
-        ready: function(usingDraft, draftTimestamp) {
+        ready: function(usingDraft, draftTimestamp, xmlValid) {
             wlxmlDocument = sandbox.getModule('data').getDocument();
 
             views.mainLayout.setView('mainView', views.mainTabs.getAsView());
             wlxmlDocument = sandbox.getModule('data').getDocument();
 
             views.mainLayout.setView('mainView', views.mainTabs.getAsView());
@@ -72,7 +72,12 @@ return function(sandbox) {
             sandbox.getModule('mainBar').setCommandEnabled('drop-draft', usingDraft);
             sandbox.getModule('mainBar').setCommandEnabled('save', usingDraft);
 
             sandbox.getModule('mainBar').setCommandEnabled('drop-draft', usingDraft);
             sandbox.getModule('mainBar').setCommandEnabled('save', usingDraft);
 
-            _.each(['sourceEditor', 'documentCanvas', 'documentToolbar', 'mainBar', 'indicator', 'documentHistory', 'diffViewer', 'statusBar'], function(moduleName) {
+            
+            var toStart = ['sourceEditor', 'documentToolbar', 'mainBar', 'indicator', 'documentHistory', 'diffViewer', 'statusBar'];
+            if(xmlValid) {
+                toStart.push('documentCanvas');
+            }
+            _.each(toStart, function(moduleName) {
                 sandbox.getModule(moduleName).start();
             });
             
                 sandbox.getModule(moduleName).start();
             });