wlxml: getParent/isInside takes context roots into account
[fnpeditor.git] / src / wlxml / wlxml.js
index 21623c5..df93b3e 100644 (file)
@@ -24,11 +24,23 @@ var WLXMLDocumentNodeMethods =  {
         me.concat(this.parents()).some(function(node) {
             if(node.is(query)) {
                 toret = node;
-                return true;
             }
-        });
+            return !!toret || (!node.sameNode(this) && node.isContextRoot());
+        }.bind(this));
+
         return toret;
     },
+    isContextRoot: function() {
+        var me = this.nodeType === Node.ELEMENT_NODE ? [this] : [],
+            toret = false;
+        me.concat(this.parents()).some(function(node) {
+            if(_.isFunction(node.object.isContextRoot) && node.object.isContextRoot(this)) {
+                toret = true;
+                return true;
+            }
+        }.bind(this));
+        return toret;
+    }
 };
 
 var getClassLists = function(klassName) {
@@ -145,26 +157,12 @@ $.extend(WLXMLElementNode.prototype, WLXMLDocumentNodeMethods, smartxml.ElementN
                     $(this).prepend(metaNode);
                 }
             }
-
         });
 
-        
-
         return DOM;
     }
 });
 
-// WLXMLElementNode.prototype.transformations.register(transformations.createContextTransformation({
-//     name: 'wlxml.setMetaAttribute',
-//     impl: function(args) {
-//         this.setMetaAttribute(args.name, args.value);
-//     },
-//     getChangeRoot: function() {
-//         return this.context;
-//     }
-// }));
-
-
 
 var WLXMLDocumentNode = function() {
     smartxml.DocumentNode.apply(this, arguments);
@@ -316,7 +314,6 @@ $.extend(WLXMLDocument.prototype, {
     },
 
     registerExtension: function(extension) {
-        //debugger;
         smartxml.Document.prototype.registerExtension.call(this, extension);
         var doc = this;