О пользе RTE
Уже не первый раз такое встречаю, вот решил и вам показать, насколько весело жить с Rich Text Editor:
Это, если непонятно, вписанный прямо в ТВ параметр вызов левых скриптов с загрузкой рекламы в iFrame.
Делает это вирусня на компьютере редактора сайта. Редактор спокойно себе пишет заметки и даже не знает, что к ним что-то добавляется, так как RTE это молча скрывает. В итоге, на сайте вылезает вот такое
Оно может быть не только в текстовых ТВ, но и в контенте документа. А может и в шаблонах — кто его знает?
В общем, имейте в виду. Лично я использую редактор Ace, который от меня ничего не прячет, и вывожу тексты через Markdown или Jevix.
Это, если непонятно, вписанный прямо в ТВ параметр вызов левых скриптов с загрузкой рекламы в iFrame.
Делает это вирусня на компьютере редактора сайта. Редактор спокойно себе пишет заметки и даже не знает, что к ним что-то добавляется, так как RTE это молча скрывает. В итоге, на сайте вылезает вот такое
Оно может быть не только в текстовых ТВ, но и в контенте документа. А может и в шаблонах — кто его знает?
В общем, имейте в виду. Лично я использую редактор Ace, который от меня ничего не прячет, и вывожу тексты через Markdown или Jevix.
Комментарии: 10
Потому и не даём клиентам доступ в админку. Насмотрелись их wysiwyg художеств.
Надо плагин, который будет использовать pQuery и при событии сохранения документа в TV — полях проверять наличие «запрещенных тегов» типа script ну и вырезать их. Добавить возможность исключения определенных TV из списка.
Можно решить стандартным jevix'ом примерно так:
<?php
if ($modx->event->name == 'OnDocFormSave') {
$template = $resource->get('template');
if ($template != 0) {
$id = $resource->get('id');
//В наборе параметров отключены неугодные теги аля script, iframe и прочие
$jevixParams = $modx->getObject('modPropertySet',array('name'=>'Ticket'));
$jevixOptions = $jevixParams->getProperties();
//content
if (strlen($content = $resource->getContent()) > 0) {
$jevixOptions['input'] = $content;
$content = $modx->runSnippet('jevix', $jevixOptions);
$resource->setContent($content);
}
switch ($template) {
//Шаблон с доп. тв, которое нужно обработать
case 7:
if (strlen($custom_tv = $resource->getTVValue('custom_tv')) > 0) {
$jevixOptions['input'] = $custom_tv;
$custom_tv = $modx->runSnippet('jevix', $jevixOptions);
$resource->setTVValue('custom_tv', $custom_tv);
}
break;
}
}
$resource->save();
}
вот средство для сносного внедрения RTE www.bioinformatics.org/phplabware/internal_utilities/htmLawed/
после чистки ничего не оставит лишнего
после чистки ничего не оставит лишнего
Пусть HTML лучше учат. Не переломятся, выучить 10 тегов.
Плюсую, всерьез изучил htmLawed, гибкие настройки, малый расход памяти, работает по принципу белого списка, выдает валидный HTML код, сам преобразует устаревшие тэги в современные и много, много всего.
если не затруднит — делитесь опытом внедрения htmLawed в MODX -) я до этого использовал htmlpurifier.org/ — но он тяжеловат, + около 200 файлов кода. если есть желающие — приведу пример реализации в плагине для чистки контента от всяких ненужных вещей
Скорее, заголовок мог бы быть «О безграмотности контент менеджеров и владельцев сайтов». ))) Но безграмотным и Ace с Markdown будут в тягость. Остается Jevix!
Василий тыкни носом, где посмотреть как организовать это хозяйство…
Все стоит и редактор Ace и Markdown и Jevix но так и не смог разобраться как навести красоту.
Все стоит и редактор Ace и Markdown и Jevix но так и не смог разобраться как навести красоту.
Мой пока что кривой и недоделанный Builder решает проблему отображая все script в виде блока codemirror рядом с rte: modx.pro/solutions/7881-content-editor-tools-0-8-and-subject-to-adminki/. Кроме того, насколько мне помнится и в TinyMCE и в CKEditor можно указать список возможных тегов.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.