Перейти к контенту

peregoudov

Пользователи
  • Число публикаций

    2
  • Регистрация

  • Последнее посещение

Недавние посетители профиля

720 просмотров профиля

Достижения peregoudov

  1. Ну вот код-то я смотрел, только мало что понял. В директории admin/sources/classes/bbcode/custom (куда админ-центр предлагает класть свои php-файлы с кодом для тегов) есть файлы ccs.php и defaults.php. В файле defaults.php определен некий bbcode_parent_class, имеющий три метода: preDbParse, preEditParse и preDisplayParse. Первые два нас не очень интересуют, потому как вроде бы наконец принята правильная политика ничего не парсить при помещении сообщения в базу (и, соответственно, при извлечении из базы для редактирования). А вот функция preDisplayParse как раз и должна, насколько я понимаю, делать из текста, набранного в окне ответа, кусок html-файла, который затем будет послан пользователю при просмотре темы. Теперь смотрим, как в базовом классе определена preDisplayParse. И видим, что никак не определена: ссылается на функцию _replaceText, которая в базовом классе не определена. Она определена в дочерних классах, например, в bbcode_sharedmedia в том же defaults.php. Вот и непонятно, кто портит содержимое тега? Кроме того, вообще не очень ясна идея парсера в контексте наследования. Это понятие объектно-ориентированного программирования (ООП) применяется все-таки к объектам, каковыми в нашем случае естественно считать теги. Но у авторов IPB bbcode_parent_class --- это "парсер". Подозрения усиливаются применением "поля типа" (currentBbcode), что для ООП --- моветон. То есть создается впечатление, что ООП и наследование в данном случае --- не лучшая форма представления кода, потому и выглядит все так запутанно. Так что вопрос остается. Как все-таки обрабатывается текст сообщения? Какие функции вызываются и почему? Кто портит содержимое моего тега? Честно говоря, не понял... Нельзя ли это перевести на русский? P. S. Вопрос с обратной косой, табуляциями и т. п. снимается (если это можно так назвать): оказывается, что все эти глюки возникают только при пользовании формами быстрого редактирования и быстрого ответа. Странно, конечно, что при пользовании формой быстрого редактирования текст сообщения обрабатывается иначе, чем при пользовании полной формой, но это, как говорится, уже второй вопрос
  2. Столкнулся вот с какой проблемой. Хотим перейти на версию 3.3.1. Форум специфический, типа научный , поэтому в старом движке были сделаны кое-какие дополнения, которые ни в коем случае нельзя потерять. В частности, у нас есть дополнительный тег для набора формул в нотации ТеХ. Поэтому сейчас пытаюсь написать соответствующий тег для версии 3.3.1. Тег не простой, содержимое должно хитрым образом обрабатываться, чисто через админ-центр этого не сделать, поэтому приходится писать php-файл. Файл я написал, но при тестировании выяснилось, что до исполнения моего кода кто-то умудряется уже попортить содержимое тега: вместо переводов строки появляются конструкции <br />, а специальные символы оказываются html-кодированными (например, $ превращается в $). Но самое неприятное --- некоторые комбинации из обратной косой и следующего за ней символа интерпретируются особым образом (например, \t превращается в табуляцию). Для формул в нотации ТеХ это поистине ужасно, поскольку с обратной косой начинаются все так называемые командные последовательности ТеХа, представляющие греческие буквы, спецсимволы, дроби и т. д. Эксперименты показали, что даже если просто в сообщении набрать \text, то \t благополучно превращается в табуляцию, а на экране при просмотре красуется лишь ext. Более того, даже если поместить \text в тег code, содержимое которого должно, по идее, отображаться "как есть", все равно остается лишь ext. Соответственно возникают вопросы. Как движок обрабатывает текст сообщения при просмотре? Почему содержимое сообщения (вне каких-либо тегов) и содержимое моего тега оказываются испорченными? Как правильно писать php-файлы для новых тегов (может, я что-то делаю не так)? Наконец, почему здесь (вроде тоже 3.3.1) все нормально отображается? Форум у меня абсолютно чистый, только выставил. Буду признателен за любую помощь и информацию. P. S. Ага, при редактировании и тут слетело!
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.