TinyMCE Paste As Plain Text
This is what i do to get paste plain text.
1. paste_preprocess setting (in tinymce init)
paste_preprocess : function(pl, o) { //example: keep bold,italic,underline and paragraphs //o.content = strip_tags( o.content,'<b><u><i><p>' ); // remove all tags => plain text o.content = strip_tags( o.content,'' );},
2. function strip_tags (on the main document)
// Strips HTML and PHP tags from a string // returns 1: 'Kevin <b>van</b> <i>Zonneveld</i>'// example 2: strip_tags('<p>Kevin <img src="someimage.png" onmouseover="someFunction()">van <i>Zonneveld</i></p>', '<p>');// returns 2: '<p>Kevin van Zonneveld</p>'// example 3: strip_tags("<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>", "<a>");// returns 3: '<a href='http://kevin.vanzonneveld.net'>Kevin van Zonneveld</a>'// example 4: strip_tags('1 < 5 5 > 1');// returns 4: '1 < 5 5 > 1'function strip_tags (str, allowed_tags){ var key = '', allowed = false; var matches = []; var allowed_array = []; var allowed_tag = ''; var i = 0; var k = ''; var html = ''; var replacer = function (search, replace, str) { return str.split(search).join(replace); }; // Build allowes tags associative array if (allowed_tags) { allowed_array = allowed_tags.match(/([a-zA-Z0-9]+)/gi); } str += ''; // Match tags matches = str.match(/(<\/?[\S][^>]*>)/gi); // Go through all HTML tags for (key in matches) { if (isNaN(key)) { // IE7 Hack continue; } // Save HTML tag html = matches[key].toString(); // Is tag not in allowed list? Remove from str! allowed = false; // Go through all allowed tags for (k in allowed_array) { // Init allowed_tag = allowed_array[k]; i = -1; if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+'>');} if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+' ');} if (i != 0) { i = html.toLowerCase().indexOf('</'+allowed_tag) ;} // Determine if (i == 0) { allowed = true; break; } } if (!allowed) { str = replacer(html, "", str); // Custom replace. No regexing } } return str;}
Actually, you can now just do this:
plugins: 'paste',...paste_auto_cleanup_on_paste : true,paste_remove_styles: true,paste_remove_styles_if_webkit: true,paste_strip_class_attributes: true,
Credit goes to: http://www.miuaiga.com/index.cfm/2010/1/7/New-TinyMCE-lets-you-paste-as-plain-text-automatically
There is now a new option that replaces all of the above:
tinymce.init({ paste_as_text: true});
See http://www.tinymce.com/wiki.php/Configuration:paste_as_text
or in django-tinymce, in the settings.py:
TINYMCE_DEFAULT_CONFIG = { 'paste_as_text': True,}