JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
vanilla ckeditor-3.5
[ckeditor.git] / _source / plugins / iframe / plugin.js
1 /*\r
2 Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.\r
3 For licensing, see LICENSE.html or http://ckeditor.com/license\r
4 */\r
5 \r
6 (function()\r
7 {\r
8         function createFakeElement( editor, realElement )\r
9         {\r
10                 var fakeElement = editor.createFakeParserElement( realElement, 'cke_iframe', 'iframe', true ),\r
11                         fakeStyle = fakeElement.attributes.style || '';\r
12 \r
13                 var width = realElement.attributes.width,\r
14                         height = realElement.attributes.height;\r
15 \r
16                 if ( typeof width != 'undefined' )\r
17                         fakeStyle += 'width:' + CKEDITOR.tools.cssLength( width ) + ';';\r
18 \r
19                 if ( typeof height != 'undefined' )\r
20                         fakeStyle += 'height:' + CKEDITOR.tools.cssLength( height ) + ';';\r
21 \r
22                 fakeElement.attributes.style = fakeStyle;\r
23 \r
24                 return fakeElement;\r
25         }\r
26 \r
27         CKEDITOR.plugins.add( 'iframe',\r
28         {\r
29                 requires : [ 'dialog', 'fakeobjects' ],\r
30                 init : function( editor )\r
31                 {\r
32                         var pluginName = 'iframe',\r
33                                 lang = editor.lang.iframe;\r
34 \r
35                         CKEDITOR.dialog.add( pluginName, this.path + 'dialogs/iframe.js' );\r
36                         editor.addCommand( pluginName, new CKEDITOR.dialogCommand( pluginName ) );\r
37 \r
38                         editor.addCss(\r
39                                 'img.cke_iframe' +\r
40                                 '{' +\r
41                                         'background-image: url(' + CKEDITOR.getUrl( this.path + 'images/placeholder.png' ) + ');' +\r
42                                         'background-position: center center;' +\r
43                                         'background-repeat: no-repeat;' +\r
44                                         'border: 1px solid #a9a9a9;' +\r
45                                         'width: 80px;' +\r
46                                         'height: 80px;' +\r
47                                 '}'\r
48                         );\r
49 \r
50                         editor.ui.addButton( 'Iframe',\r
51                                 {\r
52                                         label : lang.toolbar,\r
53                                         command : pluginName\r
54                                 });\r
55 \r
56                         editor.on( 'doubleclick', function( evt )\r
57                                 {\r
58                                         var element = evt.data.element;\r
59                                         if ( element.is( 'img' ) && element.data( 'cke-real-element-type' ) == 'iframe' )\r
60                                                 evt.data.dialog = 'iframe';\r
61                                 });\r
62 \r
63                         if ( editor.addMenuItems )\r
64                         {\r
65                                 editor.addMenuItems(\r
66                                 {\r
67                                         iframe :\r
68                                         {\r
69                                                 label : lang.title,\r
70                                                 command : 'iframe',\r
71                                                 group : 'image'\r
72                                         }\r
73                                 });\r
74                         }\r
75 \r
76                         // If the "contextmenu" plugin is loaded, register the listeners.\r
77                         if ( editor.contextMenu )\r
78                         {\r
79                                 editor.contextMenu.addListener( function( element, selection )\r
80                                         {\r
81                                                 if ( element && element.is( 'img' ) && element.data( 'cke-real-element-type' ) == 'iframe' )\r
82                                                         return { iframe : CKEDITOR.TRISTATE_OFF };\r
83                                         });\r
84                         }\r
85                 },\r
86                 afterInit : function( editor )\r
87                 {\r
88                         var dataProcessor = editor.dataProcessor,\r
89                                 dataFilter = dataProcessor && dataProcessor.dataFilter;\r
90 \r
91                         if ( dataFilter )\r
92                         {\r
93                                 dataFilter.addRules(\r
94                                 {\r
95                                         elements :\r
96                                         {\r
97                                                 iframe : function( element )\r
98                                                 {\r
99                                                         return createFakeElement( editor, element );\r
100                                                 }\r
101                                         }\r
102                                 });\r
103                         }\r
104                 }\r
105         });\r
106 })();\r