]>
Commit | Line | Data |
---|---|---|
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"> </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 |