]> git.immae.eu Git - perso/Immae/Projets/packagist/piedsjaloux-ckeditor-component.git/blame - sources/plugins/image/plugin.js
Add oembed
[perso/Immae/Projets/packagist/piedsjaloux-ckeditor-component.git] / sources / plugins / image / plugin.js
CommitLineData
3332bebe 1/**\r
317f8f8f 2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.\r
3332bebe
IB
3 * For licensing, see LICENSE.md or http://ckeditor.com/license\r
4 */\r
5\r
6/**\r
7 * @fileOverview The Image plugin.\r
8 */\r
9\r
10( function() {\r
11\r
12 CKEDITOR.plugins.add( 'image', {\r
13 requires: 'dialog',\r
14 // jscs:disable maximumLineLength\r
317f8f8f 15 lang: 'af,ar,az,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,es-mx,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE%\r
3332bebe
IB
16 // jscs:enable maximumLineLength\r
17 icons: 'image', // %REMOVE_LINE_CORE%\r
18 hidpi: true, // %REMOVE_LINE_CORE%\r
19 init: function( editor ) {\r
20 // Abort when Image2 is to be loaded since both plugins\r
317f8f8f 21 // share the same button, command, etc. names (http://dev.ckeditor.com/ticket/11222).\r
3332bebe
IB
22 if ( editor.plugins.image2 )\r
23 return;\r
24\r
25 var pluginName = 'image';\r
26\r
27 // Register the dialog.\r
28 CKEDITOR.dialog.add( pluginName, this.path + 'dialogs/image.js' );\r
29\r
30 var allowed = 'img[alt,!src]{border-style,border-width,float,height,margin,margin-bottom,margin-left,margin-right,margin-top,width}',\r
31 required = 'img[alt,src]';\r
32\r
33 if ( CKEDITOR.dialog.isTabEnabled( editor, pluginName, 'advanced' ) )\r
34 allowed = 'img[alt,dir,id,lang,longdesc,!src,title]{*}(*)';\r
35\r
36 // Register the command.\r
37 editor.addCommand( pluginName, new CKEDITOR.dialogCommand( pluginName, {\r
38 allowedContent: allowed,\r
39 requiredContent: required,\r
40 contentTransformations: [\r
41 [ 'img{width}: sizeToStyle', 'img[width]: sizeToAttribute' ],\r
42 [ 'img{float}: alignmentToStyle', 'img[align]: alignmentToAttribute' ]\r
43 ]\r
44 } ) );\r
45\r
46 // Register the toolbar button.\r
47 editor.ui.addButton && editor.ui.addButton( 'Image', {\r
48 label: editor.lang.common.image,\r
49 command: pluginName,\r
50 toolbar: 'insert,10'\r
51 } );\r
52\r
53 editor.on( 'doubleclick', function( evt ) {\r
54 var element = evt.data.element;\r
55\r
56 if ( element.is( 'img' ) && !element.data( 'cke-realelement' ) && !element.isReadOnly() )\r
57 evt.data.dialog = 'image';\r
58 } );\r
59\r
60 // If the "menu" plugin is loaded, register the menu items.\r
61 if ( editor.addMenuItems ) {\r
62 editor.addMenuItems( {\r
63 image: {\r
64 label: editor.lang.image.menu,\r
65 command: 'image',\r
66 group: 'image'\r
67 }\r
68 } );\r
69 }\r
70\r
71 // If the "contextmenu" plugin is loaded, register the listeners.\r
72 if ( editor.contextMenu ) {\r
73 editor.contextMenu.addListener( function( element ) {\r
74 if ( getSelectedImage( editor, element ) )\r
75 return { image: CKEDITOR.TRISTATE_OFF };\r
76 } );\r
77 }\r
78 },\r
79 afterInit: function( editor ) {\r
80 // Abort when Image2 is to be loaded since both plugins\r
317f8f8f 81 // share the same button, command, etc. names (http://dev.ckeditor.com/ticket/11222).\r
3332bebe
IB
82 if ( editor.plugins.image2 )\r
83 return;\r
84\r
317f8f8f 85 // Customize the behavior of the alignment commands. (http://dev.ckeditor.com/ticket/7430)\r
3332bebe
IB
86 setupAlignCommand( 'left' );\r
87 setupAlignCommand( 'right' );\r
88 setupAlignCommand( 'center' );\r
89 setupAlignCommand( 'block' );\r
90\r
91 function setupAlignCommand( value ) {\r
92 var command = editor.getCommand( 'justify' + value );\r
93 if ( command ) {\r
94 if ( value == 'left' || value == 'right' ) {\r
95 command.on( 'exec', function( evt ) {\r
96 var img = getSelectedImage( editor ),\r
97 align;\r
98 if ( img ) {\r
99 align = getImageAlignment( img );\r
100 if ( align == value ) {\r
101 img.removeStyle( 'float' );\r
102\r
103 // Remove "align" attribute when necessary.\r
104 if ( value == getImageAlignment( img ) )\r
105 img.removeAttribute( 'align' );\r
106 } else {\r
107 img.setStyle( 'float', value );\r
108 }\r
109\r
110 evt.cancel();\r
111 }\r
112 } );\r
113 }\r
114\r
115 command.on( 'refresh', function( evt ) {\r
116 var img = getSelectedImage( editor ),\r
117 align;\r
118 if ( img ) {\r
119 align = getImageAlignment( img );\r
120\r
121 this.setState(\r
122 ( align == value ) ? CKEDITOR.TRISTATE_ON : ( value == 'right' || value == 'left' ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );\r
123\r
124 evt.cancel();\r
125 }\r
126 } );\r
127 }\r
128 }\r
129 }\r
130 } );\r
131\r
132 function getSelectedImage( editor, element ) {\r
133 if ( !element ) {\r
134 var sel = editor.getSelection();\r
135 element = sel.getSelectedElement();\r
136 }\r
137\r
138 if ( element && element.is( 'img' ) && !element.data( 'cke-realelement' ) && !element.isReadOnly() )\r
139 return element;\r
140 }\r
141\r
142 function getImageAlignment( element ) {\r
143 var align = element.getStyle( 'float' );\r
144\r
145 if ( align == 'inherit' || align == 'none' )\r
146 align = 0;\r
147\r
148 if ( !align )\r
149 align = element.getAttribute( 'align' );\r
150\r
151 return align;\r
152 }\r
153\r
154} )();\r
155\r
156/**\r
157 * Determines whether dimension inputs should be automatically filled when the image URL changes in the Image plugin dialog window.\r
158 *\r
159 * config.image_prefillDimensions = false;\r
160 *\r
161 * @since 4.5\r
162 * @cfg {Boolean} [image_prefillDimensions=true]\r
163 * @member CKEDITOR.config\r
164 */\r
165\r
166/**\r
167 * Whether to remove links when emptying the link URL field in the Image dialog window.\r
168 *\r
169 * config.image_removeLinkByEmptyURL = false;\r
170 *\r
171 * @cfg {Boolean} [image_removeLinkByEmptyURL=true]\r
172 * @member CKEDITOR.config\r
173 */\r
174CKEDITOR.config.image_removeLinkByEmptyURL = true;\r
175\r
176/**\r
177 * Padding text to set off the image in the preview area.\r
178 *\r
179 * config.image_previewText = CKEDITOR.tools.repeat( '___ ', 100 );\r
180 *\r
181 * @cfg {String} [image_previewText='Lorem ipsum dolor...' (placeholder text)]\r
182 * @member CKEDITOR.config\r
183 */\r