From 22661054992f671ca21d936dfc78229b7d8e7c3e Mon Sep 17 00:00:00 2001 From: Carsten Schmitz Date: Wed, 30 Oct 2013 22:05:13 +0100 Subject: [PATCH] Fixed issue #7782: HTML5 misinterpretation of nesting Dev Modified the CKEditor library directly. This is fixed in the latest version of CKEditor. --- third_party/ckeditor/_source/core/dtd.js | 532 +++++++++++------------ 1 file changed, 266 insertions(+), 266 deletions(-) diff --git a/third_party/ckeditor/_source/core/dtd.js b/third_party/ckeditor/_source/core/dtd.js index 76260b2ee60..33f765fa4cd 100644 --- a/third_party/ckeditor/_source/core/dtd.js +++ b/third_party/ckeditor/_source/core/dtd.js @@ -1,266 +1,266 @@ -/* -Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ - -/** - * @fileOverview Defines the {@link CKEDITOR.dtd} object, which holds the DTD - * mapping for XHTML 1.0 Transitional. This file was automatically - * generated from the file: xhtml1-transitional.dtd. - */ - -/** - * @namespace Holds and object representation of the HTML DTD to be used by the - * editor in its internal operations.
- *
- * Each element in the DTD is represented by a property in this object. Each - * property contains the list of elements that can be contained by the element. - * Text is represented by the "#" property.
- *
- * Several special grouping properties are also available. Their names start - * with the "$" character. - * @example - * // Check if "div" can be contained in a "p" element. - * alert( !!CKEDITOR.dtd[ 'p' ][ 'div' ] ); "false" - * @example - * // Check if "p" can be contained in a "div" element. - * alert( !!CKEDITOR.dtd[ 'div' ][ 'p' ] ); "true" - * @example - * // Check if "p" is a block element. - * alert( !!CKEDITOR.dtd.$block[ 'p' ] ); "true" - */ -CKEDITOR.dtd = (function() -{ - var X = CKEDITOR.tools.extend, - - A = {isindex:1,fieldset:1}, - B = {input:1,button:1,select:1,textarea:1,label:1}, - C = X({a:1},B), - D = X({iframe:1},C), - E = {hr:1,ul:1,menu:1,div:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,mark:1,time:1,meter:1,command:1,keygen:1,output:1,progress:1,audio:1,video:1,details:1,datagrid:1,datalist:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1}, - F = {ins:1,del:1,script:1,style:1}, - G = X({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1,wbr:1},F), - H = X({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1,mark:1},G), - I = X({p:1},H), - J = X({iframe:1},H,B), - K = {img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,mark:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,audio:1,video:1,details:1,datagrid:1,datalist:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1}, - - L = X({a:1},J), - M = {tr:1}, - N = {'#':1}, - O = X({param:1},K), - P = X({form:1},A,D,E,I), - Q = {li:1}, - R = {style:1,script:1}, - S = {base:1,link:1,meta:1,title:1}, - T = X(S,R), - U = {head:1,body:1}, - V = {html:1}; - - var block = {address:1,blockquote:1,center:1,dir:1,div:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,audio:1,video:1,details:1,datagrid:1,datalist:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,isindex:1,noframes:1,ol:1,p:1,pre:1,table:1,ul:1}; - - return /** @lends CKEDITOR.dtd */ { - - // The "$" items have been added manually. - - // List of elements living outside body. - $nonBodyContent: X(V,U,S), - - /** - * List of block elements, like "p" or "div". - * @type Object - * @example - */ - $block : block, - - /** - * List of block limit elements. - * @type Object - * @example - */ - $blockLimit : { body:1,div:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,audio:1,video:1,details:1,datagrid:1,datalist:1,td:1,th:1,caption:1,form:1 }, - - /** - * List of inline (<span> like) elements. - */ - $inline : L, // Just like span. - - /** - * list of elements that can be children at <body>. - */ - $body : X({script:1,style:1}, block), - - $cdata : {script:1,style:1}, - - /** - * List of empty (self-closing) elements, like "br" or "img". - * @type Object - * @example - */ - $empty : {area:1,base:1,br:1,col:1,hr:1,img:1,input:1,link:1,meta:1,param:1,wbr:1}, - - /** - * List of list item elements, like "li" or "dd". - * @type Object - * @example - */ - $listItem : {dd:1,dt:1,li:1}, - - /** - * List of list root elements. - * @type Object - * @example - */ - $list: {ul:1,ol:1,dl:1}, - - /** - * Elements that accept text nodes, but are not possible to edit into - * the browser. - * @type Object - * @example - */ - $nonEditable : {applet:1,button:1,embed:1,iframe:1,map:1,object:1,option:1,script:1,textarea:1,param:1,audio:1,video:1}, - - /** - * List of block tags with each one a singleton element lives in the corresponding structure for description. - */ - $captionBlock : { caption:1, legend:1 }, - - /** - * List of elements that can be ignored if empty, like "b" or "span". - * @type Object - * @example - */ - $removeEmpty : {abbr:1,acronym:1,address:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,s:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1,mark:1}, - - /** - * List of elements that have tabindex set to zero by default. - * @type Object - * @example - */ - $tabIndex : {a:1,area:1,button:1,input:1,object:1,select:1,textarea:1}, - - /** - * List of elements used inside the "table" element, like "tbody" or "td". - * @type Object - * @example - */ - $tableContent : {caption:1,col:1,colgroup:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1}, - - html: U, - head: T, - style: N, - script: N, - body: P, - base: {}, - link: {}, - meta: {}, - title: N, - col : {}, - tr : {td:1,th:1}, - img : {}, - colgroup : {col:1}, - noscript : P, - td : P, - br : {}, - wbr : {}, - th : P, - center : P, - kbd : L, - button : X(I,E), - basefont : {}, - h5 : L, - h4 : L, - samp : L, - h6 : L, - ol : Q, - h1 : L, - h3 : L, - option : N, - h2 : L, - form : X(A,D,E,I), - select : {optgroup:1,option:1}, - font : L, - ins : L, - menu : Q, - abbr : L, - label : L, - table : {thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1}, - code : L, - tfoot : M, - cite : L, - li : P, - input : {}, - iframe : P, - strong : L, - textarea : N, - noframes : P, - big : L, - small : L, - span : L, - hr : {}, - dt : L, - sub : L, - optgroup : {option:1}, - param : {}, - bdo : L, - 'var' : L, - div : P, - object : O, - sup : L, - dd : P, - strike : L, - area : {}, - dir : Q, - map : X({area:1,form:1,p:1},A,F,E), - applet : O, - dl : {dt:1,dd:1}, - del : L, - isindex : {}, - fieldset : X({legend:1},K), - thead : M, - ul : Q, - acronym : L, - b : L, - a : J, - blockquote : P, - caption : L, - i : L, - u : L, - tbody : M, - s : L, - address : X(D,I), - tt : L, - legend : L, - q : L, - pre : X(G,C), - p : L, - em : L, - dfn : L, - //HTML5 - section : P, - header : P, - footer : P, - nav : P, - article : P, - aside : P, - figure: P, - dialog : P, - hgroup : P, - mark : L, - time : L, - meter : L, - menu : L, - command : L, - keygen : L, - output : L, - progress : O, - audio : O, - video : O, - details : O, - datagrid : O, - datalist : O - }; -})(); - -// PACKAGER_RENAME( CKEDITOR.dtd ) +/* +Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ + +/** + * @fileOverview Defines the {@link CKEDITOR.dtd} object, which holds the DTD + * mapping for XHTML 1.0 Transitional. This file was automatically + * generated from the file: xhtml1-transitional.dtd. + */ + +/** + * @namespace Holds and object representation of the HTML DTD to be used by the + * editor in its internal operations.
+ *
+ * Each element in the DTD is represented by a property in this object. Each + * property contains the list of elements that can be contained by the element. + * Text is represented by the "#" property.
+ *
+ * Several special grouping properties are also available. Their names start + * with the "$" character. + * @example + * // Check if "div" can be contained in a "p" element. + * alert( !!CKEDITOR.dtd[ 'p' ][ 'div' ] ); "false" + * @example + * // Check if "p" can be contained in a "div" element. + * alert( !!CKEDITOR.dtd[ 'div' ][ 'p' ] ); "true" + * @example + * // Check if "p" is a block element. + * alert( !!CKEDITOR.dtd.$block[ 'p' ] ); "true" + */ +CKEDITOR.dtd = (function() +{ + var X = CKEDITOR.tools.extend, + + A = {isindex:1,fieldset:1}, + B = {input:1,button:1,select:1,textarea:1,label:1}, + C = X({a:1},B), + D = X({iframe:1},C), + E = {hr:1,ul:1,menu:1,div:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,mark:1,time:1,meter:1,command:1,keygen:1,output:1,progress:1,audio:1,video:1,details:1,datagrid:1,datalist:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1}, + F = {ins:1,del:1,script:1,style:1}, + G = X({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1,wbr:1},F), + H = X({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1,mark:1},G), + I = X({p:1},H), + J = X({iframe:1},H,B), + K = {img:1,noscript:1,br:1,kbd:1,center:1,button:1,basefont:1,h5:1,h4:1,samp:1,h6:1,ol:1,h1:1,h3:1,h2:1,form:1,font:1,'#':1,select:1,menu:1,ins:1,abbr:1,label:1,code:1,table:1,script:1,cite:1,input:1,iframe:1,strong:1,textarea:1,noframes:1,big:1,small:1,span:1,hr:1,sub:1,bdo:1,'var':1,div:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,mark:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,audio:1,video:1,details:1,datagrid:1,datalist:1,object:1,sup:1,strike:1,dir:1,map:1,dl:1,applet:1,del:1,isindex:1,fieldset:1,ul:1,b:1,acronym:1,a:1,blockquote:1,i:1,u:1,s:1,tt:1,address:1,q:1,pre:1,p:1,em:1,dfn:1}, + + L = X({a:1},J), + M = {tr:1}, + N = {'#':1}, + O = X({param:1},K), + P = X({form:1},A,D,E,I), + Q = {li:1}, + R = {style:1,script:1}, + S = {base:1,link:1,meta:1,title:1}, + T = X(S,R), + U = {head:1,body:1}, + V = {html:1}; + + var block = {address:1,blockquote:1,center:1,dir:1,div:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,audio:1,video:1,details:1,datagrid:1,datalist:1,dl:1,fieldset:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,hr:1,isindex:1,noframes:1,ol:1,p:1,pre:1,table:1,ul:1}; + + return /** @lends CKEDITOR.dtd */ { + + // The "$" items have been added manually. + + // List of elements living outside body. + $nonBodyContent: X(V,U,S), + + /** + * List of block elements, like "p" or "div". + * @type Object + * @example + */ + $block : block, + + /** + * List of block limit elements. + * @type Object + * @example + */ + $blockLimit : { body:1,div:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,audio:1,video:1,details:1,datagrid:1,datalist:1,td:1,th:1,caption:1,form:1 }, + + /** + * List of inline (<span> like) elements. + */ + $inline : L, // Just like span. + + /** + * list of elements that can be children at <body>. + */ + $body : X({script:1,style:1}, block), + + $cdata : {script:1,style:1}, + + /** + * List of empty (self-closing) elements, like "br" or "img". + * @type Object + * @example + */ + $empty : {area:1,base:1,br:1,col:1,hr:1,img:1,input:1,link:1,meta:1,param:1,wbr:1,source:1,track:1}, + /** + * List of list item elements, like "li" or "dd". + * @type Object + * @example + */ + $listItem : {dd:1,dt:1,li:1}, + + /** + * List of list root elements. + * @type Object + * @example + */ + $list: {ul:1,ol:1,dl:1}, + + /** + * Elements that accept text nodes, but are not possible to edit into + * the browser. + * @type Object + * @example + */ + $nonEditable : {applet:1,button:1,embed:1,iframe:1,map:1,object:1,option:1,script:1,textarea:1,param:1,audio:1,video:1}, + + /** + * List of block tags with each one a singleton element lives in the corresponding structure for description. + */ + $captionBlock : { caption:1, legend:1 }, + + /** + * List of elements that can be ignored if empty, like "b" or "span". + * @type Object + * @example + */ + $removeEmpty : {abbr:1,acronym:1,address:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,s:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,'var':1,mark:1}, + + /** + * List of elements that have tabindex set to zero by default. + * @type Object + * @example + */ + $tabIndex : {a:1,area:1,button:1,input:1,object:1,select:1,textarea:1}, + + /** + * List of elements used inside the "table" element, like "tbody" or "td". + * @type Object + * @example + */ + $tableContent : {caption:1,col:1,colgroup:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1}, + + html: U, + head: T, + style: N, + script: N, + body: P, + base: {}, + link: {}, + meta: {}, + title: N, + col : {}, + tr : {td:1,th:1}, + img : {}, + colgroup : {col:1}, + noscript : P, + td : P, + br : {}, + wbr : {}, + th : P, + center : P, + kbd : L, + button : X(I,E), + basefont : {}, + h5 : L, + h4 : L, + samp : L, + h6 : L, + ol : Q, + h1 : L, + h3 : L, + option : N, + h2 : L, + form : X(A,D,E,I), + select : {optgroup:1,option:1}, + font : L, + ins : L, + menu : Q, + abbr : L, + label : L, + table : {thead:1,col:1,tbody:1,tr:1,colgroup:1,caption:1,tfoot:1}, + code : L, + tfoot : M, + cite : L, + li : P, + input : {}, + iframe : P, + strong : L, + textarea : N, + noframes : P, + big : L, + small : L, + span : L, + hr : {}, + dt : L, + sub : L, + optgroup : {option:1}, + param : {}, + bdo : L, + 'var' : L, + div : P, + object : O, + sup : L, + dd : P, + strike : L, + area : {}, + dir : Q, + map : X({area:1,form:1,p:1},A,F,E), + applet : O, + dl : {dt:1,dd:1}, + del : L, + isindex : {}, + fieldset : X({legend:1},K), + thead : M, + ul : Q, + acronym : L, + b : L, + a : J, + blockquote : P, + caption : L, + i : L, + u : L, + tbody : M, + s : L, + address : X(D,I), + tt : L, + legend : L, + q : L, + pre : X(G,C), + p : L, + em : L, + dfn : L, + //HTML5 + section : P, + header : P, + footer : P, + nav : P, + article : P, + aside : P, + figure: P, + dialog : P, + hgroup : P, + mark : L, + time : L, + meter : L, + menu : L, + command : L, + keygen : L, + output : L, + progress : O, + audio : X({source:1,track:1}, O), + video : X({source:1,track:1}, O), + source : {}, + track : {}, details : O, + datagrid : O, + datalist : O + }; +})(); + +// PACKAGER_RENAME( CKEDITOR.dtd )