forked from extern/egroupware
Mail: Fix bullet & number to text conversion failed with non-ascii characters
This commit is contained in:
parent
371aede01f
commit
83e2d70222
@ -492,7 +492,11 @@ class Html
|
|||||||
return $html;
|
return $html;
|
||||||
}
|
}
|
||||||
|
|
||||||
$dom = \DOMDocument::loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD | LIBXML_NOBLANKS);
|
$dom = new \DOMDocument('1.0','UTF-8');
|
||||||
|
$dom->loadHTML(
|
||||||
|
'<?xml encoding="UTF-8">'. Api\Translation::convert($html,false, 'utf8'),
|
||||||
|
LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD | LIBXML_NOBLANKS
|
||||||
|
);
|
||||||
if(!$dom)
|
if(!$dom)
|
||||||
{
|
{
|
||||||
// Failed to parse
|
// Failed to parse
|
||||||
@ -508,14 +512,23 @@ class Html
|
|||||||
$list_text = "\r\n";
|
$list_text = "\r\n";
|
||||||
$item_count = 0;
|
$item_count = 0;
|
||||||
$prefix = $list_type == 'ul' ? ' * ' : '. ';
|
$prefix = $list_type == 'ul' ? ' * ' : '. ';
|
||||||
foreach($list->getElementsByTagName('li') as $element)
|
$elements = $list->getElementsByTagName('li');
|
||||||
|
foreach($elements as $element)
|
||||||
{
|
{
|
||||||
$list_text .= ($list_type == 'ol' ? ' '. ++$item_count : '') . $prefix . $element->textContent . "\r\n";
|
if($element->tagName == 'li')
|
||||||
|
{
|
||||||
|
$list_text .= ($list_type == 'ol' ? ' '. ++$item_count : '') . $prefix . $element->textContent . "\r\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$list_text .= $element->nodeValue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$list->parentNode->replaceChild($dom->createTextNode($list_text), $list);
|
$list->parentNode->replaceChild($dom->createTextNode($list_text), $list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$dom->removeChild($dom->firstChild);
|
||||||
|
|
||||||
return $dom->saveHTML();
|
return $dom->saveHTML();
|
||||||
}
|
}
|
||||||
|
@ -50,17 +50,43 @@ class HtmlTest extends TestCase {
|
|||||||
['Not actually HTML', 'Not actually HTML'],
|
['Not actually HTML', 'Not actually HTML'],
|
||||||
['HTML, but <b>NO</b> list here', 'HTML, but <b>NO</b> list here'],
|
['HTML, but <b>NO</b> list here', 'HTML, but <b>NO</b> list here'],
|
||||||
["<p>Unordered list:<ul><li>First</li>\r\n<li>Second</li>\r\n<li>Third</li>\r\n</ul>\r\nPost text</p>",
|
["<p>Unordered list:<ul><li>First</li>\r\n<li>Second</li>\r\n<li>Third</li>\r\n</ul>\r\nPost text</p>",
|
||||||
"<p>Unordered list:\r\n * First\r\n * Second\r\n * Third\r\n<p>\r\nPost text</p></p>\n"],
|
"<p>Unordered list:</p>\r\n * First\r\n * Second\r\n * Third\r\n<p>\r\nPost text</p>\n"],
|
||||||
["Ordered list:".
|
["Ordered list:".
|
||||||
"<ol><li>First</li>\r\n"
|
"<ol><li>First</li>\r\n"
|
||||||
. "<li>Second</li>\r\n"
|
. "<li>Second</li>\r\n"
|
||||||
. "<li>Third</li>\r\n"
|
. "<li>Third</li>\r\n"
|
||||||
. "</ol>Post text",
|
. "</ol>Post text",
|
||||||
"<p>Ordered list:\r\n"
|
"<p>Ordered list:</p>\r\n"
|
||||||
. " 1. First\r\n"
|
. " 1. First\r\n"
|
||||||
. " 2. Second\r\n"
|
. " 2. Second\r\n"
|
||||||
. " 3. Third\r\n"
|
. " 3. Third\r\n"
|
||||||
. "<p>Post text</p></p>\n"],
|
. "<p>Post text</p>\n"],
|
||||||
|
[
|
||||||
|
'
|
||||||
|
<ol>
|
||||||
|
<li><span style="width: 100%; display: inline; font-family: arial, helvetica, sans-serif; font-size: 12pt;">Nummerierung </span></li>
|
||||||
|
<li><span style="width: 100%; display: inline; font-family: arial, helvetica, sans-serif; font-size: 12pt;">zweitens</span></li>
|
||||||
|
<li><span style="width: 100%; display: inline; font-family: arial, helvetica, sans-serif; font-size: 12pt;">drittens</span></li>
|
||||||
|
<li><span style="width: 100%; display: inline; font-family: arial, helvetica, sans-serif; font-size: 12pt;">viertens</span></li>
|
||||||
|
</ol>
|
||||||
|
<p><span style="width: 100%; display: inline; font-family: arial, helvetica, sans-serif; font-size: 12pt;">dann normaler Text</span></p>
|
||||||
|
<ul>
|
||||||
|
<li><span style="width: 100%; display: inline; font-family: arial, helvetica, sans-serif; font-size: 12pt;">aufzählung</span></li>
|
||||||
|
<li><span style="width: 100%; display: inline; font-family: arial, helvetica, sans-serif; font-size: 12pt;">mit verschiedenen punkten</span></li>
|
||||||
|
<li><span style="width: 100%; display: inline; font-family: arial, helvetica, sans-serif; font-size: 12pt;">dritter spiegelstrich</span></li>
|
||||||
|
<li><span style="width: 100%; display: inline; font-family: arial, helvetica, sans-serif; font-size: 12pt;">vierter strich</span></li>
|
||||||
|
</ul>
|
||||||
|
<pre> </pre>',
|
||||||
|
"\r\n 1. Nummerierung \r
|
||||||
|
2. zweitens\r
|
||||||
|
3. drittens\r
|
||||||
|
4. viertens\r
|
||||||
|
<p><span style=\"width: 100%; display: inline; font-family: arial, helvetica, sans-serif; font-size: 12pt;\">dann normaler Text</span></p>\r
|
||||||
|
* aufzählung\r
|
||||||
|
* mit verschiedenen punkten\r
|
||||||
|
* dritter spiegelstrich\r
|
||||||
|
* vierter strich\r\n<pre> </pre>\n"
|
||||||
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user