/*\r
-Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.\r
+Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved.\r
For licensing, see LICENSE.html or http://ckeditor.com/license\r
*/\r
\r
\r
var dtd = CKEDITOR.dtd;\r
\r
- for ( var e in CKEDITOR.tools.extend( {}, dtd.$block, dtd.$listItem, dtd.$tableContent ) )\r
+ for ( var e in CKEDITOR.tools.extend( {}, dtd.$nonBodyContent, dtd.$block, dtd.$listItem, dtd.$tableContent ) )\r
{\r
this.setRules( e,\r
{\r
breakAfterClose : true\r
});\r
}\r
+\r
this.setRules( 'br',\r
{\r
breakAfterOpen : true\r
});\r
+\r
+ this.setRules( 'title',\r
+ {\r
+ indent : false,\r
+ breakAfterOpen : false\r
+ });\r
+\r
+ this.setRules( 'style',\r
+ {\r
+ indent : false,\r
+ breakBeforeClose : true\r
+ });\r
+\r
// Disable indentation on <pre>.\r
this.setRules( 'pre',\r
- {\r
- indent: false\r
- } );\r
+ {\r
+ indent: false\r
+ });\r
},\r
\r
proto :\r
*/\r
attribute : function( attName, attValue )\r
{\r
- if ( this.forceSimpleAmpersand )\r
- attValue = attValue.replace( /&/, '&' );\r
+\r
+ if ( typeof attValue == 'string' )\r
+ {\r
+ this.forceSimpleAmpersand && ( attValue = attValue.replace( /&/g, '&' ) );\r
+ // Browsers don't always escape special character in attribute values. (#4683, #4719).\r
+ attValue = CKEDITOR.tools.htmlEncodeAttr( attValue );\r
+ }\r
\r
this._.output.push( ' ', attName, '="', attValue, '"' );\r
},\r
* <li><b>breakAfterClose</b>: break line after the closer tag for this element.</li>\r
* </ul>\r
*\r
- * All rules default to "false".\r
+ * All rules default to "false". Each call to the function overrides\r
+ * already present rules, leaving the undefined untouched.\r
*\r
* By default, all elements available in the {@link CKEDITOR.dtd.$block),\r
* {@link CKEDITOR.dtd.$listItem} and {@link CKEDITOR.dtd.$tableContent}\r
*/\r
setRules : function( tagName, rules )\r
{\r
- this._.rules[ tagName ] = rules;\r
+ var currentRules = this._.rules[ tagName ];\r
+\r
+ if ( currentRules )\r
+ CKEDITOR.tools.extend( currentRules, rules, true );\r
+ else\r
+ this._.rules[ tagName ] = rules;\r
}\r
}\r
});\r