diff options
Diffstat (limited to '_source/plugins/flash/plugin.js')
| -rw-r--r-- | _source/plugins/flash/plugin.js | 338 |
1 files changed, 173 insertions, 165 deletions
diff --git a/_source/plugins/flash/plugin.js b/_source/plugins/flash/plugin.js index 41814e3..f6d9c99 100644 --- a/_source/plugins/flash/plugin.js +++ b/_source/plugins/flash/plugin.js @@ -1,165 +1,173 @@ -/*
-Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.
-For licensing, see LICENSE.html or http://ckeditor.com/license
-*/
-
-(function()
-{
- var flashFilenameRegex = /\.swf(?:$|\?)/i,
- numberRegex = /^\d+(?:\.\d+)?$/;
-
- function cssifyLength( length )
- {
- if ( numberRegex.test( length ) )
- return length + 'px';
- return length;
- }
-
- function isFlashEmbed( element )
- {
- var attributes = element.attributes;
-
- return ( attributes.type == 'application/x-shockwave-flash' || flashFilenameRegex.test( attributes.src || '' ) );
- }
-
- function createFakeElement( editor, realElement )
- {
- var fakeElement = editor.createFakeParserElement( realElement, 'cke_flash', 'flash', true ),
- fakeStyle = fakeElement.attributes.style || '';
-
- var width = realElement.attributes.width,
- height = realElement.attributes.height;
-
- if ( typeof width != 'undefined' )
- fakeStyle = fakeElement.attributes.style = fakeStyle + 'width:' + cssifyLength( width ) + ';';
-
- if ( typeof height != 'undefined' )
- fakeStyle = fakeElement.attributes.style = fakeStyle + 'height:' + cssifyLength( height ) + ';';
-
- return fakeElement;
- }
-
- CKEDITOR.plugins.add( 'flash',
- {
- init : function( editor )
- {
- editor.addCommand( 'flash', new CKEDITOR.dialogCommand( 'flash' ) );
- editor.ui.addButton( 'Flash',
- {
- label : editor.lang.common.flash,
- command : 'flash'
- });
- CKEDITOR.dialog.add( 'flash', this.path + 'dialogs/flash.js' );
-
- editor.addCss(
- 'img.cke_flash' +
- '{' +
- 'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/placeholder.png' ) + ');' +
- 'background-position: center center;' +
- 'background-repeat: no-repeat;' +
- 'border: 1px solid #a9a9a9;' +
- 'width: 80px;' +
- 'height: 80px;' +
- '}'
- );
-
- // If the "menu" plugin is loaded, register the menu items.
- if ( editor.addMenuItems )
- {
- editor.addMenuItems(
- {
- flash :
- {
- label : editor.lang.flash.properties,
- command : 'flash',
- group : 'flash'
- }
- });
- }
-
- // If the "contextmenu" plugin is loaded, register the listeners.
- if ( editor.contextMenu )
- {
- editor.contextMenu.addListener( function( element, selection )
- {
- if ( element && element.is( 'img' ) && element.getAttribute( '_cke_real_element_type' ) == 'flash' )
- return { flash : CKEDITOR.TRISTATE_OFF };
- });
- }
- },
-
- afterInit : function( editor )
- {
- var dataProcessor = editor.dataProcessor,
- dataFilter = dataProcessor && dataProcessor.dataFilter;
-
- if ( dataFilter )
- {
- dataFilter.addRules(
- {
- elements :
- {
- 'cke:object' : function( element )
- {
- var attributes = element.attributes,
- classId = attributes.classid && String( attributes.classid ).toLowerCase();
-
- if ( !classId )
- {
- // Look for the inner <embed>
- for ( var i = 0 ; i < element.children.length ; i++ )
- {
- if ( element.children[ i ].name == 'cke:embed' )
- {
- if ( !isFlashEmbed( element.children[ i ] ) )
- return null;
-
- return createFakeElement( editor, element );
- }
- }
- return null;
- }
-
- return createFakeElement( editor, element );
- },
-
- 'cke:embed' : function( element )
- {
- if ( !isFlashEmbed( element ) )
- return null;
-
- return createFakeElement( editor, element );
- }
- }
- },
- 5);
- }
- },
-
- requires : [ 'fakeobjects' ]
- });
-})();
-
-CKEDITOR.tools.extend( CKEDITOR.config,
-{
- /**
- * Save as EMBED tag only. This tag is unrecommended.
- * @type Boolean
- * @default false
- */
- flashEmbedTagOnly : false,
-
- /**
- * Add EMBED tag as alternative: <object><embed></embed></object>
- * @type Boolean
- * @default false
- */
- flashAddEmbedTag : true,
-
- /**
- * Use embedTagOnly and addEmbedTag values on edit.
- * @type Boolean
- * @default false
- */
- flashConvertOnEdit : false
-} );
+/* +Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ + +(function() +{ + var flashFilenameRegex = /\.swf(?:$|\?)/i, + numberRegex = /^\d+(?:\.\d+)?$/; + + function cssifyLength( length ) + { + if ( numberRegex.test( length ) ) + return length + 'px'; + return length; + } + + function isFlashEmbed( element ) + { + var attributes = element.attributes; + + return ( attributes.type == 'application/x-shockwave-flash' || flashFilenameRegex.test( attributes.src || '' ) ); + } + + function createFakeElement( editor, realElement ) + { + var fakeElement = editor.createFakeParserElement( realElement, 'cke_flash', 'flash', true ), + fakeStyle = fakeElement.attributes.style || ''; + + var width = realElement.attributes.width, + height = realElement.attributes.height; + + if ( typeof width != 'undefined' ) + fakeStyle = fakeElement.attributes.style = fakeStyle + 'width:' + cssifyLength( width ) + ';'; + + if ( typeof height != 'undefined' ) + fakeStyle = fakeElement.attributes.style = fakeStyle + 'height:' + cssifyLength( height ) + ';'; + + return fakeElement; + } + + CKEDITOR.plugins.add( 'flash', + { + init : function( editor ) + { + editor.addCommand( 'flash', new CKEDITOR.dialogCommand( 'flash' ) ); + editor.ui.addButton( 'Flash', + { + label : editor.lang.common.flash, + command : 'flash' + }); + CKEDITOR.dialog.add( 'flash', this.path + 'dialogs/flash.js' ); + + editor.addCss( + 'img.cke_flash' + + '{' + + 'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/placeholder.png' ) + ');' + + 'background-position: center center;' + + 'background-repeat: no-repeat;' + + 'border: 1px solid #a9a9a9;' + + 'width: 80px;' + + 'height: 80px;' + + '}' + ); + + // If the "menu" plugin is loaded, register the menu items. + if ( editor.addMenuItems ) + { + editor.addMenuItems( + { + flash : + { + label : editor.lang.flash.properties, + command : 'flash', + group : 'flash' + } + }); + } + + editor.on( 'doubleclick', function( evt ) + { + var element = evt.data.element; + + if ( element.is( 'img' ) && element.getAttribute( '_cke_real_element_type' ) == 'flash' ) + evt.data.dialog = 'flash'; + }); + + // If the "contextmenu" plugin is loaded, register the listeners. + if ( editor.contextMenu ) + { + editor.contextMenu.addListener( function( element, selection ) + { + if ( element && element.is( 'img' ) && element.getAttribute( '_cke_real_element_type' ) == 'flash' ) + return { flash : CKEDITOR.TRISTATE_OFF }; + }); + } + }, + + afterInit : function( editor ) + { + var dataProcessor = editor.dataProcessor, + dataFilter = dataProcessor && dataProcessor.dataFilter; + + if ( dataFilter ) + { + dataFilter.addRules( + { + elements : + { + 'cke:object' : function( element ) + { + var attributes = element.attributes, + classId = attributes.classid && String( attributes.classid ).toLowerCase(); + + if ( !classId ) + { + // Look for the inner <embed> + for ( var i = 0 ; i < element.children.length ; i++ ) + { + if ( element.children[ i ].name == 'cke:embed' ) + { + if ( !isFlashEmbed( element.children[ i ] ) ) + return null; + + return createFakeElement( editor, element ); + } + } + return null; + } + + return createFakeElement( editor, element ); + }, + + 'cke:embed' : function( element ) + { + if ( !isFlashEmbed( element ) ) + return null; + + return createFakeElement( editor, element ); + } + } + }, + 5); + } + }, + + requires : [ 'fakeobjects' ] + }); +})(); + +CKEDITOR.tools.extend( CKEDITOR.config, +{ + /** + * Save as EMBED tag only. This tag is unrecommended. + * @type Boolean + * @default false + */ + flashEmbedTagOnly : false, + + /** + * Add EMBED tag as alternative: <object><embed></embed></object> + * @type Boolean + * @default false + */ + flashAddEmbedTag : true, + + /** + * Use embedTagOnly and addEmbedTag values on edit. + * @type Boolean + * @default false + */ + flashConvertOnEdit : false +} ); |
