smartxml: pass transformation instance to impl & undo when needed
authorAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Sat, 7 Dec 2013 23:19:33 +0000 (00:19 +0100)
committerAleksander Łukasz <aleksander.lukasz@nowoczesnapolska.org.pl>
Sun, 15 Dec 2013 21:32:49 +0000 (22:32 +0100)
impl needs this to be able to store state that may be needed in undo implementation

src/smartxml/transformations.js

index 5e461ee..9aea150 100644 (file)
@@ -95,13 +95,14 @@ toret.createGenericTransformation = function(desc, name) {
                 this.changeRootPath = changeRoot.getPath();
             }
             //var toret = desc.impl.call(this.context, this.args); // a argumenty do metody?
                 this.changeRootPath = changeRoot.getPath();
             }
             //var toret = desc.impl.call(this.context, this.args); // a argumenty do metody?
-            var toret = desc.impl.apply(this.context, this.args);
+            var argsToPass = desc.undo ? [this].concat(this.args) : this.args;
+            var toret = desc.impl.apply(this.context, argsToPass);
             this.hasRun = true;
             return toret;
         },
         undo: function() {
             if(desc.undo) {
             this.hasRun = true;
             return toret;
         },
         undo: function() {
             if(desc.undo) {
-                desc.undo.call(this.context);
+                desc.undo.call(this.context, this);
             } else {
                 this.document.getNodeByPath(this.changeRootPath).replaceWith(this.snapshot);
             }
             } else {
                 this.document.getNodeByPath(this.changeRootPath).replaceWith(this.snapshot);
             }