editor: Missing exercise actions
[fnpeditor.git] / src / editor / modules / data / document.js
index db2b7a8..15dd608 100644 (file)
@@ -14,6 +14,7 @@ var logger = logging.getLogger('document');
 
 var Document = function() {
     wlxml.WLXMLDocument.apply(this, Array.prototype.slice.call(arguments, 0));
 
 var Document = function() {
     wlxml.WLXMLDocument.apply(this, Array.prototype.slice.call(arguments, 0));
+    this.properties = {};
 };
 Document.prototype = Object.create(wlxml.WLXMLDocument.prototype);
 
 };
 Document.prototype = Object.create(wlxml.WLXMLDocument.prototype);
 
@@ -45,9 +46,37 @@ _.extend(Document.prototype, {
             link = cfg.documentAttachmentUrl(link.substr(7));
         }
         return link;
             link = cfg.documentAttachmentUrl(link.substr(7));
         }
         return link;
+    },
+    getLinkForUrl: function(url) {
+        /* globals window */
+        var baseUrl = function(url) {return url.split('/').slice(0,-1).join('/');};
+        if(baseUrl(url) === baseUrl(window.location.origin + this.getUrlForLink('file://test'))) {
+            return 'file://' + _.last(url.split('/'));
+        }
+        return url;
+    },
+    setProperty: function(propName, propValue) {
+        if(this.properties[propName] !== propValue) {
+            this.properties[propName] = propValue;
+            this.trigger('propertyChanged', propName, propValue);
+        }
+    }
+});
+
+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;
+return {Document: Document, DumbDocument: DumbDocument};
 
 });
\ No newline at end of file
 
 });
\ No newline at end of file