Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
namespace SGalinski\Tinymce4Rte\Xclass;
/***************************************************************
* Copyright notice
*
* (c) sgalinski Internet Services (http://www.sgalinski.de)
*
* All rights reserved
*
* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
/**
* Overrides the language parser factory to fix a bug related to language overrides.
*
* Currently language overrides are not working if no related translated language file
* exists already inside the extension or l10n directory. The class fixes this behaviour.
*/
class RteHtmlParser extends \TYPO3\CMS\Core\Html\RteHtmlParser {
/**
* Preprocesses the content that is saved into the database to get rid of dangerous newlines
* in lists. Unfortunately they cause problematic paragraphs in the frontend. Can be evaluated
* with nested lists.
*
* @param string $value Input value
* @param array $specConf Special configuration for a field; This is coming from the types-configuration of the field in the TCA. In the types-configuration you can setup features for the field rendering and in particular the RTE takes al its major configuration options from there!
* @param string $direction Direction of the transformation. Two keywords are allowed; "db" or "rte". If "db" it means the transformation will clean up content coming from the Rich Text Editor and goes into the database. The other direction, "rte", is of course when content is coming from database and must be transformed to fit the RTE.
* @param array $thisConfig Parsed TypoScript content configuring the RTE, probably coming from Page TSconfig.
* @return string Output value
*/
public function RTE_transform($value, $specConf, $direction = 'rte', $thisConfig = []) {
$value = parent::RTE_transform($value, $specConf, $direction, $thisConfig);
if ($direction === 'db') {
$value = preg_replace('/[\n]*<(li|ul|ol)/is', '<$1', $value);
$value = preg_replace('/[\n]*<\/(li|ul|ol)/is', '</$1', $value);
$value = preg_replace('/[>]<(ul|ol)/is', ">\n<$1", $value);
}
return $value;
}
}
?>