JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.5
[ckeditor.git] / _source / plugins / iframe / plugin.js
diff --git a/_source/plugins/iframe/plugin.js b/_source/plugins/iframe/plugin.js
new file mode 100644 (file)
index 0000000..f4742b9
--- /dev/null
@@ -0,0 +1,106 @@
+/*\r
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.\r
+For licensing, see LICENSE.html or http://ckeditor.com/license\r
+*/\r
+\r
+(function()\r
+{\r
+       function createFakeElement( editor, realElement )\r
+       {\r
+               var fakeElement = editor.createFakeParserElement( realElement, 'cke_iframe', 'iframe', true ),\r
+                       fakeStyle = fakeElement.attributes.style || '';\r
+\r
+               var width = realElement.attributes.width,\r
+                       height = realElement.attributes.height;\r
+\r
+               if ( typeof width != 'undefined' )\r
+                       fakeStyle += 'width:' + CKEDITOR.tools.cssLength( width ) + ';';\r
+\r
+               if ( typeof height != 'undefined' )\r
+                       fakeStyle += 'height:' + CKEDITOR.tools.cssLength( height ) + ';';\r
+\r
+               fakeElement.attributes.style = fakeStyle;\r
+\r
+               return fakeElement;\r
+       }\r
+\r
+       CKEDITOR.plugins.add( 'iframe',\r
+       {\r
+               requires : [ 'dialog', 'fakeobjects' ],\r
+               init : function( editor )\r
+               {\r
+                       var pluginName = 'iframe',\r
+                               lang = editor.lang.iframe;\r
+\r
+                       CKEDITOR.dialog.add( pluginName, this.path + 'dialogs/iframe.js' );\r
+                       editor.addCommand( pluginName, new CKEDITOR.dialogCommand( pluginName ) );\r
+\r
+                       editor.addCss(\r
+                               'img.cke_iframe' +\r
+                               '{' +\r
+                                       'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/placeholder.png' ) + ');' +\r
+                                       'background-position: center center;' +\r
+                                       'background-repeat: no-repeat;' +\r
+                                       'border: 1px solid #a9a9a9;' +\r
+                                       'width: 80px;' +\r
+                                       'height: 80px;' +\r
+                               '}'\r
+                       );\r
+\r
+                       editor.ui.addButton( 'Iframe',\r
+                               {\r
+                                       label : lang.toolbar,\r
+                                       command : pluginName\r
+                               });\r
+\r
+                       editor.on( 'doubleclick', function( evt )\r
+                               {\r
+                                       var element = evt.data.element;\r
+                                       if ( element.is( 'img' ) && element.data( 'cke-real-element-type' ) == 'iframe' )\r
+                                               evt.data.dialog = 'iframe';\r
+                               });\r
+\r
+                       if ( editor.addMenuItems )\r
+                       {\r
+                               editor.addMenuItems(\r
+                               {\r
+                                       iframe :\r
+                                       {\r
+                                               label : lang.title,\r
+                                               command : 'iframe',\r
+                                               group : 'image'\r
+                                       }\r
+                               });\r
+                       }\r
+\r
+                       // If the "contextmenu" plugin is loaded, register the listeners.\r
+                       if ( editor.contextMenu )\r
+                       {\r
+                               editor.contextMenu.addListener( function( element, selection )\r
+                                       {\r
+                                               if ( element && element.is( 'img' ) && element.data( 'cke-real-element-type' ) == 'iframe' )\r
+                                                       return { iframe : CKEDITOR.TRISTATE_OFF };\r
+                                       });\r
+                       }\r
+               },\r
+               afterInit : function( editor )\r
+               {\r
+                       var dataProcessor = editor.dataProcessor,\r
+                               dataFilter = dataProcessor && dataProcessor.dataFilter;\r
+\r
+                       if ( dataFilter )\r
+                       {\r
+                               dataFilter.addRules(\r
+                               {\r
+                                       elements :\r
+                                       {\r
+                                               iframe : function( element )\r
+                                               {\r
+                                                       return createFakeElement( editor, element );\r
+                                               }\r
+                                       }\r
+                               });\r
+                       }\r
+               }\r
+       });\r
+})();\r