- Fix hanling of HTML entity strings in plai text messages
1 files added
3 files modified
| | |
| | | - Fix handling of folders with name "0" (#1487119) |
| | | - Fix handling of folders with "<>" characters in name |
| | | - jQuery 1.4.4 |
| | | - Fix handling of HTML entity strings in plain text messages |
| | | |
| | | RELEASE 0.4.2 |
| | | ------------- |
| | |
| | | '/&(apos|rsquo|lsquo|#8216|#8217);/i', // Single quotes |
| | | '/>/i', // Greater-than |
| | | '/</i', // Less-than |
| | | '/&(amp|#38);/i', // Ampersand |
| | | '/&(copy|#169);/i', // Copyright |
| | | '/&(trade|#8482|#153);/i', // Trademark |
| | | '/&(reg|#174);/i', // Registered |
| | |
| | | '/&(bull|#149|#8226);/i', // Bullet |
| | | '/&(pound|#163);/i', // Pound sign |
| | | '/&(euro|#8364);/i', // Euro sign |
| | | '/&(amp|#38);/i', // Ampersand: see _converter() |
| | | '/[ ]{2,}/' // Runs of spaces, post-handling |
| | | ); |
| | | |
| | |
| | | "'", // Single quotes |
| | | '>', |
| | | '<', |
| | | '&', |
| | | '(c)', |
| | | '(tm)', |
| | | '(R)', |
| | |
| | | '*', |
| | | '£', |
| | | 'EUR', // Euro sign. ? |
| | | '|+|amp|+|', // Ampersand: see _converter() |
| | | ' ' // Runs of spaces, post-handling |
| | | ); |
| | | |
| | |
| | | $text = preg_replace_callback($this->callback_search, array('html2text', '_preg_callback'), $text); |
| | | |
| | | // Remove unknown/unhandled entities (this cannot be done in search-and-replace block) |
| | | $text = preg_replace('/&#?[a-z0-9]{2,7};/i', '', $text); |
| | | $text = preg_replace('/&([a-zA-Z0-9]{2,6}|#[0-9]{2,4});/', '', $text); |
| | | |
| | | // Convert "|+|amp|+|" into "&", need to be done after handling of unknown entities |
| | | // This properly handles situation of "&quot;" in input string |
| | | $text = str_replace('|+|amp|+|', '&', $text); |
| | | |
| | | // Strip any other HTML tags |
| | | $text = strip_tags($text, $this->allowed_tags); |
| | |
| | | $out .= $msgtype->show(); |
| | | |
| | | // If desired, set this textarea to be editable by TinyMCE |
| | | if ($isHtml) $attrib['class'] = 'mce_editor'; |
| | | if ($isHtml) { |
| | | $attrib['class'] = 'mce_editor'; |
| | | $textarea = new html_textarea($attrib); |
| | | $out .= $textarea->show($MESSAGE_BODY); |
| | | } |
| | | else { |
| | | $textarea = new html_textarea($attrib); |
| | | $out .= $textarea->show(''); |
| | | // quote plain text, inject into textarea |
| | | $table = get_html_translation_table(HTML_SPECIALCHARS); |
| | | $MESSAGE_BODY = strtr($MESSAGE_BODY, $table); |
| | | $out = substr($out, 0, -11) . $MESSAGE_BODY . '</textarea>'; |
| | | } |
| | | |
| | | $out .= $form_end ? "\n$form_end" : ''; |
| | | |
| | | $OUTPUT->set_env('composebody', $attrib['id']); |
New file |
| | |
| | | <?php |
| | | |
| | | /** |
| | | * Test class to test html2text class |
| | | * |
| | | * @package Tests |
| | | */ |
| | | class rcube_test_html2text extends UnitTestCase |
| | | { |
| | | |
| | | function __construct() |
| | | { |
| | | $this->UnitTestCase("HTML-to-Text conversion tests"); |
| | | |
| | | } |
| | | |
| | | function test_html2text() |
| | | { |
| | | $data = array( |
| | | 0 => array( |
| | | 'title' => 'Test entry', |
| | | 'in' => '', |
| | | 'out' => '', |
| | | ), |
| | | 1 => array( |
| | | 'title' => 'Basic HTML entities', |
| | | 'in' => '"&', |
| | | 'out' => '"&', |
| | | ), |
| | | 2 => array( |
| | | 'title' => 'HTML entity string', |
| | | 'in' => '&quot;', |
| | | 'out' => '"', |
| | | ), |
| | | ); |
| | | |
| | | $ht = new html2text(null, false, false); |
| | | |
| | | foreach ($data as $item) { |
| | | $ht->set_html($item['in']); |
| | | $res = $ht->get_text(); |
| | | $this->assertEqual($item['out'], $res, $item['title']); |
| | | } |
| | | } |
| | | |
| | | } |