Blame view

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