this.node.on('keydown', '#rng-visualEditor-contentWrapper', function(e) {\r
if(e.which === 13) { \r
e.preventDefault();\r
- var anchor = $(window.getSelection().anchorNode);\r
- if(anchor[0].nodeType === Node.TEXT_NODE)\r
- anchor = anchor.parent();\r
- if(anchor.text() === '') {\r
- var todel = anchor;\r
- anchor = anchor.parent();\r
- todel.remove();\r
- }\r
- var newNode = anchor.clone().empty();\r
- newNode.attr('id', '');\r
- anchor.after(newNode);\r
- view.selectNode(newNode);\r
+ view.insertNewNode(null, null);\r
}\r
});\r
\r
\r
this.gridToggled = false;
},\r
+ _createNode: function(wlxmlTag, wlxmlClass) {\r
+ var toBlock = ['div', 'document', 'section', 'header'];\r
+ var htmlTag = _.contains(toBlock, wlxmlTag) ? 'div' : 'span';\r
+ var toret = $('<' + htmlTag + '>');\r
+ toret.attr('wlxml-tag', wlxmlTag);\r
+ if(wlxmlClass)\r
+ toret.attr('wlxml-class', wlxmlClass);\r
+ return toret;\r
+ },\r
+ insertNewNode: function(wlxmlTag, wlxmlClass) {\r
+ //TODO: Insert inline\r
+ var anchor = $(window.getSelection().anchorNode);\r
+ if(anchor[0].nodeType === Node.TEXT_NODE)\r
+ anchor = anchor.parent();\r
+ if(anchor.text() === '') {\r
+ var todel = anchor;\r
+ anchor = anchor.parent();\r
+ todel.remove();\r
+ }\r
+ var newNode = this._createNode(wlxmlTag || anchor.attr('wlxml-tag'), wlxmlClass || anchor.attr('wlxml-class'));\r
+ anchor.after(newNode);\r
+ mediator.nodeCreated(newNode);\r
+ isDirty = true;\r
+ },\r
+ wrapSelectionWithNewNode: function(wlxmlTag, wlxmlClass) {\r
+ \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 = this._createNode(wlxmlTag, wlxmlClass);\r
+ newNode.text(core);\r
+ $(node).replaceWith(newNode);\r
+ newNode.before(prefix);\r
+ newNode.after(suffix);\r
+ mediator.nodeCreated(newNode);\r
+ isDirty = true;\r
+ }\r
+ },\r
getMetaData: function() {\r
var toret = {};\r
this.metaTable.find('tr').each(function() {\r
}, \r
_markSelected: function(node) {\r
this.dimNode(node);\r
+ \r
this.node.find('.rng-current').removeClass('rng-current');\r
+ \r
node.addClass('rng-current');\r
+\r
this.currentNode = node;\r
mediator.nodeSelected(node);\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
+ mediator.wrapWithNodeRequest(target.val(), null);\r
});\r
\r
view.node.on('click', '.rng-visualEditor-editPaneSurrouding a', function(e) {\r
btn.toggleClass('active')\r
mediator.toolbarButtonToggled(btn.attr('data-btn'), btn.hasClass('active'));\r
}\r
+ if(btn.attr('data-btn-type') === 'cmd') {\r
+ mediator.toolbarButtonCmd(btn.attr('data-btn'));\r
+ }\r
});\r
+ },\r
+ getOption: function(option) {\r
+ return this.node.find('.rng-visualEditor-toolbarOption[data-option=' + option +']').val();\r
}\r
}\r
\r
},\r
nodeCreated: function(node) {\r
view.selectNode(node);\r
- \r
},\r
nodeSelected: function(node) {\r
sideBarView.updateEditPane(node);\r
if(btn === 'tags')\r
view.toggleTags(toggle);\r
},\r
+ toolbarButtonCmd: function(btn) {\r
+ if(btn === 'new-node') {\r
+ if(window.getSelection().isCollapsed)\r
+ view.insertNewNode(toolbarView.getOption('newTag-tag'), toolbarView.getOption('newTag-class'));\r
+ else {\r
+ this.wrapWithNodeRequest(toolbarView.getOption('newTag-tag'), toolbarView.getOption('newTag-class'));\r
+ }\r
+ \r
+ \r
+ }\r
+ },\r
nodeHovered: function(node) {\r
view.highlightNode(node);\r
sideBarView.highlightNode(node.attr('id'));\r
nodeBlured: function(node) {\r
view.dimNode(node);\r
sideBarView.dimNode(node.attr('id'));\r
+ },\r
+ wrapWithNodeRequest: function(wlxmlTag, wlxmlClass) {\r
+ view.wrapSelectionWithNewNode(wlxmlTag, wlxmlClass);\r
}\r
\r
}\r