]> git.immae.eu Git - perso/Immae/Projets/packagist/connexionswing-ckeditor-component.git/blame - sources/plugins/flash/plugin.js
Initial commit
[perso/Immae/Projets/packagist/connexionswing-ckeditor-component.git] / sources / plugins / flash / plugin.js
CommitLineData
7adcb81e
IB
1/**\r
2 * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.\r
3 * For licensing, see LICENSE.md or http://ckeditor.com/license\r
4 */\r
5\r
6( function() {\r
7 var flashFilenameRegex = /\.swf(?:$|\?)/i;\r
8\r
9 function isFlashEmbed( element ) {\r
10 var attributes = element.attributes;\r
11\r
12 return ( attributes.type == 'application/x-shockwave-flash' || flashFilenameRegex.test( attributes.src || '' ) );\r
13 }\r
14\r
15 function createFakeElement( editor, realElement ) {\r
16 return editor.createFakeParserElement( realElement, 'cke_flash', 'flash', true );\r
17 }\r
18\r
19 CKEDITOR.plugins.add( 'flash', {\r
20 requires: 'dialog,fakeobjects',\r
21 // jscs:disable maximumLineLength\r
22 lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,el,en,en-au,en-ca,en-gb,eo,es,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,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
23 // jscs:enable maximumLineLength\r
24 icons: 'flash', // %REMOVE_LINE_CORE%\r
25 hidpi: true, // %REMOVE_LINE_CORE%\r
26 onLoad: function() {\r
27 CKEDITOR.addCss( 'img.cke_flash' +\r
28 '{' +\r
29 'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/placeholder.png' ) + ');' +\r
30 'background-position: center center;' +\r
31 'background-repeat: no-repeat;' +\r
32 'border: 1px solid #a9a9a9;' +\r
33 'width: 80px;' +\r
34 'height: 80px;' +\r
35 '}'\r
36 );\r
37\r
38 },\r
39 init: function( editor ) {\r
40 var allowed = 'object[classid,codebase,height,hspace,vspace,width];' +\r
41 'param[name,value];' +\r
42 'embed[height,hspace,pluginspage,src,type,vspace,width]';\r
43\r
44 if ( CKEDITOR.dialog.isTabEnabled( editor, 'flash', 'properties' ) )\r
45 allowed += ';object[align]; embed[allowscriptaccess,quality,scale,wmode]';\r
46 if ( CKEDITOR.dialog.isTabEnabled( editor, 'flash', 'advanced' ) )\r
47 allowed += ';object[id]{*}; embed[bgcolor]{*}(*)';\r
48\r
49 editor.addCommand( 'flash', new CKEDITOR.dialogCommand( 'flash', {\r
50 allowedContent: allowed,\r
51 requiredContent: 'embed'\r
52 } ) );\r
53 editor.ui.addButton && editor.ui.addButton( 'Flash', {\r
54 label: editor.lang.common.flash,\r
55 command: 'flash',\r
56 toolbar: 'insert,20'\r
57 } );\r
58 CKEDITOR.dialog.add( 'flash', this.path + 'dialogs/flash.js' );\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 flash: {\r
64 label: editor.lang.flash.properties,\r
65 command: 'flash',\r
66 group: 'flash'\r
67 }\r
68 } );\r
69 }\r
70\r
71 editor.on( 'doubleclick', function( evt ) {\r
72 var element = evt.data.element;\r
73\r
74 if ( element.is( 'img' ) && element.data( 'cke-real-element-type' ) == 'flash' )\r
75 evt.data.dialog = 'flash';\r
76 } );\r
77\r
78 // If the "contextmenu" plugin is loaded, register the listeners.\r
79 if ( editor.contextMenu ) {\r
80 editor.contextMenu.addListener( function( element ) {\r
81 if ( element && element.is( 'img' ) && !element.isReadOnly() && element.data( 'cke-real-element-type' ) == 'flash' )\r
82 return { flash: CKEDITOR.TRISTATE_OFF };\r
83 } );\r
84 }\r
85 },\r
86\r
87 afterInit: function( editor ) {\r
88 var dataProcessor = editor.dataProcessor,\r
89 dataFilter = dataProcessor && dataProcessor.dataFilter;\r
90\r
91 if ( dataFilter ) {\r
92 dataFilter.addRules( {\r
93 elements: {\r
94 'cke:object': function( element ) {\r
95 var attributes = element.attributes,\r
96 classId = attributes.classid && String( attributes.classid ).toLowerCase();\r
97\r
98 if ( !classId && !isFlashEmbed( element ) ) {\r
99 // Look for the inner <embed>\r
100 for ( var i = 0; i < element.children.length; i++ ) {\r
101 if ( element.children[ i ].name == 'cke:embed' ) {\r
102 if ( !isFlashEmbed( element.children[ i ] ) )\r
103 return null;\r
104\r
105 return createFakeElement( editor, element );\r
106 }\r
107 }\r
108 return null;\r
109 }\r
110\r
111 return createFakeElement( editor, element );\r
112 },\r
113\r
114 'cke:embed': function( element ) {\r
115 if ( !isFlashEmbed( element ) )\r
116 return null;\r
117\r
118 return createFakeElement( editor, element );\r
119 }\r
120 }\r
121 }, 5 );\r
122 }\r
123 }\r
124 } );\r
125} )();\r
126\r
127CKEDITOR.tools.extend( CKEDITOR.config, {\r
128 /**\r
129 * Save as `<embed>` tag only. This tag is unrecommended.\r
130 *\r
131 * @cfg {Boolean} [flashEmbedTagOnly=false]\r
132 * @member CKEDITOR.config\r
133 */\r
134 flashEmbedTagOnly: false,\r
135\r
136 /**\r
137 * Add `<embed>` tag as alternative: `<object><embed></embed></object>`.\r
138 *\r
139 * @cfg {Boolean} [flashAddEmbedTag=false]\r
140 * @member CKEDITOR.config\r
141 */\r
142 flashAddEmbedTag: true,\r
143\r
144 /**\r
145 * Use {@link #flashEmbedTagOnly} and {@link #flashAddEmbedTag} values on edit.\r
146 *\r
147 * @cfg {Boolean} [flashConvertOnEdit=false]\r
148 * @member CKEDITOR.config\r
149 */\r
150 flashConvertOnEdit: false\r
151} );\r