diff --git a/js/plugins/splittext/plugin.js b/js/plugins/splittext/plugin.js index 044f4ccea072e259df9da84967dad6e4f2964839..2c1de81c418273c5912949d58f13eb6f86699426 100644 --- a/js/plugins/splittext/plugin.js +++ b/js/plugins/splittext/plugin.js @@ -86,6 +86,20 @@ var selection = editor.getSelection(); var ranges = selection.getRanges(); + // If cursor set after a text passage(paragraph) then after splitting this + // passage will be joined with the previous one. Next rows fix this problem. + var firstNode = ranges[0].startContainer; + if (ranges[0].startContainer.type === CKEDITOR.SELECTION_ELEMENT) { + // If selection begins at the end of paragraph then use parent element. + if (firstNode.getLength() === ranges[0].startOffset) { + firstNode = ranges[0].startContainer.getParent().getNext(); + ranges[0].setStartBefore(firstNode); + } + } + + // Trim all spaces and linebreaks at the beginning of new paragraph. + trimElements(firstNode); + // Last node that should be selected to cut content should be text type. var lastNode = ranges[0].document.getBody().getLast(); ranges[0].setEndAfter(lastNode); @@ -110,6 +124,22 @@ tmpObject.split_trigger = true; }; + /** + * Trim all empty elements at the beginning of new paragraph. + * + * @param {object} element + * Element to check. + */ + var trimElements = function (element) { + if (element && !element.getText().trim()) { + var next = element.getNext(); + element.remove(); + if (next) { + trimElements(next); + } + } + }; + /** * Handler for ajax requests. *