LonerD 20 Опубликовано: 5 января 2012 Рассказать Опубликовано: 5 января 2012 Две ошибки. Первая - в версиях 9.3-9.5 точно (может, и раньше), вторая ошибка имеется в движке уже года два-три минимум и до сих пор не пофиксена. 1. Наблюдается и в админке при редактировании новости, и просто на сайте - при написании комментария. Имеется уже некоторый введённый текст. Помещаем курсор в самое начало первой строки текста и нажимаем любой бб-код (жирный шрифт, вставка спойлера, вставка цитаты и т.д...). Код вставляется не в указанное место, а в самый конец текста. Если мы вставляем код где-нибудь в середине текста, или даже на второй строке (если первая, скажем, пустая) - всё нормально, код вставляется на месте курсора. Ошибка именно если курсор стоит в самом начале текста. 2. Ошибка при редактировании новости через админку. Пример на основе краткого и полного описания новости. В краткой и полной новости есть некоторый текст. Курсор находится в краткой новости. Выделяем некоторый текст в полной новости. При этом курсор, разумеется переходит в поле полной новости (это в этом легко убедиться, начав что-нибудь печатать - печатаемый текст заменит собой выделенный) Нажимаем какой-нибудь тег (например, жирный шрифт или цитата, спойлер, код...) Код тега вставляется не слева и справа от выделенного текста (как должно быть), а в краткой (!?) новости на том месте, где когда-то, до выделения, располагался курсор. А для того, чтобы выделенный текст был таки обрамлён тегом, - надо вначале кликнуть мышкой в поле полной новости, только после этого выделить текст, и тогда уже нажать на кнопочку тега. Вроде понятно об`яснил и расписал всё. Если не удастся повторить - могу привести видео. PS. Что-то на данном форуме буква "твёрдый знак" не вводится Ссылка на сообщение Поделиться на других сайтах
Adobe 111 Опубликовано: 5 января 2012 Рассказать Опубликовано: 5 января 2012 1. Наблюдается и в админке при редактировании новости, и просто на сайте - при написании комментария. Имеется уже некоторый введённый текст. Помещаем курсор в самое начало первой строки текста и нажимаем любой бб-код (жирный шрифт, вставка спойлера, вставка цитаты и т.д...). Код вставляется не в указанное место, а в самый конец текста. Если мы вставляем код где-нибудь в середине текста, или даже на второй строке (если первая, скажем, пустая) - всё нормально, код вставляется на месте курсора. Ошибка именно если курсор стоит в самом начале текста. Да кстати, это старая песня PS. Что-то на данном форуме буква "твёрдый знак" не вводится Выкиньте оперу и поставьте нормальный браузер Ссылка на сообщение Поделиться на других сайтах
celsoft 6241 Опубликовано: 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> закроет все теги в комменте. Вернее их браузер сам закроет при отображении и они не будут влиять на весь остальной контент, но сами теги, конечно, останутся незакрытыми. Ссылка на сообщение Поделиться на других сайтах
MSK 290 Опубликовано: 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 ) ); } Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Архивировано
Эта тема находится в архиве и закрыта для публикации сообщений.