diff options
Diffstat (limited to 'wp-admin/js/editor.js')
| -rw-r--r-- | wp-admin/js/editor.js | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/wp-admin/js/editor.js b/wp-admin/js/editor.js index a5500ec..757fd30 100644 --- a/wp-admin/js/editor.js +++ b/wp-admin/js/editor.js @@ -24,36 +24,45 @@ switchEditors = { }, pre_wpautop : function(content) { - // We have a TON of cleanup to do. + // We have a TON of cleanup to do. Line breaks are already stripped. - // Remove anonymous, empty paragraphs. - content = content.replace(new RegExp('<p>(\\s| |<br />)*</p>', 'mg'), ''); + // Pretty it up for the source editor + var blocklist1 = 'blockquote|ul|ol|li|table|thead|tbody|tr|th|td|div|h[1-6]|pre|p'; + content = content.replace(new RegExp('\\s*</('+blocklist1+')>\\s*', 'mg'), '</$1>\n'); + content = content.replace(new RegExp('\\s*<(('+blocklist1+')[^>]*)>', 'mg'), '\n<$1>'); // Mark </p> if it has any attributes. - content = content.replace(new RegExp('(<p[^>]+>.*?)</p>', 'mg'), '$1</p#>'); + content = content.replace(new RegExp('(<p [^>]+>.*?)</p>', 'mg'), '$1</p#>'); - // Get it ready for wpautop. + // Sepatate <div> containing <p> + content = content.replace(new RegExp('<div([^>]*)>\\s*<p>', 'mgi'), '<div$1>\n\n'); + + // Remove <p> and <br /> content = content.replace(new RegExp('\\s*<p>', 'mgi'), ''); content = content.replace(new RegExp('\\s*</p>\\s*', 'mgi'), '\n\n'); content = content.replace(new RegExp('\\n\\s*\\n', 'mgi'), '\n\n'); content = content.replace(new RegExp('\\s*<br ?/?>\\s*', 'gi'), '\n'); // Fix some block element newline issues - var blocklist = 'blockquote|ul|ol|li|table|thead|tr|th|td|div|h\\d|pre'; - content = content.replace(new RegExp('\\s*<(('+blocklist+') ?[^>]*)\\s*>', 'mg'), '\n<$1>'); - content = content.replace(new RegExp('\\s*</('+blocklist+')>\\s*', 'mg'), '</$1>\n'); - content = content.replace(new RegExp('<li>', 'g'), '\t<li>'); + content = content.replace(new RegExp('\\s*<div', 'mg'), '\n<div'); + content = content.replace(new RegExp('</div>\\s*', 'mg'), '</div>\n'); + + var blocklist2 = 'blockquote|ul|ol|li|table|thead|tr|th|td|h[1-6]|pre'; + content = content.replace(new RegExp('\\s*<(('+blocklist2+') ?[^>]*)\\s*>', 'mg'), '\n<$1>'); + content = content.replace(new RegExp('\\s*</('+blocklist2+')>\\s*', 'mg'), '</$1>\n'); + content = content.replace(new RegExp('<li([^>]*)>', 'g'), '\t<li$1>'); if ( content.indexOf('<object') != -1 ) { - content = content.replace(new RegExp('\\s*<param([^>]*)>\\s*', 'g'), "<param$1>"); // no pee inside object/embed - content = content.replace(new RegExp('\\s*</embed>\\s*', 'g'), '</embed>'); + content = content.replace(new RegExp('\\s*<param([^>]*)>\\s*', 'mg'), "<param$1>"); + content = content.replace(new RegExp('\\s*</embed>\\s*', 'mg'), '</embed>'); } // Unmark special paragraph closing tags content = content.replace(new RegExp('</p#>', 'g'), '</p>\n'); - content = content.replace(new RegExp('\\s*(<p[^>]+>.*</p>)', 'mg'), '\n$1'); + content = content.replace(new RegExp('\\s*(<p [^>]+>.*</p>)', 'mg'), '\n$1'); - // Trim trailing whitespace + // Trim whitespace + content = content.replace(new RegExp('^\\s*', ''), ''); content = content.replace(new RegExp('\\s*$', ''), ''); // Hope. |
