if(anchor[0].nodeType === Node.TEXT_NODE)\r
anchor = anchor.parent();\r
var newNode = anchor.clone().empty();\r
+ newNode.attr('id', '');\r
anchor.after(newNode);\r
view.selectNode(newNode);\r
}\r
}\r
\r
});\r
-
+ \r
+ \r
+ var observer = new MutationObserver(function(mutations) {\r
+ mutations.forEach(function(mutation) {\r
+ if(mutation.addedNodes.length > 0) {\r
+ console.log(mutation.addedNodes);\r
+ }\r
+ _.each(mutation.addedNodes, function(node) {\r
+ node = $(node);\r
+ node.parent().find('[wlxml-tag]').each(function() {\r
+ tag = $(this);\r
+ if(!tag.attr('id'))\r
+ tag.attr('id', 'xxxxxxxx-xxxx-xxxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {var r = Math.random()*16|0,v=c=='x'?r:r&0x3|0x8;return v.toString(16);}));\r
+ });\r
+ });\r
+ }); \r
+ });\r
+ var config = { attributes: true, childList: true, characterData: true, subtree: true };\r
+ observer.observe(this.node.find('#rng-visualEditor-contentWrapper')[0], config);
},\r
getMetaData: function() {\r
var toret = {};\r
selection.removeAllRanges()\r
selection.addRange(range);\r
},\r
+ selectNodeById: function(id) {\r
+ var node = this.node.find('#'+id);\r
+ if(node)\r
+ this.selectNode(node);\r
+ },\r
selectFirstNode: function() {\r
var firstNodeWithText = this.node.find('[wlxml-tag]').filter(function() {\r
return $(this).clone().children().remove().end().text().trim() !== '';\r
isDirty = true;\r
}\r
});\r
+ \r
+ view.node.on('click', '.rng-visualEditor-editPaneSurrouding a', function(e) {\r
+ var target = $(e.target);\r
+ mediator.nodeSelectedById(target.attr('data-id'));\r
+ });\r
},\r
selectTab: function(id) {\r
this.node.find('.rng-visualEditor-sidebarContentItem').hide();\r
updateEditPane: function(node) {\r
var pane = this.node.find('#rng-visualEditor-edit');\r
pane.html( $(sandbox.getTemplate('editPane')({tag: node.attr('wlxml-tag'), klass: node.attr('wlxml-class')})));\r
+ \r
+ var parent = {\r
+ repr: node.parent().attr('wlxml-tag') + ' / ' + (node.parent().attr('wlxml-class') || '[[no class]]'),\r
+ id: node.parent().attr('id')\r
+ }\r
+ var children = [];\r
+ node.children().each(function() {\r
+ var child = $(this);\r
+ children.push({repr: child.attr('wlxml-tag') + ' / ' + (child.attr('wlxml-class') || '[[no class]]'), id: child.attr('id')});\r
+ });\r
+ var naviTemplate = sandbox.getTemplate('editPaneNavigation')({parent: parent, children: children});\r
+ pane.find('.rng-visualEditor-editPaneSurrouding > div').html($(naviTemplate));\r
}\r
}\r
\r
},\r
nodeSelected: function(node) {\r
sideBarView.updateEditPane(node);\r
+ },\r
+ nodeSelectedById: function(id) {\r
+ view.selectNodeById(id);\r
}\r
}\r
\r