X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=_source%2Fplugins%2Fimage%2Fplugin.js;h=cc235a7ba866835ea1a8b9cae198fbc601787421;hb=a272c66d841421f8bf933c16535bdcde1c4649fc;hp=4c709b20405018abc4b7a64c0842a026ababc966;hpb=f8fc585c18d287eb325c575596d183122486b641;p=ckeditor.git diff --git a/_source/plugins/image/plugin.js b/_source/plugins/image/plugin.js index 4c709b2..cc235a7 100644 --- a/_source/plugins/image/plugin.js +++ b/_source/plugins/image/plugin.js @@ -1,5 +1,5 @@ /* -Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ @@ -7,8 +7,13 @@ 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'; @@ -30,7 +35,7 @@ CKEDITOR.plugins.add( 'image', { var element = evt.data.element; - if ( element.is( 'img' ) && !element.getAttribute( '_cke_realelement' ) ) + if ( element.is( 'img' ) && !element.data( 'cke-realelement' ) && !element.isReadOnly() ) evt.data.dialog = 'image'; }); @@ -53,14 +58,94 @@ CKEDITOR.plugins.add( 'image', { editor.contextMenu.addListener( function( element, selection ) { - if ( !element || !element.is( 'img' ) || element.getAttribute( '_cke_realelement' ) ) - return null; - - return { image : CKEDITOR.TRISTATE_OFF }; + 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.