Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Тематические форумы > HTMLArea, RTE, tinymce_rte и другие визуальные редакторы

Ответ
 
Опции темы Опции просмотра
Старый 22.02.2004, 22:09   #1
Valery Romanchev
Administrator
 
Аватар для Valery Romanchev
 
Регистрация: 23.08.2003
Адрес: Moscow, Russia
Сообщений: 1,926
Отправить сообщение для Valery Romanchev с помощью Skype™
По умолчанию

Помоему, правильный путь такой:
1) в TSConfig
### RTE Configuration CONSTANTS ###
RTE.default {
proc.overruleMode = ts_css
proc.dontConvBRtoParagraph=1
}

#это наверняка не нужно
RTE.default.proc.dontProtectUnknownTags_rte=1

#а это наверняка нужно
RTE.default.proc.dontProtectUnknownTags_db=1

#а вот это не работает, поэтому придется патчить
#файл class.t3lib_parsehtml_proc.php
RTE.default.proc.entryHTMLparser_rte = 0
RTE.proc.entryHTMLparser_rte = 0

#это вроде как работает
RTE.default.proc.entryHTMLparser_db = 1
RTE.default.proc.entryHTMLparser_db{
denyTags=
allowTags=table,tr,td,p,font,div,img,hr,b,i,u,a,br ,pre,strong,em,li,ul,ol,span,h1,h2,h3,h4,h5,h6
noAttrib = table,tr,td,h1,h2,h3,h4,h5,h6
tags {
#это позволяет не резать p при добавлениии в DB
p.rmTagIfNoAttrib=1
}
}


2) Что патчить: class.t3lib_parsehtml_proc.php
см. http://typo3api.ueckermann.de/classt3lib__parsehtml__proc.htm
Пока не могу проверить на своем сайте, как проверю, напишу.
по-моему нужно закоментировать вот это (можно ориетироваться по номерам строк):


01190
// Wrapping the line in <$dT> is not already wrapped:
01191 $testStr = strtolower(trim($parts[$k]));
01192 if (substr($testStr,0,4)!='<div' || substr($testStr,-6)!='</div>') {
01193 if (substr($testStr,0,2)!='<p' || substr($testStr,-4)!='</p>') {
01194 // Only set p-tags if there is not already div or p tags:
01195 $parts[$k]='<'.$dT.'>'.$parts[$k].'</'.$dT.'>';
01196

Вопросы все равно остаются: почему сделано именно так, и ведь, главное, не сделали конфигурируемость!!!
Может я не вижу каких-то подводный камней?
Valery Romanchev вне форума   Ответить с цитированием
Старый 22.02.2004, 22:40   #2
Perignator Temporis
Senior Member
 
Регистрация: 10.02.2004
Сообщений: 114
По умолчанию

Сдается мне, UserFriendly HTML тут вообще ни при чем ибо:
1) RTE использует ИЕ для отображения форматирования.
2) При переключении в HTML View просто берется InnerHTML этого ИЕ-куска и показывается как код в текстбоксе. То есть, все, что делает галка - смета visible между текстбоксом и компанентой ИЕ с передачей туда-обратно InnerHTML.

Что касается форматирования ворда...
Вроде бы я решил эту проблему, написав PHP-функцию по документированным специфическим тегам офиса.. В смысле, функцию, для их вырезания (показывать, наверное, не стану - стыдно, все ж я с ПХП очень слабо дружу, C# больше, смеяться станете ).
Оформил эту функцию в отдельный файл, ну и далее в конфигурации:

page.includeLibs.removeword = fileadmin/scripts/removeword.php

subparts.CONTENT < styles.content.get
subparts.CONTENT.stdWrap.preUserFunc = user_removeword

То есть, понятно, что в базу все идет как есть, зато на этапе формирования HTML-страницы контент чистится и пользователь не видит всякой гадости типа XML namespaces, etc.

Хорошо бы, конечно, такую штуковину прикрутить прямо к RTE, чтобы в базу уже чистый контент писало, но я не нашел, где это можно сделать...
Perignator Temporis вне форума   Ответить с цитированием
Старый 23.02.2004, 00:53   #3
Valery Romanchev
Administrator
 
Аватар для Valery Romanchev
 
Регистрация: 23.08.2003
Адрес: Moscow, Russia
Сообщений: 1,926
Отправить сообщение для Valery Romanchev с помощью Skype™
По умолчанию

Да, насчет переключения в решим Source Code в RTE все правильно.
UserFriendly HTML касается другого:
если включить чекбокс Disable Rich Text Editor, то мы не увидим этих лишних, по мнению Каспера тегов p, div (которые без параметров)
Valery Romanchev вне форума   Ответить с цитированием
Старый 23.02.2004, 01:00   #4
Valery Romanchev
Administrator
 
Аватар для Valery Romanchev
 
Регистрация: 23.08.2003
Адрес: Moscow, Russia
Сообщений: 1,926
Отправить сообщение для Valery Romanchev с помощью Skype™
По умолчанию

Наверняка можно прикрутить removeword.php
где-то в class.t3lib_parsehtml_proc.php ...

На след. неделе постараюсь поискать в каком месте.

Может быть, для чистки word, что можно и тайпоскриптом обойтись:

allowedClasses
list of strings
(Applies for \"ts_transform\" only (function divideIntoLines))

Direction: To DB

Allowed general classnames when content is stored in database. Could be a list matching the number of defined classes you have. Case-insensitive.

This might be a really good idea to do, because when pasting in content from MS word for instance there are a lot of <SPAN> and <P> tags which may have class-names in. So by setting a list of allowed classes, such foreign classnames are removed.

If a classname is not found in this list, the default is to remove the class-attribute.

http://typo3.org/doc.0.html?&tx_extrepmgm_pi1[extUid]=214&tx_extrepmgm_pi1[tocEl]=477&cHash=efe7cbc27b

Valery Romanchev вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 07:12.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория