/* Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ /** * @file Image plugin */ (function() { CKEDITOR.plugins.add( 'image', { requires: [ 'dialog' ], init : function( editor ) { var pluginName = 'image'; // Register the dialog. CKEDITOR.dialog.add( pluginName, this.path + 'dialogs/image.js' ); // Register the command. editor.addCommand( pluginName, new CKEDITOR.dialogCommand( pluginName ) ); // Register the toolbar button. editor.ui.addButton( 'Image', { label : editor.lang.common.image, command : pluginName }); editor.on( 'doubleclick', function( evt ) { var element = evt.data.element; if ( element.is( 'img' ) && !element.data( 'cke-realelement' ) && !element.isReadOnly() ) evt.data.dialog = 'image'; }); // If the "menu" plugin is loaded, register the menu items. if ( editor.addMenuItems ) { editor.addMenuItems( { image : { label : editor.lang.image.menu, command : 'image', group : 'image' } }); } // If the "contextmenu" plugin is loaded, register the listeners. if ( editor.contextMenu ) { editor.contextMenu.addListener( function( element, selection ) { if ( getSelectedImage( editor, element ) ) return { image : CKEDITOR.TRISTATE_OFF }; }); } }, afterInit : function( editor ) { // Customize the behavior of the alignment commands. (#7430) setupAlignCommand( 'left' ); setupAlignCommand( 'right' ); setupAlignCommand( 'center' ); setupAlignCommand( 'block' ); function setupAlignCommand( value ) { var command = editor.getCommand( 'justify' + value ); if ( command ) { if ( value == 'left' || value == 'right' ) { command.on( 'exec', function( evt ) { var img = getSelectedImage( editor ), align; if ( img ) { align = getImageAlignment( img ); if ( align == value ) { img.removeStyle( 'float' ); // Remove "align" attribute when necessary. if ( value == getImageAlignment( img ) ) img.removeAttribute( 'align' ); } else img.setStyle( 'float', value ); evt.cancel(); } }); } command.on( 'refresh', function( evt ) { var img = getSelectedImage( editor ), align; if ( img ) { align = getImageAlignment( img ); this.setState( ( align == value ) ? CKEDITOR.TRISTATE_ON : ( value == 'right' || value == 'left' ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED ); evt.cancel(); } }); } } } }); function getSelectedImage( editor, element ) { if ( !element ) { var sel = editor.getSelection(); element = ( sel.getType() == CKEDITOR.SELECTION_ELEMENT ) && sel.getSelectedElement(); } if ( element && element.is( 'img' ) && !element.data( 'cke-realelement' ) && !element.isReadOnly() ) return element; } function getImageAlignment( element ) { var align = element.getStyle( 'float' ); if ( align == 'inherit' || align == 'none' ) align = 0; if ( !align ) align = element.getAttribute( 'align' ); return align; } })(); /** * Whether to remove links when emptying the link URL field in the image dialog. * @type Boolean * @default true * @example * config.image_removeLinkByEmptyURL = false; */ CKEDITOR.config.image_removeLinkByEmptyURL = true; /** * Padding text to set off the image in preview area. * @name CKEDITOR.config.image_previewText * @type String * @default "Lorem ipsum dolor..." placehoder text. * @example * config.image_previewText = CKEDITOR.tools.repeat( '___ ', 100 ); */