/**
* plugin.js
*
- * Copyright, Moxiecode Systems AB
* Released under LGPL License.
+ * Copyright (c) 1999-2015 Ephox Corp. All rights reserved
*
* License: http://www.tinymce.com/license
* Contributing: http://www.tinymce.com/contributing
}
function splitList(ul, li, newBlock) {
- var tmpRng, fragment;
+ var tmpRng, fragment, bookmarks, node;
- var bookmarks = dom.select('span[data-mce-type="bookmark"]', ul);
+ function removeAndKeepBookmarks(targetNode) {
+ tinymce.each(bookmarks, function(node) {
+ targetNode.parentNode.insertBefore(node, li.parentNode);
+ });
+
+ dom.remove(targetNode);
+ }
+ bookmarks = dom.select('span[data-mce-type="bookmark"]', ul);
newBlock = newBlock || createNewTextBlock(li);
tmpRng = dom.createRng();
tmpRng.setStartAfter(li);
tmpRng.setEndAfter(ul);
fragment = tmpRng.extractContents();
+ for (node = fragment.firstChild; node; node = node.firstChild) {
+ if (node.nodeName == 'LI' && dom.isEmpty(node)) {
+ dom.remove(node);
+ break;
+ }
+ }
+
if (!dom.isEmpty(fragment)) {
dom.insertAfter(fragment, ul);
}
dom.insertAfter(newBlock, ul);
if (dom.isEmpty(li.parentNode)) {
- tinymce.each(bookmarks, function(node) {
- li.parentNode.parentNode.insertBefore(node, li.parentNode);
- });
-
- dom.remove(li.parentNode);
+ removeAndKeepBookmarks(li.parentNode);
}
dom.remove(li);
+
+ if (dom.isEmpty(ul)) {
+ dom.remove(ul);
+ }
}
function mergeWithAdjacentLists(listBlock) {
}
return true;
- } else {
- if (ulParent.nodeName == 'LI') {
- ul = ulParent;
- newBlock = createNewTextBlock(li, 'LI');
- } else if (isListNode(ulParent)) {
- newBlock = createNewTextBlock(li, 'LI');
- } else {
- newBlock = createNewTextBlock(li);
- }
-
- splitList(ul, li, newBlock);
- normalizeList(ul.parentNode);
+ }
- return true;
+ if (ulParent.nodeName == 'LI') {
+ ul = ulParent;
+ newBlock = createNewTextBlock(li, 'LI');
+ } else if (isListNode(ulParent)) {
+ newBlock = createNewTextBlock(li, 'LI');
+ } else {
+ newBlock = createNewTextBlock(li);
}
- return false;
+ splitList(ul, li, newBlock);
+ normalizeList(ul.parentNode);
+
+ return true;
}
function indent(li) {
}
};
- editor.addCommand('Indent', function() {
- if (!indentSelection()) {
- return true;
+ editor.on('BeforeExecCommand', function(e) {
+ var cmd = e.command.toLowerCase(), isHandled;
+
+ if (cmd == "indent") {
+ if (indentSelection()) {
+ isHandled = true;
+ }
+ } else if (cmd == "outdent") {
+ if (outdentSelection()) {
+ isHandled = true;
+ }
}
- });
- editor.addCommand('Outdent', function() {
- if (!outdentSelection()) {
+ if (isHandled) {
+ editor.fire('ExecCommand', {command: e.command});
+ e.preventDefault();
return true;
}
});