X-Git-Url: https://scm.cri.ensmp.fr/git/ckeditor.git/blobdiff_plain/256592bf803e851aa7fc953e08a6e9e58d970f8c..871bad8291b6dbc29d489d95d185458caab25158:/skins/ckeditor/_source/plugins/div/plugin.js diff --git a/skins/ckeditor/_source/plugins/div/plugin.js b/skins/ckeditor/_source/plugins/div/plugin.js new file mode 100644 index 0000000..2f954dc --- /dev/null +++ b/skins/ckeditor/_source/plugins/div/plugin.js @@ -0,0 +1,121 @@ +/* +Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ + +/** + * @fileOverview The "div" plugin. It wraps the selected block level elements with a 'div' element with specified styles and attributes. + * + */ + +(function() +{ + CKEDITOR.plugins.add( 'div', + { + requires : [ 'editingblock', 'domiterator', 'styles' ], + + init : function( editor ) + { + var lang = editor.lang.div; + + editor.addCommand( 'creatediv', new CKEDITOR.dialogCommand( 'creatediv' ) ); + editor.addCommand( 'editdiv', new CKEDITOR.dialogCommand( 'editdiv' ) ); + editor.addCommand( 'removediv', + { + exec : function( editor ) + { + var selection = editor.getSelection(), + ranges = selection && selection.getRanges(), + range, + bookmarks = selection.createBookmarks(), + walker, + toRemove = []; + + function findDiv( node ) + { + var path = new CKEDITOR.dom.elementPath( node ), + blockLimit = path.blockLimit, + div = blockLimit.is( 'div' ) && blockLimit; + + if ( div && !div.data( 'cke-div-added' ) ) + { + toRemove.push( div ); + div.data( 'cke-div-added' ); + } + } + + for ( var i = 0 ; i < ranges.length ; i++ ) + { + range = ranges[ i ]; + if ( range.collapsed ) + findDiv( selection.getStartElement() ); + else + { + walker = new CKEDITOR.dom.walker( range ); + walker.evaluator = findDiv; + walker.lastForward(); + } + } + + for ( i = 0 ; i < toRemove.length ; i++ ) + toRemove[ i ].remove( true ); + + selection.selectBookmarks( bookmarks ); + } + } ); + + editor.ui.addButton( 'CreateDiv', + { + label : lang.toolbar, + command :'creatediv' + } ); + + if ( editor.addMenuItems ) + { + editor.addMenuItems( + { + editdiv : + { + label : lang.edit, + command : 'editdiv', + group : 'div', + order : 1 + }, + + removediv: + { + label : lang.remove, + command : 'removediv', + group : 'div', + order : 5 + } + } ); + + if ( editor.contextMenu ) + { + editor.contextMenu.addListener( function( element, selection ) + { + if ( !element || element.isReadOnly() ) + return null; + + var elementPath = new CKEDITOR.dom.elementPath( element ), + blockLimit = elementPath.blockLimit; + + if ( blockLimit && blockLimit.getAscendant( 'div', true ) ) + { + return { + editdiv : CKEDITOR.TRISTATE_OFF, + removediv : CKEDITOR.TRISTATE_OFF + }; + } + + return null; + } ); + } + } + + CKEDITOR.dialog.add( 'creatediv', this.path + 'dialogs/div.js' ); + CKEDITOR.dialog.add( 'editdiv', this.path + 'dialogs/div.js' ); + } + } ); +})();