tinyMCE updates from skeltoac. fixes #1991

git-svn-id: http://svn.automattic.com/wordpress/trunk@3265 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2005-12-05 03:04:25 +00:00
parent 38fbb47e77
commit 57ce56e8f4
6 changed files with 6120 additions and 11 deletions

View File

@ -99,7 +99,7 @@ tinyMCE.init({
theme_advanced_toolbar_align : "left",
theme_advanced_path_location : "bottom",
theme_advanced_resizing : true,
browsers : "msie,gecko",
browsers : "msie,gecko,opera",
dialog_type : "modal",
theme_advanced_resize_horizontal : false,
entity_encoding : "raw",
@ -110,7 +110,7 @@ tinyMCE.init({
convert_newlines_to_brs : false,
remove_linebreaks : true,
save_callback : "wp_save_callback",
valid_elements : "-a[id|href|title|rel],-strong/b,-em/i,-strike,-del,-u,p[class|align|dir],-ol,-ul,-li,br,img[class|src|alt|title|width|height|align],-sub,-sup,-blockquote[dir],-table[border=0|cellspacing|cellpadding|width|height|class|align|dir],tr[class|rowspan|width|height|align|valign|dir],td[dir|class|colspan|rowspan|width|height|align|valign],-div[dir|class|align],-span[class|align],-pre[class],-code[class],-address,-h1[class|align|dir],-h2[class|align|dir],-h3[class|align|dir],-h4[class|align|dir],-h5[class|align|dir],-h6[class|align|dir],hr",
valid_elements : "-a[id|href|title|rel],-strong/b,-em/i,-strike,-del,-u,p[class|align|dir],-ol,-ul,-li,br,img[class|src|alt|title|width|height|align],-sub,-sup,-blockquote[dir],-table[border=0|cellspacing|cellpadding|width|height|class|align|dir],thead[class|rowspan|width|height|align|valign|dir],tr[class|rowspan|width|height|align|valign|dir],th[dir|class|colspan|rowspan|width|height|align|valign|scope],td[dir|class|colspan|rowspan|width|height|align|valign],-div[dir|class|align],-span[class|align],-pre[class],-code[class],-address,-h1[class|align|dir],-h2[class|align|dir],-h3[class|align|dir],-h4[class|align|dir],-h5[class|align|dir],-h6[class|align|dir],hr",
plugins : "<?php echo $mce_plugins; ?>"
<?php do_action('mce_options'); ?>
});

View File

@ -200,15 +200,28 @@ function TinyMCE_wordpress_cleanup(type, content) {
// If it says & in the WYSIWYG editor, it should say &amp; in the html.
content = content.replace(new RegExp('&', 'g'), '&amp;');
content = content.replace(new RegExp('&amp;nbsp;', 'g'), '&nbsp;');
// Remove anonymous, empty paragraphs.
content = content.replace(new RegExp('<p>(\\s|&nbsp;)*</p>', 'mg'), '');
// Handle table badness.
content = content.replace(new RegExp('<(table( [^>]*)?)>.*?<((tr|thead)( [^>]*)?)>', 'mg'), '<$1><$3>');
content = content.replace(new RegExp('<(tr|thead|tfoot)>.*?<((td|th)( [^>]*)?)>', 'mg'), '<$1><$2>');
content = content.replace(new RegExp('</(td|th)>.*?<(td( [^>]*)?|th( [^>]*)?|/tr|/thead|/tfoot)>', 'mg'), '</$1><$2>');
content = content.replace(new RegExp('</tr>.*?<(tr|/table)>', 'mg'), '</tr><$1>');
content = content.replace(new RegExp('<(/?(table|tbody|tr|th|td)[^>]*)>(\\s*|(<br ?/?>)*)*', 'g'), '<$1>');
// Pretty it up for the source editor.
var blocklist = 'blockquote|ul|ol|li|table|thead|tr|th|td|div|h\d|pre|p';
var blocklist = 'blockquote|ul|ol|li|table|thead|tr|th|td|div|h\\d|pre|p';
content = content.replace(new RegExp('\\s*</('+blocklist+')>\\s*', 'mg'), '</$1>\n');
content = content.replace(new RegExp('\\s*<(('+blocklist+')[^>]*)>\\s*', 'mg'), '\n<$1>');
content = content.replace(new RegExp('<li>', 'g'), '\t<li>');
content = content.replace(new RegExp('<((li|/?tr|/?thead|/?tfoot)( [^>]*)?)>', 'g'), '\t<$1>');
content = content.replace(new RegExp('<((td|th)( [^>]*)?)>', 'g'), '\t\t<$1>');
content = content.replace(new RegExp('\\s*<br ?/?>\\s*', 'mg'), '<br />\n');
content = content.replace(new RegExp('^\\s*', ''), '');
content = content.replace(new RegExp('\\s*$', ''), '');
break;
}

File diff suppressed because one or more lines are too long

View File

@ -37,6 +37,34 @@
}
}
function wp_compact_tinymce_js($text) {
// This function was custom-made for TinyMCE 2.0, not expected to work with any other JS.
echo "\n//" . strlen(gzdeflate($text)) . " bytes gzdeflated\n";
echo "//" . microtime() . " " . strlen($text) . " Micro Time Length\n";
// Strip comments
$text = preg_replace("!(^|\s+)//.*$!m", '', $text);
echo "//" . microtime() . " " . strlen($text) . " Stripped // comments\n";
$text = preg_replace("!/\*.*?\*/!s", '', $text);
echo "//" . microtime() . " " . strlen($text) . " Stripped /* */ comments\n";
// Strip leading tabs, carriage returns and unnecessary line breaks.
$text = preg_replace("!^\t+!m", '', $text);
echo "//" . microtime() . " " . strlen($text) . " Stripped leading tabs\n";
$text = str_replace("\r", '', $text);
echo "//" . microtime() . " " . strlen($text) . " Stripped returns\n";
$text = preg_replace("!(^|{|}|;|:|\))\n!m", '\\1', $text);
echo "//" . microtime() . " " . strlen($text) . " Stripped safe linebreaks\n";
// Strip spaces. This one is not generally economical.
//$text = preg_replace("!\s*(\=|\=\=|\!\=|\<\=|\>\=|\+=|\+|\s|:|,)\s*!", '\\1', $text);
//echo "//" . microtime() . " " . strlen($text) . " Stripped safe spaces\n";
echo "//" . strlen(gzdeflate($text)) . " bytes gzdeflated\n";
return $text;
}
// General options
$suffix = ""; // Set to "_src" to use source version
$expiresOffset = 3600 * 24 * 10; // 10 days util client cache expires
@ -51,7 +79,7 @@
// Only gzip the contents if clients and server support it
$encodings = explode(',', strtolower($_SERVER['HTTP_ACCEPT_ENCODING']));
if (in_array('gzip', $encodings) && function_exists('ob_gzhandler'))
ob_start("ob_gzhandler");
@ ob_start("ob_gzhandler"); // Don't let warnings foul up the JS
// Output rest of headers
header("Content-type: text/javascript; charset: UTF-8");
@ -62,7 +90,9 @@
if ($index > -1) {
// Write main script and patch some things
if ($index == 0) {
echo file_get_contents(realpath("tiny_mce" . $suffix . ".js"));
// WP echo file_get_contents(realpath("tiny_mce" . $suffix . ".js"));
$tinymce = file_get_contents(realpath("tiny_mce.js"));
echo wp_compact_tinymce_js($tinymce);
echo "\n\n";
echo "TinyMCE.prototype.loadScript = function() {};\n";
}