plugin.js 2.5 KB

123456789
  1. /*
  2. Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
  3. For licensing, see LICENSE.md or http://ckeditor.com/license
  4. */
  5. (function(){function f(b,d,a){if(!b.getCustomData("indent_processed")){var e=this.editor,j=this.isIndent;if(d){e=b.$.className.match(this.classNameRegex);a=0;e&&(e=e[1],a=CKEDITOR.tools.indexOf(d,e)+1);if(0>(a+=j?1:-1))return;a=Math.min(a,d.length);a=Math.max(a,0);b.$.className=CKEDITOR.tools.ltrim(b.$.className.replace(this.classNameRegex,""));0<a&&b.addClass(d[a-1])}else{var d=k(b,a),a=parseInt(b.getStyle(d),10),g=e.config.indentOffset||40;isNaN(a)&&(a=0);a+=(j?1:-1)*g;if(0>a)return;a=Math.max(a,
  6. 0);a=Math.ceil(a/g)*g;b.setStyle(d,a?a+(e.config.indentUnit||"px"):"");""===b.getAttribute("style")&&b.removeAttribute("style")}CKEDITOR.dom.element.setMarker(this.database,b,"indent_processed",1)}}function k(b,d){return"ltr"==(d||b.getComputedStyle("direction"))?"margin-left":"margin-right"}var h=CKEDITOR.dtd.$listItem,m=CKEDITOR.dtd.$list,i=CKEDITOR.TRISTATE_DISABLED,l=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indentblock",{requires:"indent",init:function(b){function d(){a.specificDefinition.apply(this,
  7. arguments);this.allowedContent={"div h1 h2 h3 h4 h5 h6 ol p pre ul img":{propertiesOnly:!0,styles:!e?"margin-left,margin-right":null,classes:e||null}};this.enterBr&&(this.allowedContent.div=!0);this.requiredContent=(this.enterBr?"div":"p")+(e?"("+e.join(",")+")":"{margin-left}");this.jobs={20:{refresh:function(a,b){var c=b.block||b.blockLimit;c.is(h)||(c=c.getAscendant(h)||c);c.is(h)&&(c=c.getParent());if(!this.enterBr&&!this.getContext(b))return i;if(e){var d;d=e;var c=c.$.className.match(this.classNameRegex),
  8. f=this.isIndent;d=c?f?c[1]!=d.slice(-1):true:f;return d?l:i}return this.isIndent?l:c?CKEDITOR[(parseInt(c.getStyle(k(c)),10)||0)<=0?"TRISTATE_DISABLED":"TRISTATE_OFF"]:i},exec:function(a){var b=a.getSelection(),b=b&&b.getRanges()[0],c;if(c=a.elementPath().contains(m))f.call(this,c,e);else{b=b.createIterator();a=a.config.enterMode;b.enforceRealBlocks=true;for(b.enlargeBr=a!=CKEDITOR.ENTER_BR;c=b.getNextParagraph(a==CKEDITOR.ENTER_P?"p":"div");)c.isReadOnly()||f.call(this,c,e)}return true}}}}var a=
  9. CKEDITOR.plugins.indent,e=b.config.indentClasses;a.registerCommands(b,{indentblock:new d(b,"indentblock",!0),outdentblock:new d(b,"outdentblock")});CKEDITOR.tools.extend(d.prototype,a.specificDefinition.prototype,{context:{div:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,ul:1,ol:1,p:1,pre:1,table:1},classNameRegex:e?RegExp("(?:^|\\s+)("+e.join("|")+")(?=$|\\s)"):null})}})})();