Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TinyMCE Paste As Plain Text

This is one of the common issue with RTEs on web. Could you please guide me through how to:

  1. Paste as the PLAIN TEXT
  2. Retain the HTML but remove the WORD/HTML styling

I want to do it directly on paste (paste_preprocess callback), without opening the dialogs provided by Paste plugins.

Any thoughts/experiences ?

Thanks,

Imran

like image 466
Saim Avatar asked Nov 08 '10 09:11

Saim


1 Answers

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; } 
like image 102
Thariama Avatar answered Sep 27 '22 23:09

Thariama