]> git.immae.eu Git - perso/Immae/Projets/packagist/connexionswing-ckeditor-component.git/blame - sources/plugins/flash/dialogs/flash.js
Upgrade to 4.5.7 and add some plugin
[perso/Immae/Projets/packagist/connexionswing-ckeditor-component.git] / sources / plugins / flash / dialogs / flash.js
CommitLineData
7adcb81e 1/**\r
3b35bd27 2 * @license Copyright (c) 2003-2016, CKSource - Frederico Knabben. All rights reserved.\r
7adcb81e
IB
3 * For licensing, see LICENSE.md or http://ckeditor.com/license\r
4 */\r
5\r
6( function() {\r
7 // It is possible to set things in three different places.\r
8 // 1. As attributes in the object tag.\r
9 // 2. As param tags under the object tag.\r
10 // 3. As attributes in the embed tag.\r
11 // It is possible for a single attribute to be present in more than one place.\r
12 // So let's define a mapping between a sementic attribute and its syntactic\r
13 // equivalents.\r
14 // Then we'll set and retrieve attribute values according to the mapping,\r
15 // instead of having to check and set each syntactic attribute every time.\r
16 //\r
17 // Reference: http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_12701\r
18 var ATTRTYPE_OBJECT = 1,\r
19 ATTRTYPE_PARAM = 2,\r
20 ATTRTYPE_EMBED = 4;\r
21\r
22 var attributesMap = {\r
23 id: [ {\r
24 type: ATTRTYPE_OBJECT, name: 'id'\r
25 } ],\r
26 classid: [ {\r
27 type: ATTRTYPE_OBJECT, name: 'classid'\r
28 } ],\r
29 codebase: [ {\r
30 type: ATTRTYPE_OBJECT, name: 'codebase'\r
31 } ],\r
32 pluginspage: [ {\r
33 type: ATTRTYPE_EMBED, name: 'pluginspage'\r
34 } ],\r
35 src: [ {\r
36 type: ATTRTYPE_PARAM, name: 'movie'\r
37 }, {\r
38 type: ATTRTYPE_EMBED, name: 'src'\r
39 }, {\r
40 type: ATTRTYPE_OBJECT, name: 'data'\r
41 } ],\r
42 name: [ {\r
43 type: ATTRTYPE_EMBED, name: 'name'\r
44 } ],\r
45 align: [ {\r
46 type: ATTRTYPE_OBJECT, name: 'align'\r
47 } ],\r
48 'class': [ {\r
49 type: ATTRTYPE_OBJECT, name: 'class'\r
50 }, {\r
51 type: ATTRTYPE_EMBED, name: 'class'\r
52 } ],\r
53 width: [ {\r
54 type: ATTRTYPE_OBJECT, name: 'width'\r
55 }, {\r
56 type: ATTRTYPE_EMBED, name: 'width'\r
57 } ],\r
58 height: [ {\r
59 type: ATTRTYPE_OBJECT, name: 'height'\r
60 }, {\r
61 type: ATTRTYPE_EMBED, name: 'height'\r
62 } ],\r
63 hSpace: [ {\r
64 type: ATTRTYPE_OBJECT, name: 'hSpace'\r
65 }, {\r
66 type: ATTRTYPE_EMBED, name: 'hSpace'\r
67 } ],\r
68 vSpace: [ {\r
69 type: ATTRTYPE_OBJECT, name: 'vSpace'\r
70 }, {\r
71 type: ATTRTYPE_EMBED, name: 'vSpace'\r
72 } ],\r
73 style: [ {\r
74 type: ATTRTYPE_OBJECT, name: 'style'\r
75 }, {\r
76 type: ATTRTYPE_EMBED, name: 'style'\r
77 } ],\r
78 type: [ {\r
79 type: ATTRTYPE_EMBED, name: 'type'\r
80 } ]\r
81 };\r
82\r
83 var names = [ 'play', 'loop', 'menu', 'quality', 'scale', 'salign', 'wmode', 'bgcolor', 'base', 'flashvars', 'allowScriptAccess', 'allowFullScreen' ];\r
84 for ( var i = 0; i < names.length; i++ ) {\r
85 attributesMap[ names[ i ] ] = [ {\r
86 type: ATTRTYPE_EMBED, name: names[ i ]\r
87 }, {\r
88 type: ATTRTYPE_PARAM, name: names[ i ]\r
89 } ];\r
90 }\r
91\r
92 // These attributes are "true" by default and not present in editor data (when "true").\r
93 // Note that, though default value of "allowFullScreen" is "true", it is not listed here.\r
94 // "allowFullScreen" is present in editor data regardless of the value (#7634).\r
95 names = [ 'play', 'loop', 'menu' ];\r
96 for ( i = 0; i < names.length; i++ )\r
97 attributesMap[ names[ i ] ][ 0 ][ 'default' ] = attributesMap[ names[ i ] ][ 1 ][ 'default' ] = true;\r
98\r
99 function loadValue( objectNode, embedNode, paramMap ) {\r
100 var attributes = attributesMap[ this.id ];\r
101 if ( !attributes )\r
102 return;\r
103\r
104 var isCheckbox = ( this instanceof CKEDITOR.ui.dialog.checkbox );\r
105 for ( var i = 0; i < attributes.length; i++ ) {\r
106 var attrDef = attributes[ i ];\r
107 switch ( attrDef.type ) {\r
108 case ATTRTYPE_OBJECT:\r
109 if ( !objectNode )\r
110 continue;\r
111 if ( objectNode.getAttribute( attrDef.name ) !== null ) {\r
112 var value = objectNode.getAttribute( attrDef.name );\r
113 if ( isCheckbox ) {\r
114 this.setValue( value.toLowerCase() == 'true' );\r
115 } else {\r
116 this.setValue( value );\r
117 }\r
118 return;\r
119 } else if ( isCheckbox ) {\r
120 this.setValue( !!attrDef['default'] );\r
121 }\r
122 break;\r
123 case ATTRTYPE_PARAM:\r
124 if ( !objectNode ) {\r
125 continue;\r
126 }\r
127 if ( attrDef.name in paramMap ) {\r
128 value = paramMap[ attrDef.name ];\r
129 if ( isCheckbox )\r
130 this.setValue( value.toLowerCase() == 'true' );\r
131 else\r
132 this.setValue( value );\r
133 return;\r
134 } else if ( isCheckbox ) {\r
135 this.setValue( !!attrDef[ 'default' ] );\r
136 }\r
137 break;\r
138 case ATTRTYPE_EMBED:\r
139 if ( !embedNode )\r
140 continue;\r
141 if ( embedNode.getAttribute( attrDef.name ) ) {\r
142 value = embedNode.getAttribute( attrDef.name );\r
143 if ( isCheckbox )\r
144 this.setValue( value.toLowerCase() == 'true' );\r
145 else\r
146 this.setValue( value );\r
147 return;\r
148 } else if ( isCheckbox ) {\r
149 this.setValue( !!attrDef[ 'default' ] );\r
150 }\r
151 }\r
152 }\r
153 }\r
154\r
155 function commitValue( objectNode, embedNode, paramMap ) {\r
156 var attributes = attributesMap[ this.id ];\r
157 if ( !attributes )\r
158 return;\r
159\r
160 var isRemove = ( this.getValue() === '' ),\r
161 isCheckbox = ( this instanceof CKEDITOR.ui.dialog.checkbox );\r
162\r
163 for ( var i = 0; i < attributes.length; i++ ) {\r
164 var attrDef = attributes[ i ];\r
165 switch ( attrDef.type ) {\r
166 case ATTRTYPE_OBJECT:\r
167 // Avoid applying the data attribute when not needed (#7733)\r
168 if ( !objectNode || ( attrDef.name == 'data' && embedNode && !objectNode.hasAttribute( 'data' ) ) )\r
169 continue;\r
170 var value = this.getValue();\r
171 if ( isRemove || isCheckbox && value === attrDef[ 'default' ] )\r
172 objectNode.removeAttribute( attrDef.name );\r
173 else\r
174 objectNode.setAttribute( attrDef.name, value );\r
175 break;\r
176 case ATTRTYPE_PARAM:\r
177 if ( !objectNode )\r
178 continue;\r
179 value = this.getValue();\r
180 if ( isRemove || isCheckbox && value === attrDef[ 'default' ] ) {\r
181 if ( attrDef.name in paramMap )\r
182 paramMap[ attrDef.name ].remove();\r
183 } else {\r
184 if ( attrDef.name in paramMap )\r
185 paramMap[ attrDef.name ].setAttribute( 'value', value );\r
186 else {\r
187 var param = CKEDITOR.dom.element.createFromHtml( '<cke:param></cke:param>', objectNode.getDocument() );\r
188 param.setAttributes( { name: attrDef.name, value: value } );\r
189 if ( objectNode.getChildCount() < 1 )\r
190 param.appendTo( objectNode );\r
191 else\r
192 param.insertBefore( objectNode.getFirst() );\r
193 }\r
194 }\r
195 break;\r
196 case ATTRTYPE_EMBED:\r
197 if ( !embedNode )\r
198 continue;\r
199 value = this.getValue();\r
200 if ( isRemove || isCheckbox && value === attrDef[ 'default' ] )\r
201 embedNode.removeAttribute( attrDef.name );\r
202 else {\r
203 embedNode.setAttribute( attrDef.name, value );\r
204 }\r
205 }\r
206 }\r
207 }\r
208\r
209 CKEDITOR.dialog.add( 'flash', function( editor ) {\r
210 var makeObjectTag = !editor.config.flashEmbedTagOnly,\r
211 makeEmbedTag = editor.config.flashAddEmbedTag || editor.config.flashEmbedTagOnly;\r
212\r
213 var previewPreloader,\r
214 previewAreaHtml = '<div>' + CKEDITOR.tools.htmlEncode( editor.lang.common.preview ) + '<br>' +\r
215 '<div id="cke_FlashPreviewLoader' + CKEDITOR.tools.getNextNumber() + '" style="display:none"><div class="loading">&nbsp;</div></div>' +\r
216 '<div id="cke_FlashPreviewBox' + CKEDITOR.tools.getNextNumber() + '" class="FlashPreviewBox"></div></div>';\r
217\r
218 return {\r
219 title: editor.lang.flash.title,\r
220 minWidth: 420,\r
221 minHeight: 310,\r
222 onShow: function() {\r
223 // Clear previously saved elements.\r
224 this.fakeImage = this.objectNode = this.embedNode = null;\r
225 previewPreloader = new CKEDITOR.dom.element( 'embed', editor.document );\r
226\r
227 // Try to detect any embed or object tag that has Flash parameters.\r
228 var fakeImage = this.getSelectedElement();\r
229 if ( fakeImage && fakeImage.data( 'cke-real-element-type' ) && fakeImage.data( 'cke-real-element-type' ) == 'flash' ) {\r
230 this.fakeImage = fakeImage;\r
231\r
232 var realElement = editor.restoreRealElement( fakeImage ),\r
233 objectNode = null,\r
234 embedNode = null,\r
235 paramMap = {};\r
236 if ( realElement.getName() == 'cke:object' ) {\r
237 objectNode = realElement;\r
238 var embedList = objectNode.getElementsByTag( 'embed', 'cke' );\r
239 if ( embedList.count() > 0 )\r
240 embedNode = embedList.getItem( 0 );\r
241 var paramList = objectNode.getElementsByTag( 'param', 'cke' );\r
242 for ( var i = 0, length = paramList.count(); i < length; i++ ) {\r
243 var item = paramList.getItem( i ),\r
244 name = item.getAttribute( 'name' ),\r
245 value = item.getAttribute( 'value' );\r
246 paramMap[ name ] = value;\r
247 }\r
248 } else if ( realElement.getName() == 'cke:embed' ) {\r
249 embedNode = realElement;\r
250 }\r
251\r
252 this.objectNode = objectNode;\r
253 this.embedNode = embedNode;\r
254\r
255 this.setupContent( objectNode, embedNode, paramMap, fakeImage );\r
256 }\r
257 },\r
258 onOk: function() {\r
259 // If there's no selected object or embed, create one. Otherwise, reuse the\r
260 // selected object and embed nodes.\r
261 var objectNode = null,\r
262 embedNode = null,\r
263 paramMap = null;\r
264 if ( !this.fakeImage ) {\r
265 if ( makeObjectTag ) {\r
266 objectNode = CKEDITOR.dom.element.createFromHtml( '<cke:object></cke:object>', editor.document );\r
267 var attributes = {\r
268 classid: 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000',\r
269 codebase: 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'\r
270 };\r
271 objectNode.setAttributes( attributes );\r
272 }\r
273 if ( makeEmbedTag ) {\r
274 embedNode = CKEDITOR.dom.element.createFromHtml( '<cke:embed></cke:embed>', editor.document );\r
275 embedNode.setAttributes( {\r
276 type: 'application/x-shockwave-flash',\r
277 pluginspage: 'http://www.macromedia.com/go/getflashplayer'\r
278 } );\r
279 if ( objectNode )\r
280 embedNode.appendTo( objectNode );\r
281 }\r
282 } else {\r
283 objectNode = this.objectNode;\r
284 embedNode = this.embedNode;\r
285 }\r
286\r
287 // Produce the paramMap if there's an object tag.\r
288 if ( objectNode ) {\r
289 paramMap = {};\r
290 var paramList = objectNode.getElementsByTag( 'param', 'cke' );\r
291 for ( var i = 0, length = paramList.count(); i < length; i++ )\r
292 paramMap[ paramList.getItem( i ).getAttribute( 'name' ) ] = paramList.getItem( i );\r
293 }\r
294\r
295 // A subset of the specified attributes/styles\r
296 // should also be applied on the fake element to\r
297 // have better visual effect. (#5240)\r
298 var extraStyles = {},\r
299 extraAttributes = {};\r
300 this.commitContent( objectNode, embedNode, paramMap, extraStyles, extraAttributes );\r
301\r
302 // Refresh the fake image.\r
303 var newFakeImage = editor.createFakeElement( objectNode || embedNode, 'cke_flash', 'flash', true );\r
304 newFakeImage.setAttributes( extraAttributes );\r
305 newFakeImage.setStyles( extraStyles );\r
306 if ( this.fakeImage ) {\r
307 newFakeImage.replace( this.fakeImage );\r
308 editor.getSelection().selectElement( newFakeImage );\r
309 } else {\r
310 editor.insertElement( newFakeImage );\r
311 }\r
312 },\r
313\r
314 onHide: function() {\r
315 if ( this.preview )\r
316 this.preview.setHtml( '' );\r
317 },\r
318\r
319 contents: [ {\r
320 id: 'info',\r
321 label: editor.lang.common.generalTab,\r
322 accessKey: 'I',\r
323 elements: [ {\r
324 type: 'vbox',\r
325 padding: 0,\r
326 children: [ {\r
327 type: 'hbox',\r
328 widths: [ '280px', '110px' ],\r
329 align: 'right',\r
330 children: [ {\r
331 id: 'src',\r
332 type: 'text',\r
333 label: editor.lang.common.url,\r
334 required: true,\r
335 validate: CKEDITOR.dialog.validate.notEmpty( editor.lang.flash.validateSrc ),\r
336 setup: loadValue,\r
337 commit: commitValue,\r
338 onLoad: function() {\r
339 var dialog = this.getDialog(),\r
340 updatePreview = function( src ) {\r
341 // Query the preloader to figure out the url impacted by based href.\r
342 previewPreloader.setAttribute( 'src', src );\r
343 dialog.preview.setHtml( '<embed height="100%" width="100%" src="' + CKEDITOR.tools.htmlEncode( previewPreloader.getAttribute( 'src' ) ) +\r
344 '" type="application/x-shockwave-flash"></embed>' );\r
345 };\r
346 // Preview element\r
347 dialog.preview = dialog.getContentElement( 'info', 'preview' ).getElement().getChild( 3 );\r
348\r
349 // Sync on inital value loaded.\r
350 this.on( 'change', function( evt ) {\r
351\r
352 if ( evt.data && evt.data.value )\r
353 updatePreview( evt.data.value );\r
354 } );\r
355 // Sync when input value changed.\r
356 this.getInputElement().on( 'change', function() {\r
357\r
358 updatePreview( this.getValue() );\r
359 }, this );\r
360 }\r
361 },\r
362 {\r
363 type: 'button',\r
364 id: 'browse',\r
365 filebrowser: 'info:src',\r
366 hidden: true,\r
367 // v-align with the 'src' field.\r
368 // TODO: We need something better than a fixed size here.\r
369 style: 'display:inline-block;margin-top:14px;',\r
370 label: editor.lang.common.browseServer\r
371 } ]\r
372 } ]\r
373 },\r
374 {\r
375 type: 'hbox',\r
376 widths: [ '25%', '25%', '25%', '25%', '25%' ],\r
377 children: [ {\r
378 type: 'text',\r
379 id: 'width',\r
380 requiredContent: 'embed[width]',\r
381 style: 'width:95px',\r
382 label: editor.lang.common.width,\r
383 validate: CKEDITOR.dialog.validate.htmlLength( editor.lang.common.invalidHtmlLength.replace( '%1', editor.lang.common.width ) ),\r
384 setup: loadValue,\r
385 commit: commitValue\r
386 },\r
387 {\r
388 type: 'text',\r
389 id: 'height',\r
390 requiredContent: 'embed[height]',\r
391 style: 'width:95px',\r
392 label: editor.lang.common.height,\r
393 validate: CKEDITOR.dialog.validate.htmlLength( editor.lang.common.invalidHtmlLength.replace( '%1', editor.lang.common.height ) ),\r
394 setup: loadValue,\r
395 commit: commitValue\r
396 },\r
397 {\r
398 type: 'text',\r
399 id: 'hSpace',\r
400 requiredContent: 'embed[hspace]',\r
401 style: 'width:95px',\r
402 label: editor.lang.flash.hSpace,\r
403 validate: CKEDITOR.dialog.validate.integer( editor.lang.flash.validateHSpace ),\r
404 setup: loadValue,\r
405 commit: commitValue\r
406 },\r
407 {\r
408 type: 'text',\r
409 id: 'vSpace',\r
410 requiredContent: 'embed[vspace]',\r
411 style: 'width:95px',\r
412 label: editor.lang.flash.vSpace,\r
413 validate: CKEDITOR.dialog.validate.integer( editor.lang.flash.validateVSpace ),\r
414 setup: loadValue,\r
415 commit: commitValue\r
416 } ]\r
417 },\r
418\r
419 {\r
420 type: 'vbox',\r
421 children: [ {\r
422 type: 'html',\r
423 id: 'preview',\r
424 style: 'width:95%;',\r
425 html: previewAreaHtml\r
426 } ]\r
427 } ]\r
428 },\r
429 {\r
430 id: 'Upload',\r
431 hidden: true,\r
432 filebrowser: 'uploadButton',\r
433 label: editor.lang.common.upload,\r
434 elements: [ {\r
435 type: 'file',\r
436 id: 'upload',\r
437 label: editor.lang.common.upload,\r
438 size: 38\r
439 },\r
440 {\r
441 type: 'fileButton',\r
442 id: 'uploadButton',\r
443 label: editor.lang.common.uploadSubmit,\r
444 filebrowser: 'info:src',\r
445 'for': [ 'Upload', 'upload' ]\r
446 } ]\r
447 },\r
448 {\r
449 id: 'properties',\r
450 label: editor.lang.flash.propertiesTab,\r
451 elements: [ {\r
452 type: 'hbox',\r
453 widths: [ '50%', '50%' ],\r
454 children: [ {\r
455 id: 'scale',\r
456 type: 'select',\r
457 requiredContent: 'embed[scale]',\r
458 label: editor.lang.flash.scale,\r
459 'default': '',\r
460 style: 'width : 100%;',\r
461 items: [\r
462 [ editor.lang.common.notSet, '' ],\r
463 [ editor.lang.flash.scaleAll, 'showall' ],\r
464 [ editor.lang.flash.scaleNoBorder, 'noborder' ],\r
465 [ editor.lang.flash.scaleFit, 'exactfit' ]\r
466 ],\r
467 setup: loadValue,\r
468 commit: commitValue\r
469 },\r
470 {\r
471 id: 'allowScriptAccess',\r
472 type: 'select',\r
473 requiredContent: 'embed[allowscriptaccess]',\r
474 label: editor.lang.flash.access,\r
475 'default': '',\r
476 style: 'width : 100%;',\r
477 items: [\r
478 [ editor.lang.common.notSet, '' ],\r
479 [ editor.lang.flash.accessAlways, 'always' ],\r
480 [ editor.lang.flash.accessSameDomain, 'samedomain' ],\r
481 [ editor.lang.flash.accessNever, 'never' ]\r
482 ],\r
483 setup: loadValue,\r
484 commit: commitValue\r
485 } ]\r
486 },\r
487 {\r
488 type: 'hbox',\r
489 widths: [ '50%', '50%' ],\r
490 children: [ {\r
491 id: 'wmode',\r
492 type: 'select',\r
493 requiredContent: 'embed[wmode]',\r
494 label: editor.lang.flash.windowMode,\r
495 'default': '',\r
496 style: 'width : 100%;',\r
497 items: [\r
498 [ editor.lang.common.notSet, '' ],\r
499 [ editor.lang.flash.windowModeWindow, 'window' ],\r
500 [ editor.lang.flash.windowModeOpaque, 'opaque' ],\r
501 [ editor.lang.flash.windowModeTransparent, 'transparent' ]\r
502 ],\r
503 setup: loadValue,\r
504 commit: commitValue\r
505 },\r
506 {\r
507 id: 'quality',\r
508 type: 'select',\r
509 requiredContent: 'embed[quality]',\r
510 label: editor.lang.flash.quality,\r
511 'default': 'high',\r
512 style: 'width : 100%;',\r
513 items: [\r
514 [ editor.lang.common.notSet, '' ],\r
515 [ editor.lang.flash.qualityBest, 'best' ],\r
516 [ editor.lang.flash.qualityHigh, 'high' ],\r
517 [ editor.lang.flash.qualityAutoHigh, 'autohigh' ],\r
518 [ editor.lang.flash.qualityMedium, 'medium' ],\r
519 [ editor.lang.flash.qualityAutoLow, 'autolow' ],\r
520 [ editor.lang.flash.qualityLow, 'low' ]\r
521 ],\r
522 setup: loadValue,\r
523 commit: commitValue\r
524 } ]\r
525 },\r
526 {\r
527 type: 'hbox',\r
528 widths: [ '50%', '50%' ],\r
529 children: [ {\r
530 id: 'align',\r
531 type: 'select',\r
532 requiredContent: 'object[align]',\r
533 label: editor.lang.common.align,\r
534 'default': '',\r
535 style: 'width : 100%;',\r
536 items: [\r
537 [ editor.lang.common.notSet, '' ],\r
538 [ editor.lang.common.alignLeft, 'left' ],\r
539 [ editor.lang.flash.alignAbsBottom, 'absBottom' ],\r
540 [ editor.lang.flash.alignAbsMiddle, 'absMiddle' ],\r
541 [ editor.lang.flash.alignBaseline, 'baseline' ],\r
542 [ editor.lang.common.alignBottom, 'bottom' ],\r
543 [ editor.lang.common.alignMiddle, 'middle' ],\r
544 [ editor.lang.common.alignRight, 'right' ],\r
545 [ editor.lang.flash.alignTextTop, 'textTop' ],\r
546 [ editor.lang.common.alignTop, 'top' ]\r
547 ],\r
548 setup: loadValue,\r
549 commit: function( objectNode, embedNode, paramMap, extraStyles, extraAttributes ) {\r
550 var value = this.getValue();\r
551 commitValue.apply( this, arguments );\r
552 value && ( extraAttributes.align = value );\r
553 }\r
554 },\r
555 {\r
556 type: 'html',\r
557 html: '<div></div>'\r
558 } ]\r
559 },\r
560 {\r
561 type: 'fieldset',\r
562 label: CKEDITOR.tools.htmlEncode( editor.lang.flash.flashvars ),\r
563 children: [ {\r
564 type: 'vbox',\r
565 padding: 0,\r
566 children: [ {\r
567 type: 'checkbox',\r
568 id: 'menu',\r
569 label: editor.lang.flash.chkMenu,\r
570 'default': true,\r
571 setup: loadValue,\r
572 commit: commitValue\r
573 },\r
574 {\r
575 type: 'checkbox',\r
576 id: 'play',\r
577 label: editor.lang.flash.chkPlay,\r
578 'default': true,\r
579 setup: loadValue,\r
580 commit: commitValue\r
581 },\r
582 {\r
583 type: 'checkbox',\r
584 id: 'loop',\r
585 label: editor.lang.flash.chkLoop,\r
586 'default': true,\r
587 setup: loadValue,\r
588 commit: commitValue\r
589 },\r
590 {\r
591 type: 'checkbox',\r
592 id: 'allowFullScreen',\r
593 label: editor.lang.flash.chkFull,\r
594 'default': true,\r
595 setup: loadValue,\r
596 commit: commitValue\r
597 } ]\r
598 } ]\r
599 } ]\r
600 },\r
601 {\r
602 id: 'advanced',\r
603 label: editor.lang.common.advancedTab,\r
604 elements: [ {\r
605 type: 'hbox',\r
606 children: [ {\r
607 type: 'text',\r
608 id: 'id',\r
609 requiredContent: 'object[id]',\r
610 label: editor.lang.common.id,\r
611 setup: loadValue,\r
612 commit: commitValue\r
613 } ]\r
614 },\r
615 {\r
616 type: 'hbox',\r
617 widths: [ '45%', '55%' ],\r
618 children: [ {\r
619 type: 'text',\r
620 id: 'bgcolor',\r
621 requiredContent: 'embed[bgcolor]',\r
622 label: editor.lang.flash.bgcolor,\r
623 setup: loadValue,\r
624 commit: commitValue\r
625 },\r
626 {\r
627 type: 'text',\r
628 id: 'class',\r
629 requiredContent: 'embed(cke-xyz)', // Random text like 'xyz' will check if all are allowed.\r
630 label: editor.lang.common.cssClass,\r
631 setup: loadValue,\r
632 commit: commitValue\r
633 } ]\r
634 },\r
635 {\r
636 type: 'text',\r
637 id: 'style',\r
638 requiredContent: 'embed{cke-xyz}', // Random text like 'xyz' will check if all are allowed.\r
639 validate: CKEDITOR.dialog.validate.inlineStyle( editor.lang.common.invalidInlineStyle ),\r
640 label: editor.lang.common.cssStyle,\r
641 setup: loadValue,\r
642 commit: commitValue\r
643 } ]\r
644 } ]\r
645 };\r
646 } );\r
647} )();\r