LonerD 20 Опубликовано: 5 января 2012 Рассказать Опубликовано: 5 января 2012 (изменено) Две ошибки. Первая - в версиях 9.3-9.5 точно (может, и раньше), вторая ошибка имеется в движке уже года два-три минимум и до сих пор не пофиксена. 1. Наблюдается и в админке при редактировании новости, и просто на сайте - при написании комментария. Имеется уже некоторый введённый текст. Помещаем курсор в самое начало первой строки текста и нажимаем любой бб-код (жирный шрифт, вставка спойлера, вставка цитаты и т.д...). Код вставляется не в указанное место, а в самый конец текста. Если мы вставляем код где-нибудь в середине текста, или даже на второй строке (если первая, скажем, пустая) - всё нормально, код вставляется на месте курсора. Ошибка именно если курсор стоит в самом начале текста. 2. Ошибка при редактировании новости через админку. Пример на основе краткого и полного описания новости. В краткой и полной новости есть некоторый текст. Курсор находится в краткой новости. Выделяем некоторый текст в полной новости. При этом курсор, разумеется переходит в поле полной новости (это в этом легко убедиться, начав что-нибудь печатать - печатаемый текст заменит собой выделенный) Нажимаем какой-нибудь тег (например, жирный шрифт или цитата, спойлер, код...) Код тега вставляется не слева и справа от выделенного текста (как должно быть), а в краткой (!?) новости на том месте, где когда-то, до выделения, располагался курсор. А для того, чтобы выделенный текст был таки обрамлён тегом, - надо вначале кликнуть мышкой в поле полной новости, только после этого выделить текст, и тогда уже нажать на кнопочку тега. Вроде понятно об`яснил и расписал всё. Если не удастся повторить - могу привести видео. PS. Что-то на данном форуме буква "твёрдый знак" не вводится Изменено 5 января 2012 пользователем LonerD Цитата Ссылка на сообщение Поделиться на других сайтах
Adobe 111 Опубликовано: 5 января 2012 Рассказать Опубликовано: 5 января 2012 1. Наблюдается и в админке при редактировании новости, и просто на сайте - при написании комментария. Имеется уже некоторый введённый текст. Помещаем курсор в самое начало первой строки текста и нажимаем любой бб-код (жирный шрифт, вставка спойлера, вставка цитаты и т.д...). Код вставляется не в указанное место, а в самый конец текста. Если мы вставляем код где-нибудь в середине текста, или даже на второй строке (если первая, скажем, пустая) - всё нормально, код вставляется на месте курсора. Ошибка именно если курсор стоит в самом начале текста. Да кстати, это старая песня PS. Что-то на данном форуме буква "твёрдый знак" не вводится Выкиньте оперу и поставьте нормальный браузер Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 5 января 2012 Рассказать Опубликовано: 5 января 2012 1. Наблюдается и в админке при редактировании новости, и просто на сайте - при написании комментария. Имеется уже некоторый введённый текст. Помещаем курсор в самое начало первой строки текста и нажимаем любой бб-код (жирный шрифт, вставка спойлера, вставка цитаты и т.д...). Код вставляется не в указанное место, а в самый конец текста. Если мы вставляем код где-нибудь в середине текста, или даже на второй строке (если первая, скажем, пустая) - всё нормально, код вставляется на месте курсора. Ошибка именно если курсор стоит в самом начале текста. Эту проблему исправим в следующей версии, о ней никто не говорил, я ее просто не видел. Выделяем некоторый текст в полной новости. При этом курсор, разумеется переходит в поле полной новости (это в этом легко убедиться, начав что-нибудь печатать - печатаемый текст заменит собой выделенный) Нажимаем какой-нибудь тег (например, жирный шрифт или цитата, спойлер, код...) Код тега вставляется не слева и справа от выделенного текста (как должно быть), а в краткой (!?) новости на том месте, где когда-то, до выделения, располагался курсор. Это уже не ошибка скрипта, а особенность браузеров, скрипт узнает о том что поле сменилось по событию onclick, так вот если начать сразу выделение, без клика по полю, браузер не генерирует событие onclick, и соответветственно скрипт не знает что вы куда либо переместили курсор. Нужно сначала кликнуть по нужному полю в нужном месте, а потом уже выделять текст. Цитата Ссылка на сообщение Поделиться на других сайтах
Defin 0 Опубликовано: 12 февраля 2012 Рассказать Опубликовано: 12 февраля 2012 (изменено) Раз уж есть тема про BB коды, продолжу тут: Версия 9.5. Если в комментариях не закрыть BB код, например S, B, U, I, то при публикации комментария, всё что идет за этим комментарием становится соответственно зачеркнутымжирнымподчеркнутымкурсивом до конца страницы. Т.к в комментарии BB код преобразуется в незакрытый тег. Celsoft о проблеме знает, обещал поправить в следующей версии, но может кто знает как поправить это сейчас? Просто повадился один пользователь специально оставлять такие комментарии... Может не в парсере, может можно как-то каждый комментарий "изолировать", чтобы теги в нем не распространялись на всё остальное? Добавлено позже: Нашел временный костыль. Может кому пригодится <table border="0" cellspacing="0" cellpadding="0"><tr><td>{comment}</td></tr></table> закроет все теги в комменте. Вернее их браузер сам закроет при отображении и они не будут влиять на весь остальной контент, но сами теги, конечно, останутся незакрытыми. Изменено 12 февраля 2012 пользователем Defin Цитата Ссылка на сообщение Поделиться на других сайтах
MSK 289 Опубликовано: 15 февраля 2012 Рассказать Опубликовано: 15 февраля 2012 Пока можно сделать так: замените $source = str_ireplace( "[b]", "<b>", str_ireplace( "[/b]", "</b>", $source ) ); $source = str_ireplace( "[i]", "<i>", str_ireplace( "[/i]", "</i>", $source ) ); $source = str_ireplace( "[u]", "<u>", str_ireplace( "[/u]", "</u>", $source ) ); $source = str_ireplace( "[s]", "<s>", str_ireplace( "[/s]", "</s>", $source ) ); на это $count_start = substr_count ($source, "[b]"); $count_end = substr_count ($source, "[/b]"); if ($count_start AND $count_start == $count_end) { $source = str_ireplace( "[b]", "<b>", str_ireplace( "[/b]", "</b>", $source ) ); } $count_start = substr_count ($source, "[i]"); $count_end = substr_count ($source, "[/i]"); if ($count_start AND $count_start == $count_end) { $source = str_ireplace( "[i]", "<i>", str_ireplace( "[/i]", "</i>", $source ) ); } $count_start = substr_count ($source, "[u]"); $count_end = substr_count ($source, "[/u]"); if ($count_start AND $count_start == $count_end) { $source = str_ireplace( "[u]", "<u>", str_ireplace( "[/u]", "</u>", $source ) ); } $count_start = substr_count ($source, "[s]"); $count_end = substr_count ($source, "[/s]"); if ($count_start AND $count_start == $count_end) { $source = str_ireplace( "[s]", "<s>", str_ireplace( "[/s]", "</s>", $source ) ); } Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.