\r
var view = {\r
node: $(sandbox.getTemplate('main')()),\r
+ currentNode: null,\r
setup: function() {\r
var view = this;\r
_markSelected: function(node) {\r
this.node.find('.rng-current').removeClass('rng-current');\r
node.addClass('rng-current');\r
+ this.currentNode = node;\r
mediator.nodeSelected(node);\r
},\r
markFirstSelected: function() {\r
view.selectTab(target.attr('data-content-id'));\r
});\r
view.selectTab('rng-visualEditor-edit');\r
+ \r
+ view.node.on('change', '.rng-visualEditor-editPaneNodeForm select', function(e) {\r
+ var target = $(e.target);\r
+ var attr = target.attr('id').split('-')[2].split('editPane')[1].substr(0,3) === 'Tag' ? 'tag' : 'class';\r
+ mediator.getCurrentNode().attr('wlxml-'+attr, target.val());\r
+ isDirty = true;\r
+ });\r
+ \r
+ view.node.on('change', '.rng-visualEditor-editPaneSelectionForm select', function(e) {\r
+ var target = $(e.target);\r
+ var selection = window.getSelection();\r
+ if(selection.anchorNode === selection.focusNode && selection.anchorNode.nodeType === Node.TEXT_NODE) {\r
+ var startOffset = selection.anchorOffset;\r
+ var endOffset = selection.focusOffset;\r
+ if(startOffset > endOffset) {\r
+ var tmp = startOffset;\r
+ startOffset = endOffset;\r
+ endOffset = tmp;\r
+ }\r
+ var node = selection.anchorNode;\r
+ var prefix = node.data.substr(0, startOffset);\r
+ var suffix = node.data.substr(endOffset);\r
+ var core = node.data.substr(startOffset, endOffset - startOffset);\r
+ var newNode = $('<span wlxml-tag="' + target.val() + '">' + core + '</span>');\r
+ $(node).replaceWith(newNode);\r
+ newNode.before(prefix);\r
+ newNode.after(suffix);\r
+ mediator.nodeCreated(newNode);\r
+ isDirty = true;\r
+ }\r
+ });\r
},\r
selectTab: function(id) {\r
this.node.find('.rng-visualEditor-sidebarContentItem').hide();\r
sideBarView.setup();\r
\r
var mediator = {\r
+ getCurrentNode: function() {\r
+ return view.currentNode;\r
+ },\r
+ nodeCreated: function(node) {\r
+ view._markSelected(node);\r
+\r
+ var range = document.createRange();\r
+ range.selectNodeContents(node[0]);\r
+ range.collapse(false);\r
+\r
+ var selection = document.getSelection();\r
+ selection.removeAllRanges()\r
+ selection.addRange(range);\r
+ \r
+ },\r
nodeSelected: function(node) {\r
sideBarView.updateEditPane(node);\r
}\r