30 $this->fixture = new \TYPO3\CMS\Core\Html\HtmlParser();
37 $template =
'###SINGLEMARKER1### 38 <!-- ###FOO### begin --> 39 <!-- ###BAR### begin --> 41 <!-- ###BAR### end --> 42 <!-- ###FOOTER### begin --> 44 <!-- ###FOOTER### end --> 45 <!-- ###FOO### end -->';
62 'Single marker' => array(
65 '###SINGLEMARKER###' =>
'Value 1' 72 'Subpart marker' => array(
75 '###SINGLEMARKER1###' =>
'Value 1',
80 '###SINGLEMARKER2###' =>
'Value 2.1' 83 '###SINGLEMARKER2###' =>
'Value 2.2' 86 '###FOOTER###' => array(
88 '###SINGLEMARKER3###' =>
'Value 3.1' 91 '###SINGLEMARKER3###' =>
'Value 3.2' 102 'Subpart marker with wrap' => array(
105 'SINGLEMARKER1' =>
'Value 1',
110 'SINGLEMARKER2' =>
'Value 2.1' 113 'SINGLEMARKER2' =>
'Value 2.2' 118 'SINGLEMARKER3' =>
'Value 3.1' 121 'SINGLEMARKER3' =>
'Value 3.2' 132 'Subpart marker with lower marker array keys' => array(
135 '###singlemarker1###' =>
'Value 1',
136 '###foo###' => array(
138 '###bar###' => array(
140 '###singlemarker2###' =>
'Value 2.1' 143 '###singlemarker2###' =>
'Value 2.2' 146 '###footer###' => array(
148 '###singlemarker3###' =>
'Value 3.1' 151 '###singlemarker3###' =>
'Value 3.2' 162 'Subpart marker with unused markers' => array(
165 '###FOO###' => array(
167 '###BAR###' => array(
169 '###SINGLEMARKER2###' =>
'Value 2.1' 172 '###FOOTER###' => array(
174 '###SINGLEMARKER3###' =>
'Value 3.1' 193 'Subpart marker with empty subpart' => array(
196 '###SINGLEMARKER1###' =>
'Value 1',
197 '###FOO###' => array(
199 '###BAR###' => array(
201 '###SINGLEMARKER2###' =>
'Value 2.1' 204 '###SINGLEMARKER2###' =>
'Value 2.2' 207 '###FOOTER###' => array()
232 $this->assertSame($expected, $this->fixture->substituteMarkerAndSubpartArrayRecursive($template, $markersAndSubparts, $wrap, $uppercase, $deleteUnused));
240 'single-line CDATA' => array(
241 '/*<![CDATA[*/ <hello world> /*]]>*/',
242 '/*<![CDATA[*/ <hello world> /*]]>*/',
244 'multi-line CDATA #1' => array(
245 '/*<![CDATA[*/' . LF .
'<hello world> /*]]>*/',
246 '/*<![CDATA[*/' . LF .
'<hello world> /*]]>*/',
248 'multi-line CDATA #2' => array(
249 '/*<![CDATA[*/ <hello world>' . LF .
'/*]]>*/',
250 '/*<![CDATA[*/ <hello world>' . LF .
'/*]]>*/',
252 'multi-line CDATA #3' => array(
253 '/*<![CDATA[*/' . LF .
'<hello world>' . LF .
'/*]]>*/',
254 '/*<![CDATA[*/' . LF .
'<hello world>' . LF .
'/*]]>*/',
266 $result = $this->fixture->XHTML_clean($source);
267 $this->assertSame($expected,
$result);
275 'Span tag with no attrib' => array(
279 'Span tag with allowed id attrib' => array(
280 '<span id="id">text</span>',
281 '<span id="id">text</span>' 283 'Span tag with disallowed style attrib' => array(
284 '<span style="line-height: 12px;">text</span>',
296 'allowTags' =>
'span',
299 'allowedAttribs' =>
'id',
300 'rmTagIfNoAttrib' => 1
312 'allowTags' =>
'div,span',
313 'rmTagIfNoAttrib' =>
'span',
314 'globalNesting' =>
'div,span' 316 $content =
'<span></span><span id="test"><div></span></div>';
317 $expectedResult =
'<span id="test"></span>';
326 'Valid nesting is untouched' => array(
330 'Valid nesting with content is untouched' => array(
331 'testa<B>test1<I>test2</B>test3</I>testb',
332 'testa<B>test1<I>test2</B>test3</I>testb' 334 'Superflous tags are removed' => array(
335 '</B><B><I></B></I></B>',
338 'Superflous tags with content are removed' => array(
339 'test1</B>test2<B>test3<I>test4</B>test5</I>test6</B>test7',
340 'test1test2<B>test3<I>test4</B>test5</I>test6test7' 342 'Another valid nesting test' => array(
343 '<span><div></span></div>',
344 '<span><div></span></div>',
357 'allowTags' =>
'div,span,b,i',
358 'localNesting' =>
'div,span,b,i',
368 'Valid nesting is untouched' => array(
372 'Valid nesting with content is untouched' => array(
373 'testa<B>test1<I>test2</I>test3</B>testb',
374 'testa<B>test1<I>test2</I>test3</B>testb' 376 'Invalid nesting is cleaned' => array(
377 '</B><B><I></B></I></B>',
380 'Invalid nesting with content is cleaned' => array(
381 'test1</B>test2<B>test3<I>test4</B>test5</I>test6</B>test7',
382 'test1test2<B>test3test4</B>test5test6test7' 384 'Another invalid nesting test' => array(
385 '<span><div></span></div>',
399 'allowTags' =>
'span,div,b,i',
400 'globalNesting' =>
'span,div,b,i',
413 $config = $this->fixture->HTMLparserConfig($tsConfig);
414 return $this->fixture->HTMLcleaner($content, $config[0], $config[1], $config[2], $config[3]);
tagCorrectlyRemovedWhenRmTagIfNoAttribIsConfigured($content, $expectedResult)
static localNestingCorrectlyRemovesInvalidTagsDataProvider()
globalNestingCorrectlyRemovesInvalidTags($content, $expectedResult)
if($list_of_literals) if(!empty($literals)) if(!empty($literals)) $result
Analyse literals to prepend the N char to them if their contents aren't numeric.
cDataWillRemainUnmodifiedDataProvider()
parseConfigAndCleanHtml(array $tsConfig, $content)
xHtmlCleaningDoesNotModifyCDATA($source, $expected)
localNestingCorrectlyRemovesInvalidTags($content, $expectedResult)
static spanTagCorrectlyRemovedWhenRmTagIfNoAttribIsConfiguredDataProvider()
static globalNestingCorrectlyRemovesInvalidTagsDataProvider()
substituteMarkerAndSubpartArrayRecursiveResolvesMarkersAndSubpartsArrayDataProvider()
substituteMarkerAndSubpartArrayRecursiveResolvesMarkersAndSubpartsArray($template, $markersAndSubparts, $wrap, $uppercase, $deleteUnused, $expected)
rmTagIfNoAttribIsConfiguredDoesNotChangeNestingType()