2 Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
\r
3 For licensing, see LICENSE.html or http://ckeditor.com/license
\r
8 var htmlFilterRules =
\r
12 $ : function( element )
\r
14 var attributes = element.attributes,
\r
15 realHtml = attributes && attributes[ 'data-cke-realelement' ],
\r
16 realFragment = realHtml && new CKEDITOR.htmlParser.fragment.fromHtml( decodeURIComponent( realHtml ) ),
\r
17 realElement = realFragment && realFragment.children[ 0 ];
\r
19 // If we have width/height in the element, we must move it into
\r
20 // the real element.
\r
21 if ( realElement && element.attributes[ 'data-cke-resizable' ] )
\r
23 var style = element.attributes.style;
\r
27 // Get the width from the style.
\r
28 var match = /(?:^|\s)width\s*:\s*(\d+)/i.exec( style ),
\r
29 width = match && match[1];
\r
31 // Get the height from the style.
\r
32 match = /(?:^|\s)height\s*:\s*(\d+)/i.exec( style );
\r
33 var height = match && match[1];
\r
36 realElement.attributes.width = width;
\r
39 realElement.attributes.height = height;
\r
48 CKEDITOR.plugins.add( 'fakeobjects',
\r
50 requires : [ 'htmlwriter' ],
\r
52 afterInit : function( editor )
\r
54 var dataProcessor = editor.dataProcessor,
\r
55 htmlFilter = dataProcessor && dataProcessor.htmlFilter;
\r
58 htmlFilter.addRules( htmlFilterRules );
\r
63 CKEDITOR.editor.prototype.createFakeElement = function( realElement, className, realElementType, isResizable )
\r
65 var lang = this.lang.fakeobjects,
\r
66 label = lang[ realElementType ] || lang.unknown;
\r
70 'class' : className,
\r
71 src : CKEDITOR.getUrl( 'images/spacer.gif' ),
\r
72 'data-cke-realelement' : encodeURIComponent( realElement.getOuterHtml() ),
\r
73 'data-cke-real-node-type' : realElement.type,
\r
76 align : realElement.getAttribute( 'align' ) || ''
\r
79 if ( realElementType )
\r
80 attributes[ 'data-cke-real-element-type' ] = realElementType;
\r
83 attributes[ 'data-cke-resizable' ] = isResizable;
\r
85 return this.document.createElement( 'img', { attributes : attributes } );
\r
88 CKEDITOR.editor.prototype.createFakeParserElement = function( realElement, className, realElementType, isResizable )
\r
90 var lang = this.lang.fakeobjects,
\r
91 label = lang[ realElementType ] || lang.unknown,
\r
94 var writer = new CKEDITOR.htmlParser.basicWriter();
\r
95 realElement.writeHtml( writer );
\r
96 html = writer.getHtml();
\r
100 'class' : className,
\r
101 src : CKEDITOR.getUrl( 'images/spacer.gif' ),
\r
102 'data-cke-realelement' : encodeURIComponent( html ),
\r
103 'data-cke-real-node-type' : realElement.type,
\r
106 align : realElement.attributes.align || ''
\r
109 if ( realElementType )
\r
110 attributes[ 'data-cke-real-element-type' ] = realElementType;
\r
113 attributes[ 'data-cke-resizable' ] = isResizable;
\r
115 return new CKEDITOR.htmlParser.element( 'img', attributes );
\r
118 CKEDITOR.editor.prototype.restoreRealElement = function( fakeElement )
\r
120 if ( fakeElement.data( 'cke-real-node-type' ) != CKEDITOR.NODE_ELEMENT )
\r
123 return CKEDITOR.dom.element.createFromHtml(
\r
124 decodeURIComponent( fakeElement.data( 'cke-realelement' ) ),
\r