Автоматический перенос строк только при написании комментария
Параметр cfgSetAutoBrMode отвечает за автоматическую растановку переноса строк в тексте, но если в случае с добавлением топика с использованием TinyMCE от переносов лучше отказатся, то в случае с добавлением комментариев без них не обойтись.
Если cfgSetAutoBrMode принимает значение true, то Jevix автоматически расставляет Br/ в конце каждой строки (заменяет символ окончания строки \n). Это приводит к несколько неожиданным результатам при верстке топиков — лишние переносы возникают повсюду (после заголовков, списков, строк таблицы и т.д.)
После изменения параметра cfgSetAutoBrMode (classes\modules\sys_text\Text.class.php) на false, и некоторой доработки настроек TinyMCE (\templates\skin\Имя шаблона\actions\ActionTopic\add.tpl) удалось добиться красивой верстки топика, без лишних Br, и с параграфами вместо простого переноса строки, но возникли проблемы с добавлением комментариев.
Дело в том, что при cfgSetAutoBrMode(false), парсер отказывается заменять символ конца строки (\n) на BR в комментариях. В итоге текст комментария не возможно разбить на абзацы.
Я был уверен, что существует простой способ победить эту проблему, и поэтому потратил на его поиск половину сегодняшнего дня. Так и не найдя красивого решения, пришлось грубо вторгаться в код:
Нашел в \include\ajax\commentAdd.php, место где вызывается парсер комментария
Парсеру нужно было сообщить, что он обрабатывает именно комментарий, не нашел ничего лучше чем добавить флаг
Заменил на:
Далее в classes\modules\sys_text\Text.class.php, нашел функцию парсера
и добавил в ее определение переменную $type хранящую флаг
и в самое начало функции проверку:
Таким образом при парсинге комментария расстановка переноса строки разрешена, а во всех остальных случаях запрещена
Очень не хотелось выходить к людям с пустыми вопросами, сам не люблю на такие отвечать. Но теперь надеюсь кто-нибудь объяснит, как это должно делатся правильно.
Если cfgSetAutoBrMode принимает значение true, то Jevix автоматически расставляет Br/ в конце каждой строки (заменяет символ окончания строки \n). Это приводит к несколько неожиданным результатам при верстке топиков — лишние переносы возникают повсюду (после заголовков, списков, строк таблицы и т.д.)
После изменения параметра cfgSetAutoBrMode (classes\modules\sys_text\Text.class.php) на false, и некоторой доработки настроек TinyMCE (\templates\skin\Имя шаблона\actions\ActionTopic\add.tpl) удалось добиться красивой верстки топика, без лишних Br, и с параграфами вместо простого переноса строки, но возникли проблемы с добавлением комментариев.
Дело в том, что при cfgSetAutoBrMode(false), парсер отказывается заменять символ конца строки (\n) на BR в комментариях. В итоге текст комментария не возможно разбить на абзацы.
Я был уверен, что существует простой способ победить эту проблему, и поэтому потратил на его поиск половину сегодняшнего дня. Так и не найдя красивого решения, пришлось грубо вторгаться в код:
Нашел в \include\ajax\commentAdd.php, место где вызывается парсер комментария
$sText=$oEngine->Text_Parser($aParams['comment_text']);
Парсеру нужно было сообщить, что он обрабатывает именно комментарий, не нашел ничего лучше чем добавить флаг
Заменил на:
$sText=$oEngine->Text_Parser($aParams['comment_text'],"comment");
Далее в classes\modules\sys_text\Text.class.php, нашел функцию парсера
public function Parser($sText) {
и добавил в ее определение переменную $type хранящую флаг
public function Parser($sText,$type) {
и в самое начало функции проверку:
if($type=="comment")
$this->oJevix->cfgSetAutoBrMode(true);
else
$this->oJevix->cfgSetAutoBrMode(false);
Таким образом при парсинге комментария расстановка переноса строки разрешена, а во всех остальных случаях запрещена
Очень не хотелось выходить к людям с пустыми вопросами, сам не люблю на такие отвечать. Но теперь надеюсь кто-нибудь объяснит, как это должно делатся правильно.
1 комментарий