1 (изменено: Malcev, 2017-02-26 16:57:27)

Тема: OFF: Баг с цитированием

При попадании в выделенную область для цитирования простого текста вместе с текстом с тегами BBCode, происходит глюк и цитируется всё сообщение целиком.
Пример:
Тест1 Тест2
Если мы выделим для цитирования только слово "Тест1" или только слово "Тест2", то все будет ок.
Если же мы выделим и слово "Тест1" и слово "Тест2", то процитируется весь пост целиком.
Просьба поправить.

2

Re: OFF: Баг с цитированием

Баг с цитированием всего поста при выделении целой строки мы обсуждали давно ещё здесь.
JSman обещал поправить, сообщения удалили, на том всё и застыло.

3

Re: OFF: Баг с цитированием

Да, но там, как я помню, не нашли закономерность при каких условиях этот баг срабатывает.

4

Re: OFF: Баг с цитированием

Как же? Его подтвердили.

5

Re: OFF: Баг с цитированием

А можете напомнить с примером?

6

Re: OFF: Баг с цитированием

К сожалению, не сохранил.

7

Re: OFF: Баг с цитированием

Наверняка причина была в том, что строка содержала простой текст вместе с текстом BBCode.
Для знающих джаваскрипт подправить функцию getSelectedText() - пара пустяков.
Но у нас к сожалению это затягивается на долгие месяцы.

8

Re: OFF: Баг с цитированием

Сейчас всё исправлено!
Спасибо!

9

Re: OFF: Баг с цитированием

Пожалуйста.

Вся проблема в функции QuickQuote. Однако, по мне, скрипт некорректно работает, так как копирование фрагмента текста осуществляется без тегов, то есть без форматирования. Есть финт ушами, но не так все просто. Надо еще подумать.

Грубо говоря, можно просто брать HTML-код выделенной части и конвертировать ее в BB-код. Однако, есть ли подводные камни?

10

Re: OFF: Баг с цитированием

А можно еще функцию подправить?
А то, если цитируешь текст со смайликом, то цитируется весь пост.
Пример со смайликом.

11

Re: OFF: Баг с цитированием

Malcev
Пока никак, такой алгоритм. Вот адрес скрипта. Функция QuickQuote(qid_param).
Может у вас идеи будут?

12

Re: OFF: Баг с цитированием

Может просто стирать все возможные строки со смайликами?

<img src="http://forum.script-coding.com/img/smilies/smile.png" alt="smile" height="15" width="15">

13 (изменено: teadrinker, 2017-04-12 00:13:37)

Re: OFF: Баг с цитированием

По-моему, проблема здесь:

if (post_content_1.indexOf(selected_text_1) != -1)

Здесь проверяется, является ли выделенный текст частью общего текста поста. Если есть смайл, в переменной post_content_1 есть его текстовое отображение, а в selected_text_1 его нет, соответственно, условие не срабатывает. Если совсем убрать эту проверку, то может вставляться текст, выделенный в другом посте. Чтобы обойти это,  нужно в функции getSelectedText() проверять, находится ли выделенный текст в том же посте, где нажата кнопка. Для этого можно передавать ей значение qid_param при вызове из QuickQuote(qid_param). Если текст не из нужного поста, возвращать пустое значение, а из QuickQuote() тогда можно будет убрать эту проверку:

function QuickQuote(qid_param)
{
	var selected_text = getSelectedText();
	var quick_post_value = document.getElementsByName('req_message');
	var cur_pos = getCaretPos();
	var text = quick_post_value[0].value;
	var text_below = text.substring(0, cur_pos);
	var text_above = text.substring(cur_pos, text.length);

	if (selected_text == undefined || selected_text == '')
	{
		var quote = '[quote=' + pun_quote_authors[qid_param] + ']' + ParseMessage(pun_quote_posts[qid_param]) + '[/quote]';
		quick_post_value[0].value = text_below + quote + text_above;
	}
	else
	{
		var quote = '[quote=' + pun_quote_authors[qid_param] + ']' + selected_text + '[/quote]';
		quick_post_value[0].value = text_below + quote + text_above;
	}
	setCaretPos(text_below.length + quote.length);
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

14

Re: OFF: Баг с цитированием

А я так и не понял, почему BBCode регекспами можно убрать, а смайлы нет.

15

Re: OFF: Баг с цитированием

Можно, но если в сообщении смайлы специально отключены, может удалиться что-то нужное.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

16

Re: OFF: Баг с цитированием

Так мы же удаляем конкретные строки.
Что там может что-то нужное удалиться, кроме ссылок на смайлы?

17 (изменено: teadrinker, 2017-04-21 17:03:28)

Re: OFF: Баг с цитированием

Функция не работает с html-содержимым объектов. В переменной post_content_1 текст, как он напечатан (на месте смайлов их текстовое отображение), в переменной selected_text_1 выделенный текст. Если в выделенном тексте был смайл или любое другое изображение, оно просто исключается.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

18

Re: OFF: Баг с цитированием

teadrinker пишет:

на месте смайлов их тестовое отображение

Чтобы избавиться от текстового отображения нужно удалить ALT аттрибут у смайлов в include/parser.php:

$text = preg_replace("#(?<=[>\s])".preg_quote($smiley_text, '#')."(?=\W)#m", '<img src="'.$base_url.'/img/smilies/'.$smiley_img.'" width="15" height="15" alt="'.substr($smiley_img, 0, strrpos($smiley_img, '.')).'" />', $text);

19

Re: OFF: Баг с цитированием

Тут я не в теме, в php ничего не понимаю.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

20

Re: OFF: Баг с цитированием

Наблюдаю у себя баг при попытке скопировать код либо выделить его в браузере Chrome. При нажатии на соответствующие элементы страницы выбрасывает в начало страницы. В IE работает нормально. Только у меня такое наблюдается?

Win10x64, AHK v1.1.25

21

Re: OFF: Баг с цитированием

becauseim, у меня так же. Более недели назад началось.

22

Re: OFF: Баг с цитированием

Имеются ли ошибки в дебагере?

23

Re: OFF: Баг с цитированием

Поправил. Нашел на форуме.