tinymce-editor/copy_this/modules/hdi/hdi-tinymce/tinymce/plugins/lists/plugin.min.js
2013-07-25 23:50:43 +02:00

1 line
5.9 KiB
JavaScript
Executable File

tinymce.PluginManager.add("lists",function(e){var t=this;e.on("init",function(){function n(e){function t(t){var i,r,o;r=e[t?"startContainer":"endContainer"],o=e[t?"startOffset":"endOffset"],1==r.nodeType&&(i=y.create("span",{"data-mce-type":"bookmark"}),r.hasChildNodes()?(o=Math.min(o,r.childNodes.length-1),r.insertBefore(i,r.childNodes[o])):r.appendChild(i),r=i,o=0),n[t?"startContainer":"endContainer"]=r,n[t?"startOffset":"endOffset"]=o}var n={};return t(!0),t(),n}function i(e){function t(t){function n(e){for(var t=e.parentNode.firstChild,n=0;t;){if(t==e)return n;(1!=t.nodeType||"bookmark"!=t.getAttribute("data-mce-type"))&&n++,t=t.nextSibling}return-1}var i,r,o;i=o=e[t?"startContainer":"endContainer"],r=e[t?"startOffset":"endOffset"],1==i.nodeType&&(t?(r=n(i),i=i.parentNode):(r=n(i),i=i.parentNode),y.remove(o)),e[t?"startContainer":"endContainer"]=i,e[t?"startOffset":"endOffset"]=r}t(!0),t();var n=y.createRng();n.setStart(e.startContainer,e.startOffset),n.setEnd(e.endContainer,e.endOffset),C.setRng(n)}function r(e){return e&&/^(OL|UL)$/.test(e.nodeName)}function o(e){return e.parentNode.firstChild==e}function a(e){return e.parentNode.lastChild==e}function l(t){return t&&!!e.schema.getTextBlockElements()[t.nodeName]}function s(t,n){var i,r;if(e.settings.forced_root_block&&(n=n||e.settings.forced_root_block),r=n?y.create(n):y.createFragment(),t)for(;i=t.firstChild;)r.appendChild(i);return e.settings.forced_root_block||r.appendChild(y.create("br")),r.hasChildNodes()||tinymce.isIE||(r.innerHTML='<br data-mce-bogus="1">'),r}function d(){return tinymce.grep(C.getSelectedBlocks(),function(e){return"LI"==e.nodeName})}function c(){return tinymce.grep(C.getSelectedBlocks(),l)}function u(e,t,n){var i,r;n=n||s(t),i=y.createRng(),i.setStartAfter(t),i.setEndAfter(e),r=i.extractContents(),y.isEmpty(r)||y.insertAfter(r,e),y.isEmpty(n)||y.insertAfter(n,e),y.isEmpty(t.parentNode)&&y.remove(t.parentNode),y.remove(t)}function m(e){var t,n;if(t=e.nextSibling,t&&r(t)&&t.nodeName==e.nodeName){for(;n=t.firstChild;)e.appendChild(n);y.remove(t)}if(t=e.previousSibling,t&&r(t)&&t.nodeName==e.nodeName){for(;n=t.firstChild;)e.insertBefore(n,e.firstChild);y.remove(t)}}function f(e){tinymce.each(tinymce.grep(y.select("ol,ul",e)),function(e){var t,n=e.parentNode;"LI"==n.nodeName&&n.firstChild==e&&(t=n.previousSibling,t&&"LI"==t.nodeName&&(t.appendChild(e),y.isEmpty(n)&&y.remove(n))),r(n)&&(t=n.previousSibling,t&&"LI"==t.nodeName&&t.appendChild(e))})}function h(){var e,t=n(C.getRng(!0));return tinymce.each(d(),function(t){var n,i;return n=t.previousSibling,n&&"UL"==n.nodeName?(n.appendChild(t),void 0):n&&"LI"==n.nodeName&&r(n.lastChild)?(n.lastChild.appendChild(t),void 0):(n=t.nextSibling,n&&"UL"==n.nodeName?(n.insertBefore(t,n.firstChild),void 0):(n&&"LI"==n.nodeName&&r(t.lastChild)||(n=t.previousSibling,n&&"LI"==n.nodeName&&(i=y.create(t.parentNode.nodeName),n.appendChild(i),i.appendChild(t)),e=!0),void 0))}),i(t),e}function p(){function e(e){y.isEmpty(e)&&y.remove(e)}var t,l=n(C.getRng(!0));return tinymce.each(d(),function(n){var i,l=n.parentNode,d=l.parentNode;if(o(n)&&a(n))if("LI"==d.nodeName)y.insertAfter(n,d),e(d);else{if(!r(d))return;y.remove(l,!0)}else if(o(n))if("LI"==d.nodeName)y.insertAfter(n,d),i=y.create("LI"),i.appendChild(l),y.insertAfter(i,n),e(d);else{if(!r(d))return;d.insertBefore(n,l)}else if(a(n))if("LI"==d.nodeName)y.insertAfter(n,d);else{if(!r(d))return;y.insertAfter(n,l)}else{if("LI"==d.nodeName)l=d,i=s(n,"LI");else{if(!r(d))return;i=s(n,"LI")}u(l,n,i),f(l.parentNode)}t=!0}),i(l),t}function g(t){function o(){function t(t){var n,i,r=e.getBody();for(n=a[t?"startContainer":"endContainer"],i=a[t?"startOffset":"endOffset"],1==n.nodeType&&(n=n.childNodes[Math.min(i,n.childNodes.length-1)]||n);n.parentNode!=r;){if(l(n))return n;if(/^(TD|TH)$/.test(n.parentNode.nodeName))return n;n=n.parentNode}return n}function n(e,t){var n,i=[];if(!l(e)){for(;e&&(n=e[t?"previousSibling":"nextSibling"],!y.isBlock(n)&&n);)e=n;for(;e;)i.push(e),e=e[t?"nextSibling":"previousSibling"]}return i}var i,r,o=t(!0),s=t();r=n(o,!0),o!=s&&(r=r.concat(n(s).reverse())),tinymce.each(r,function(e){if(!y.isBlock(e)||"BR"==e.nodeName){if(!i||"BR"==e.nodeName){if("BR"==e.nodeName&&(!e.nextSibling||y.isBlock(e.nextSibling)&&"BR"!=e.nextSibling.nodeName))return y.remove(e),!1;i=y.create("p"),d.push(i),e.parentNode.insertBefore(i,e)}return"BR"!=e.nodeName?i.appendChild(e):y.remove(e),e==s?!1:void 0}})}var a=C.getRng(!0),s=n(a),d=c();o(),tinymce.each(d,function(e){var n,i;i=e.previousSibling,i&&r(i)&&i.nodeName==t?(n=i,e=y.rename(e,"LI"),i.appendChild(e)):(n=y.create(t),e.parentNode.insertBefore(n,e),n.appendChild(e),e=y.rename(e,"LI")),m(n)}),i(s)}function v(){var e=n(C.getRng(!0));tinymce.each(d(),function(e){var t,n;for(t=e;t;t=t.parentNode)r(t)&&(n=t);u(n,e)}),i(e)}function b(e){var t=y.getParent(C.getStart(),"OL,UL");if(t)if(t.nodeName==e)v(e);else{var r=n(C.getRng(!0));m(y.rename(t,e)),i(r)}else g(e)}var y=e.dom,C=e.selection;t.backspaceDelete=function(e){function t(e,t){var n=e.startContainer,i=e.startOffset;if(3==n.nodeType&&(t?i<n.data.length:i>0))return n;for(var r=new tinymce.dom.TreeWalker(e.startContainer);n=r[t?"next":"prev"]();)if(3==n.nodeType&&n.data.length>0)return n}function o(e,t){var n,i,o=e.parentNode;for(r(t.lastChild)&&(i=t.lastChild),n=t.lastChild,n&&"BR"==n.nodeName&&e.hasChildNodes()&&y.remove(n);n=e.firstChild;)t.appendChild(n);i&&t.appendChild(i),y.remove(e),y.isEmpty(o)&&y.remove(o)}if(C.isCollapsed()){var a=y.getParent(C.getStart(),"LI");if(a){var l=C.getRng(!0),s=y.getParent(t(l,e),"LI");if(s&&s!=a){var d=n(l);return e?o(s,a):o(a,s),i(d),!0}if(!s&&!e&&v(a.parentNode.nodeName))return!0}}},e.addCommand("Indent",function(){return h()?void 0:!0}),e.addCommand("Outdent",function(){return p()?void 0:!0}),e.addCommand("InsertUnorderedList",function(){b("UL")}),e.addCommand("InsertOrderedList",function(){b("OL")})}),e.on("keydown",function(e){e.keyCode==tinymce.util.VK.BACKSPACE?t.backspaceDelete()&&e.preventDefault():e.keyCode==tinymce.util.VK.DELETE&&t.backspaceDelete(!0)&&e.preventDefault()})});