+\r
+ // [IE6/7] Raw lists are using margin instead of padding for visual indentation in wysiwyg mode. (#3893)\r
+ if ( CKEDITOR.env.ie6Compat || CKEDITOR.env.ie7Compat )\r
+ {\r
+ editor.addCss(\r
+ "ul,ol" +\r
+ "{" +\r
+ " margin-left: 0px;" +\r
+ " padding-left: 40px;" +\r
+ "}" );\r
+ }\r
+\r
+ // Register dirChanged listener.\r
+ editor.on( 'dirChanged', function( e )\r
+ {\r
+ var range = new CKEDITOR.dom.range( editor.document );\r
+ range.setStartBefore( e.data.node );\r
+ range.setEndAfter( e.data.node );\r
+\r
+ var walker = new CKEDITOR.dom.walker( range ),\r
+ node;\r
+\r
+ while ( ( node = walker.next() ) )\r
+ {\r
+ if ( node.type == CKEDITOR.NODE_ELEMENT )\r
+ {\r
+ // A child with the defined dir is to be ignored.\r
+ if ( !node.equals( e.data.node ) && node.getDirection() )\r
+ {\r
+ range.setStartAfter( node );\r
+ walker = new CKEDITOR.dom.walker( range );\r
+ continue;\r
+ }\r
+\r
+ // Switch alignment classes.\r
+ var classes = editor.config.indentClasses;\r
+ if ( classes )\r
+ {\r
+ var suffix = ( e.data.dir == 'ltr' ) ? [ '_rtl', '' ] : [ '', '_rtl' ];\r
+ for ( var i = 0; i < classes.length; i++ )\r
+ {\r
+ if ( node.hasClass( classes[ i ] + suffix[ 0 ] ) )\r
+ {\r
+ node.removeClass( classes[ i ] + suffix[ 0 ] );\r
+ node.addClass( classes[ i ] + suffix[ 1 ] );\r
+ }\r
+ }\r
+ }\r
+\r
+ // Switch the margins.\r
+ var marginLeft = node.getStyle( 'margin-right' ),\r
+ marginRight = node.getStyle( 'margin-left' );\r
+\r
+ marginLeft ? node.setStyle( 'margin-left', marginLeft ) : node.removeStyle( 'margin-left' );\r
+ marginRight ? node.setStyle( 'margin-right', marginRight ) : node.removeStyle( 'margin-right' );\r
+ }\r
+ }\r
+ });\r