X-Git-Url: https://scm.cri.ensmp.fr/git/ckeditor.git/blobdiff_plain/e11f66eb655db8339a2d9b197b89f6c3b26099e1..579f65bc95a773bc6f8da75f6849ea49f365368b:/skins/ckeditor/_source/plugins/htmldataprocessor/plugin.js diff --git a/skins/ckeditor/_source/plugins/htmldataprocessor/plugin.js b/skins/ckeditor/_source/plugins/htmldataprocessor/plugin.js deleted file mode 100644 index ad6fa47..0000000 --- a/skins/ckeditor/_source/plugins/htmldataprocessor/plugin.js +++ /dev/null @@ -1,595 +0,0 @@ -/* -Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ - -(function() -{ - // Regex to scan for   at the end of blocks, which are actually placeholders. - // Safari transforms the   to \xa0. (#4172) - var tailNbspRegex = /^[\t\r\n ]*(?: |\xa0)$/; - - var protectedSourceMarker = '{cke_protected}'; - - // Return the last non-space child node of the block (#4344). - function lastNoneSpaceChild( block ) - { - var lastIndex = block.children.length, - last = block.children[ lastIndex - 1 ]; - while ( last && last.type == CKEDITOR.NODE_TEXT && !CKEDITOR.tools.trim( last.value ) ) - last = block.children[ --lastIndex ]; - return last; - } - - function trimFillers( block, fromSource ) - { - // If the current node is a block, and if we're converting from source or - // we're not in IE then search for and remove any tailing BR node. - // - // Also, any   at the end of blocks are fillers, remove them as well. - // (#2886) - var children = block.children, lastChild = lastNoneSpaceChild( block ); - if ( lastChild ) - { - if ( ( fromSource || !CKEDITOR.env.ie ) && lastChild.type == CKEDITOR.NODE_ELEMENT && lastChild.name == 'br' ) - children.pop(); - if ( lastChild.type == CKEDITOR.NODE_TEXT && tailNbspRegex.test( lastChild.value ) ) - children.pop(); - } - } - - function blockNeedsExtension( block, fromSource, extendEmptyBlock ) - { - if( !fromSource && ( !extendEmptyBlock || - typeof extendEmptyBlock == 'function' && ( extendEmptyBlock( block ) === false ) ) ) - return false; - - // 1. For IE version >=8, empty blocks are displayed correctly themself in wysiwiyg; - // 2. For the rest, at least table cell and list item need no filler space. - // (#6248) - if ( fromSource && CKEDITOR.env.ie && - ( document.documentMode > 7 - || block.name in CKEDITOR.dtd.tr - || block.name in CKEDITOR.dtd.$listItem ) ) - return false; - - var lastChild = lastNoneSpaceChild( block ); - - return !lastChild || lastChild && - ( lastChild.type == CKEDITOR.NODE_ELEMENT && lastChild.name == 'br' - // Some of the controls in form needs extension too, - // to move cursor at the end of the form. (#4791) - || block.name == 'form' && lastChild.name == 'input' ); - } - - function getBlockExtension( isOutput, emptyBlockFiller ) - { - return function( node ) - { - trimFillers( node, !isOutput ); - - if ( blockNeedsExtension( node, !isOutput, emptyBlockFiller ) ) - { - if ( isOutput || CKEDITOR.env.ie ) - node.add( new CKEDITOR.htmlParser.text( '\xa0' ) ); - else - node.add( new CKEDITOR.htmlParser.element( 'br', {} ) ); - } - }; - } - - var dtd = CKEDITOR.dtd; - - // Define orders of table elements. - var tableOrder = [ 'caption', 'colgroup', 'col', 'thead', 'tfoot', 'tbody' ]; - - // Find out the list of block-like tags that can contain
. - var blockLikeTags = CKEDITOR.tools.extend( {}, dtd.$block, dtd.$listItem, dtd.$tableContent ); - for ( var i in blockLikeTags ) - { - if ( ! ( 'br' in dtd[i] ) ) - delete blockLikeTags[i]; - } - // We just avoid filler in
 right now.
-	// TODO: Support filler for 
, line break is also occupy line height.
-	delete blockLikeTags.pre;
-	var defaultDataFilterRules =
-	{
-		elements : {},
-		attributeNames :
-		[
-			// Event attributes (onXYZ) must not be directly set. They can become
-			// active in the editing area (IE|WebKit).
-			[ ( /^on/ ), 'data-cke-pa-on' ]
-		]
-	};
-
-	var defaultDataBlockFilterRules = { elements : {} };
-
-	for ( i in blockLikeTags )
-		defaultDataBlockFilterRules.elements[ i ] = getBlockExtension();
-
-	var defaultHtmlFilterRules =
-		{
-			elementNames :
-			[
-				// Remove the "cke:" namespace prefix.
-				[ ( /^cke:/ ), '' ],
-
-				// Ignore  tags.
-				[ ( /^\?xml:namespace$/ ), '' ]
-			],
-
-			attributeNames :
-			[
-				// Attributes saved for changes and protected attributes.
-				[ ( /^data-cke-(saved|pa)-/ ), '' ],
-
-				// All "data-cke-" attributes are to be ignored.
-				[ ( /^data-cke-.*/ ), '' ],
-
-				[ 'hidefocus', '' ]
-			],
-
-			elements :
-			{
-				$ : function( element )
-				{
-					var attribs = element.attributes;
-
-					if ( attribs )
-					{
-						// Elements marked as temporary are to be ignored.
-						if ( attribs[ 'data-cke-temp' ] )
-							return false;
-
-						// Remove duplicated attributes - #3789.
-						var attributeNames = [ 'name', 'href', 'src' ],
-							savedAttributeName;
-						for ( var i = 0 ; i < attributeNames.length ; i++ )
-						{
-							savedAttributeName = 'data-cke-saved-' + attributeNames[ i ];
-							savedAttributeName in attribs && ( delete attribs[ attributeNames[ i ] ] );
-						}
-					}
-
-					return element;
-				},
-
-				// The contents of table should be in correct order (#4809).
-				table : function( element )
-				{
-					var children = element.children;
-					children.sort( function ( node1, node2 )
-								   {
-									   return node1.type == CKEDITOR.NODE_ELEMENT && node2.type == node1.type ?
-											CKEDITOR.tools.indexOf( tableOrder, node1.name )  > CKEDITOR.tools.indexOf( tableOrder, node2.name ) ? 1 : -1 : 0;
-								   } );
-				},
-
-				embed : function( element )
-				{
-					var parent = element.parent;
-
-					// If the  is child of a , copy the width
-					// and height attributes from it.
-					if ( parent && parent.name == 'object' )
-					{
-						var parentWidth = parent.attributes.width,
-							parentHeight = parent.attributes.height;
-						parentWidth && ( element.attributes.width = parentWidth );
-						parentHeight && ( element.attributes.height = parentHeight );
-					}
-				},
-				// Restore param elements into self-closing.
-				param : function( param )
-				{
-					param.children = [];
-					param.isEmpty = true;
-					return param;
-				},
-
-				// Remove empty link but not empty anchor.(#3829)
-				a : function( element )
-				{
-					if ( !( element.children.length ||
-							element.attributes.name ||
-							element.attributes[ 'data-cke-saved-name' ] ) )
-					{
-						return false;
-					}
-				},
-
-				// Remove dummy span in webkit.
-				span: function( element )
-				{
-					if ( element.attributes[ 'class' ] == 'Apple-style-span' )
-						delete element.name;
-				},
-
-				// Empty 
 in IE is reported with filler node ( ).
-				pre : function( element ) { CKEDITOR.env.ie && trimFillers( element ); },
-
-				html : function( element )
-				{
-					delete element.attributes.contenteditable;
-					delete element.attributes[ 'class' ];
-				},
-
-				body : function( element )
-				{
-					delete element.attributes.spellcheck;
-					delete element.attributes.contenteditable;
-				},
-
-				style : function( element )
-				{
-					var child = element.children[ 0 ];
-					child && child.value && ( child.value = CKEDITOR.tools.trim( child.value ));
-
-					if ( !element.attributes.type )
-						element.attributes.type = 'text/css';
-				},
-
-				title : function( element )
-				{
-					var titleText = element.children[ 0 ];
-					titleText && ( titleText.value = element.attributes[ 'data-cke-title' ] || '' );
-				}
-			},
-
-			attributes :
-			{
-				'class' : function( value, element )
-				{
-					// Remove all class names starting with "cke_".
-					return CKEDITOR.tools.ltrim( value.replace( /(?:^|\s+)cke_[^\s]*/g, '' ) ) || false;
-				}
-			}
-		};
-
-	if ( CKEDITOR.env.ie )
-	{
-		// IE outputs style attribute in capital letters. We should convert
-		// them back to lower case, while not hurting the values (#5930)
-		defaultHtmlFilterRules.attributes.style = function( value, element )
-		{
-			return value.replace( /(^|;)([^\:]+)/g, function( match )
-				{
-					return match.toLowerCase();
-				});
-		};
-	}
-
-	function protectReadOnly( element )
-	{
-		var attrs = element.attributes;
-
-		// We should flag that the element was locked by our code so
-		// it'll be editable by the editor functions (#6046).
-		if ( attrs.contenteditable != "false" )
-			attrs[ 'data-cke-editable' ] = attrs.contenteditable ? 'true' : 1;
-
-		attrs.contenteditable = "false";
-	}
-	function unprotectReadyOnly( element )
-	{
-		var attrs = element.attributes;
-		switch( attrs[ 'data-cke-editable' ] )
-		{
-			case 'true':	attrs.contenteditable = 'true';	break;
-			case '1':		delete attrs.contenteditable;	break;
-		}
-	}
-	// Disable form elements editing mode provided by some browers. (#5746)
-	for ( i in { input : 1, textarea : 1 } )
-	{
-		defaultDataFilterRules.elements[ i ] = protectReadOnly;
-		defaultHtmlFilterRules.elements[ i ] = unprotectReadyOnly;
-	}
-
-	var protectElementRegex = /<(a|area|img|input)\b([^>]*)>/gi,
-		protectAttributeRegex = /\b(href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi;
-
-	var protectElementsRegex = /(?:])[^>]*>[\s\S]*<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,
-		encodedElementsRegex = /([^<]*)<\/cke:encoded>/gi;
-
-	var protectElementNamesRegex = /(<\/?)((?:object|embed|param|html|body|head|title)[^>]*>)/gi,
-		unprotectElementNamesRegex = /(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi;
-
-	var protectSelfClosingRegex = /]*?)\/?>(?!\s*<\/cke:\1)/gi;
-
-	function protectAttributes( html )
-	{
-		return html.replace( protectElementRegex, function( element, tag, attributes )
-		{
-			return '<' +  tag + attributes.replace( protectAttributeRegex, function( fullAttr, attrName )
-			{
-				// We should not rewrite the existed protected attributes, e.g. clipboard content from editor. (#5218)
-				if ( attributes.indexOf( 'data-cke-saved-' + attrName ) == -1 )
-					return ' data-cke-saved-' + fullAttr + ' ' + fullAttr;
-
-				return fullAttr;
-			}) + '>';
-		});
-	}
-
-	function protectElements( html )
-	{
-		return html.replace( protectElementsRegex, function( match )
-			{
-				return '' + encodeURIComponent( match ) + '';
-			});
-	}
-
-	function unprotectElements( html )
-	{
-		return html.replace( encodedElementsRegex, function( match, encoded )
-			{
-				return decodeURIComponent( encoded );
-			});
-	}
-
-	function protectElementsNames( html )
-	{
-		return html.replace( protectElementNamesRegex, '$1cke:$2');
-	}
-
-	function unprotectElementNames( html )
-	{
-		return html.replace( unprotectElementNamesRegex, '$1$2' );
-	}
-
-	function protectSelfClosingElements( html )
-	{
-		return html.replace( protectSelfClosingRegex, '' );
-	}
-
-	function protectPreFormatted( html )
-	{
-		return html.replace( /(]*>)(\r\n|\n)/g, '$1$2$2' );
-	}
-
-	function protectRealComments( html )
-	{
-		return html.replace( //g, function( match )
-			{
-				return '';
-			});
-	}
-
-	function unprotectRealComments( html )
-	{
-		return html.replace( //g, function( match, data )
-			{
-				return decodeURIComponent( data );
-			});
-	}
-
-	function unprotectSource( html, editor )
-	{
-		var store = editor._.dataStore;
-
-		return html.replace( //g, function( match, data )
-			{
-				return decodeURIComponent( data );
-			}).replace( /\{cke_protected_(\d+)\}/g, function( match, id )
-			{
-				return store && store[ id ] || '';
-			});
-	}
-
-	function protectSource( data, editor )
-	{
-		var protectedHtml = [],
-			protectRegexes = editor.config.protectedSource,
-			store = editor._.dataStore || ( editor._.dataStore = { id : 1 } ),
-			tempRegex = /<\!--\{cke_temp(comment)?\}(\d*?)-->/g;
-
-		var regexes =
-			[
-				// Script tags will also be forced to be protected, otherwise
-				// IE will execute them.
-				( //gi ),
-
-				//