\r
// Apply indenting or outdenting on the array.\r
var baseIndent = listArray[ lastItem.getCustomData( 'listarray_index' ) ].indent;\r
- for ( i = startItem.getCustomData( 'listarray_index' ) ; i <= lastItem.getCustomData( 'listarray_index' ) ; i++ )\r
- listArray[i].indent += indentOffset;\r
+ for ( i = startItem.getCustomData( 'listarray_index' ); i <= lastItem.getCustomData( 'listarray_index' ); i++ )\r
+ {\r
+ listArray[ i ].indent += indentOffset;\r
+ // Make sure the newly created sublist get a brand-new element of the same type. (#5372)\r
+ var listRoot = listArray[ i ].parent;\r
+ listArray[ i ].parent = new CKEDITOR.dom.element( listRoot.getName(), listRoot.getDocument() );\r
+ }\r
+\r
for ( i = lastItem.getCustomData( 'listarray_index' ) + 1 ;\r
i < listArray.length && listArray[i].indent > baseIndent ; i++ )\r
listArray[i].indent += indentOffset;\r
\r
for ( i = count - 1 ; i >= 0 ; i-- )\r
{\r
- if( ( child = children.getItem( i ) ) && child.is && child.is( 'li' ) )\r
+ if ( ( child = children.getItem( i ) ) && child.is && child.is( 'li' ) )\r
pendingLis.push( child );\r
}\r
}\r
followingList = li;\r
\r
// Nest preceding <ul>/<ol> inside current <li> if any.\r
- while( ( followingList = followingList.getNext() ) &&\r
+ while ( ( followingList = followingList.getNext() ) &&\r
followingList.is &&\r
followingList.getName() in listNodeNames )\r
{\r
if ( indentStep < 1 )\r
block.$.className = className;\r
else\r
- block.addClass( editor.config.indentClasses[ indentStep - 1 ] );\r
+ block.$.className = CKEDITOR.tools.ltrim( className + ' ' + editor.config.indentClasses[ indentStep - 1 ] );\r
}\r
else\r
{\r
}\r
else\r
this.indentCssProperty = editor.config.contentsLangDirection == 'ltr' ? 'margin-left' : 'margin-right';\r
+ this.startDisabled = name == 'outdent';\r
}\r
\r
indentCommand.prototype = {\r
indentUnit : 'px',\r
indentClasses : null\r
});\r
+\r
+/**\r
+ * Size of each indentation step\r
+ * @type Number\r
+ * @example\r
+ * config.indentOffset = 40;\r
+ */\r
+\r
+ /**\r
+ * Unit for the indentation style\r
+ * @type String\r
+ * @example\r
+ * config.indentUnit = 'px';\r
+ */\r
+\r
+ /**\r
+ * List of classes to use for indenting the contents.\r
+ * @type Array\r
+ * @example\r
+ * // Don't use classes for indenting. (this is the default value)\r
+ * config.indentClasses = null;\r
+ * @example\r
+ * // Use the classes 'Indent1', 'Indent2', 'Indent3'\r
+ * config.indentClasses = ['Indent1', 'Indent2', 'Indent3'];\r
+ */\r
+\r
+/**\r
+ * Size of each indentation step\r
+ * @type Number\r
+ * @default 40\r
+ * @example\r
+ * config.indentOffset = 4;\r
+ */\r
+\r
+ /**\r
+ * Unit for the indentation style\r
+ * @type String\r
+ * @default 'px'\r
+ * @example\r
+ * config.indentUnit = 'em';\r
+ */\r
+\r
+ /**\r
+ * List of classes to use for indenting the contents. If it's null, no classes will be used\r
+ * and instead the {@link #indentUnit} and {@link #indentOffset} properties will be used.\r
+ * @type Array\r
+ * default null\r
+ * @example\r
+ * // Use the classes 'Indent1', 'Indent2', 'Indent3'\r
+ * config.indentClasses = ['Indent1', 'Indent2', 'Indent3'];\r
+ */\r