/*\r
-Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.\r
+Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.\r
For licensing, see LICENSE.html or http://ckeditor.com/license\r
*/\r
\r
* @file Image plugin\r
*/\r
\r
+(function()\r
+{\r
+\r
CKEDITOR.plugins.add( 'image',\r
{\r
+ requires: [ 'dialog' ],\r
+\r
init : function( editor )\r
{\r
var pluginName = 'image';\r
{\r
var element = evt.data.element;\r
\r
- if ( element.is( 'img' ) && !element.getAttribute( '_cke_realelement' ) )\r
+ if ( element.is( 'img' ) && !element.data( 'cke-realelement' ) && !element.isReadOnly() )\r
evt.data.dialog = 'image';\r
});\r
\r
{\r
editor.contextMenu.addListener( function( element, selection )\r
{\r
- if ( !element || !element.is( 'img' ) || element.getAttribute( '_cke_realelement' ) || element.isReadOnly() )\r
- return null;\r
-\r
- return { image : CKEDITOR.TRISTATE_OFF };\r
+ if ( getSelectedImage( editor, element ) )\r
+ return { image : CKEDITOR.TRISTATE_OFF };\r
});\r
}\r
+ },\r
+ afterInit : function( editor )\r
+ {\r
+ // Customize the behavior of the alignment commands. (#7430)\r
+ setupAlignCommand( 'left' );\r
+ setupAlignCommand( 'right' );\r
+ setupAlignCommand( 'center' );\r
+ setupAlignCommand( 'block' );\r
+\r
+ function setupAlignCommand( value )\r
+ {\r
+ var command = editor.getCommand( 'justify' + value );\r
+ if ( command )\r
+ {\r
+ if ( value == 'left' || value == 'right' )\r
+ {\r
+ command.on( 'exec', function( evt )\r
+ {\r
+ var img = getSelectedImage( editor ), align;\r
+ if ( img )\r
+ {\r
+ align = getImageAlignment( img );\r
+ if ( align == value )\r
+ {\r
+ img.removeStyle( 'float' );\r
+\r
+ // Remove "align" attribute when necessary.\r
+ if ( value == getImageAlignment( img ) )\r
+ img.removeAttribute( 'align' );\r
+ }\r
+ else\r
+ img.setStyle( 'float', value );\r
+\r
+ evt.cancel();\r
+ }\r
+ });\r
+ }\r
+\r
+ command.on( 'refresh', function( evt )\r
+ {\r
+ var img = getSelectedImage( editor ), align;\r
+ if ( img )\r
+ {\r
+ align = getImageAlignment( img );\r
+\r
+ this.setState(\r
+ ( align == value ) ? CKEDITOR.TRISTATE_ON :\r
+ ( value == 'right' || value == 'left' ) ? CKEDITOR.TRISTATE_OFF :\r
+ CKEDITOR.TRISTATE_DISABLED );\r
+\r
+ evt.cancel();\r
+ }\r
+ });\r
+ }\r
+ }\r
}\r
-} );\r
+});\r
+\r
+function getSelectedImage( editor, element )\r
+{\r
+ if ( !element )\r
+ {\r
+ var sel = editor.getSelection();\r
+ element = ( sel.getType() == CKEDITOR.SELECTION_ELEMENT ) && sel.getSelectedElement();\r
+ }\r
+\r
+ if ( element && element.is( 'img' ) && !element.data( 'cke-realelement' ) && !element.isReadOnly() )\r
+ return element;\r
+}\r
+\r
+function getImageAlignment( element )\r
+{\r
+ var align = element.getStyle( 'float' );\r
+\r
+ if ( align == 'inherit' || align == 'none' )\r
+ align = 0;\r
+\r
+ if ( !align )\r
+ align = element.getAttribute( 'align' );\r
+\r
+ return align;\r
+}\r
+\r
+})();\r
\r
/**\r
* Whether to remove links when emptying the link URL field in the image dialog.\r