2 Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
\r
3 For licensing, see LICENSE.html or http://ckeditor.com/license
\r
7 * @fileOverview The "div" plugin. It wraps the selected block level elements with a 'div' element with specified styles and attributes.
\r
13 CKEDITOR.plugins.add( 'div',
\r
15 requires : [ 'editingblock', 'dialog', 'domiterator', 'styles' ],
\r
17 init : function( editor )
\r
19 var lang = editor.lang.div;
\r
21 editor.addCommand( 'creatediv', new CKEDITOR.dialogCommand( 'creatediv' ) );
\r
22 editor.addCommand( 'editdiv', new CKEDITOR.dialogCommand( 'editdiv' ) );
\r
23 editor.addCommand( 'removediv',
\r
25 exec : function( editor )
\r
27 var selection = editor.getSelection(),
\r
28 ranges = selection && selection.getRanges(),
\r
30 bookmarks = selection.createBookmarks(),
\r
34 function findDiv( node )
\r
36 var path = new CKEDITOR.dom.elementPath( node ),
\r
37 blockLimit = path.blockLimit,
\r
38 div = blockLimit.is( 'div' ) && blockLimit;
\r
40 if ( div && !div.data( 'cke-div-added' ) )
\r
42 toRemove.push( div );
\r
43 div.data( 'cke-div-added' );
\r
47 for ( var i = 0 ; i < ranges.length ; i++ )
\r
49 range = ranges[ i ];
\r
50 if ( range.collapsed )
\r
51 findDiv( selection.getStartElement() );
\r
54 walker = new CKEDITOR.dom.walker( range );
\r
55 walker.evaluator = findDiv;
\r
56 walker.lastForward();
\r
60 for ( i = 0 ; i < toRemove.length ; i++ )
\r
61 toRemove[ i ].remove( true );
\r
63 selection.selectBookmarks( bookmarks );
\r
67 editor.ui.addButton( 'CreateDiv',
\r
69 label : lang.toolbar,
\r
70 command :'creatediv'
\r
73 if ( editor.addMenuItems )
\r
75 editor.addMenuItems(
\r
80 command : 'editdiv',
\r
87 label : lang.remove,
\r
88 command : 'removediv',
\r
94 if ( editor.contextMenu )
\r
96 editor.contextMenu.addListener( function( element, selection )
\r
98 if ( !element || element.isReadOnly() )
\r
101 var elementPath = new CKEDITOR.dom.elementPath( element ),
\r
102 blockLimit = elementPath.blockLimit;
\r
104 if ( blockLimit && blockLimit.getAscendant( 'div', true ) )
\r
107 editdiv : CKEDITOR.TRISTATE_OFF,
\r
108 removediv : CKEDITOR.TRISTATE_OFF
\r
117 CKEDITOR.dialog.add( 'creatediv', this.path + 'dialogs/div.js' );
\r
118 CKEDITOR.dialog.add( 'editdiv', this.path + 'dialogs/div.js' );
\r