Цитирование в Друпале - в Advanced forum через Quote и BBCode

Подходит и для Drupal 6 и для Drupal 7. Я делал для 7ки. Можно настраивать и без BBCode, все будет работать.
Для организации цитирования я совершил следущие действия:
- Установил модули http://drupal.org/project/quote и http://drupal.org/project/bbcode
- Открыл настройки фильтров Filtered HTML (/admin/config/content/formats/filtered_html), включил Convert BBCode to HTML, переставил его после обрезания тегов (у меня они режутся через wysiwyg filter)
- Импортировал перевод модуля quote.
- Поставил галку в настройка модуля quote (/admin/config/content/quote) напротив типа материала "Тема форума".

К сожалению, пока что цитирование производится только на отдельной странице. Погуглил насчет комментов на той же странице (по типу друпал.ру), но все решения для 6ки пока что. Отложил на потом, если очень понадобится напишу модуль.

UPDATE: модуль написан, но есть небольшие баги в использовании, пока что проект, в котором он был нужен, не разрабатывается мной, поэтому модуль сейчас в подвешенном состоянии - используйте его на свой страх и риск. Он прикреплен к этой статье. Для установки скачайте, распакуйте в папку с модулями (sites/all/modules) и включите в друпале (drush en -y jsquote).
Если используете этот модуль - пожалуйста, обязательно в комментариях напишите все баги, с которыми вы столкнулись. Спасибо.

Прикреплённые файлы: 
Drupal 6, 7

Комментарии

Nikita Petrov 20.10.2013 - 00:51

Прикрепил модуль к статье, правда не ручаюсь за его стабильность, надо тестировать.

Олег 20.10.2013 - 02:11

Попробовал потестировать модуль на локальном сайте. почему то опять цитаты появляются только после обновления страницы, как будто js не срабатывает сразу.Скорее всего дело в моем сайте, а не в модуле.На рабочий сайт пока страшновато модуль закидывать.У вас на тестовом сайте работает как надо?

Гость 20.10.2013 - 02:16

Спасибо, за ответ, нашел этот модуль(если конечно этот, на д.ру http://www.drupal.ru/node/84938), работает, но к сожалению не вставляет цитату в ответ, а только в поле основного комментария

Олег 20.10.2013 - 12:55

Да про этот модуль я и говорил.А модуль который в этой теме выложил уважаемый Никита ты пробовал тестировать?

Олег 25.10.2013 - 22:50

Ребята, кто нибудь тестировал модуль цитирования выложенный в этой теме Никитой?У меня на тестовом сайте не работает, цитата сразу не вставляется, но если я нажму обновить страницу, то после перезагрузки цитата появляется в окне набора сообщения.

Олег 03.11.2013 - 15:49

Эх, что то тишина.Так никто и не пробовал устанавливать на сайт, пусть даже тестовый модуль jsquote выложенный Никитой в этой теме?У меня на тестовом не заработало как надо, может дело в моем сайте, а не в модуле?

Nikita Petrov 13.11.2013 - 17:52

Олег, я сейчас посмотрел - на моём форуме используется именно этот модуль, который я выкладывал в первом посте этой темы, т.е. всё должно работать, уже пол года им пользуемся.
Я помню, что патчил модуль quote, хотя мой модуль должен и без этого патча работать. В любом случае можешь попробовать - выложил пропатченный quote в шапку этой темы. У тебя установлен модули wysiwyg и ckeditor? У меня работает через него, может без ckeditora какие-то проблемы есть, ты бы поэкспериментировал лучше. Еще может быть что у тебя в твоей кастомной теме оформления какой-нибудь javascript выдает ошибку из-за этого не выполняются другие скрипты, в том числе и кнопка цитирования - можешь проверить на свежей инсталяции друпала и теме bartik.

Олег 14.11.2013 - 22:29

Привет.Спасибо за ответ.wysiwyg и ckeditor у меня установлены.Попробую еще поэксперементировать.Только я не вижу на вашем сайте кнопку цитировать, есть только ответить, но цитата в тело сообщения не вставляется у вас.

Nikita Petrov 15.11.2013 - 02:30

как ты мог заметить, на этом сайте и ckeditor'a тоже нет. Jsquote я использую на другом сайте, он закрыт для "не-своих" посетителей.
Если найдешь проблему, из-за которой не работает тот модуль, или хотя бы признаки проблемы, пиши, может что придумаем.

Олег 16.11.2013 - 15:04

Здравствуй Никита.Сегодня выяснил следующее, твой модуль отлично работает в связке с несколько устаревшим ckeditor 3.6.6.1 и wysiwyg-7.x-2.2 Без wysiwyg модуль не работает.
При установке ckeditor 4.3 jsquote не работает.

Олег 19.11.2013 - 15:20

Никита, у тебя нет в планах сделать обновление модуля, что бы он поддерживал новый ckeditor?

Nikita Petrov 19.11.2013 - 18:37

Олег, спасибо большое за хорошее тестирование! В благодарность займусь этим модулем, только на этой неделе прям вообще жёсткий у меня график, может не получиться. На следующей неделе точно смогу. Я так понимаю у тебя проект некоммерческий, может недельку еще подождать? :)

Олег 19.11.2013 - 19:42

Спасибо за ответ.Буду ждать, проект не коммерческий.С удовольствием потестирую следующий модуль.Я так понял без wysiwyg модуль не сможет работать?

Nikita Petrov 19.11.2013 - 19:52

Конечно может. Где-то на друпал.ру выкладывали модуль, который как раз без wysiwig работает, а мне надо было с ckeditor подружить, вот и пришлось писать свой - заодно немного более цивильно его сделал, а то в том модуле вообще всё топорно сделали.
Вообще в моём модуле есть проверка, и попытка работы без wysiwyg есть, на я её не тестировал, наверняка там просто что-то сломано.

Nikita Petrov 17.12.2013 - 10:00

Сегодня начал заниматься этой проблемой, как будут результаты, отпишусь.

Олег 17.12.2013 - 19:33

Спасибо.Лично я жду с нетерпением, модуль цитирования на drupal.org не хороший.

Nikita Petrov 19.12.2013 - 21:36

Олег, привет! Добавил в модуль поддержку нового ckeditor 4й версии. Правда в этом случае он добавляет много лишних <p> и </p>, так что пришлось текст цитируемого сообщения брать именно текстом, а не html с тегами. По моему опыту использования этого модуля мне кажется это в принципе допустимым. Попробуй его так использовать. Про модуль quote согласен, сейчас его неподготовленному человеку тяжело использовать, нужно патчи применять, написал разработчикам чтобы сделали меня co-maintainer, посмотрим как получится, может удастся довести их модуль до ума, заодно тогда js комменты прям в модуль quote смогу вставить.

chimir 19.12.2013 - 23:21

Спасибо за модуль, без текстового редактора работает как надо.
А будет ли он работать с CKEditor-редактор без модуля WYSIWYG( я использую модуль CKEditor https://drupal.org/project/ckeditor) ? к сожалению не смог разобраться.

Nikita Petrov 20.12.2013 - 09:55

Пожалуйста. Да, будет, именно это я и имел ввиду. Отдельный модуль друпала ckeditor использует последнюю, 4ю версию ckeditor, именно под него я и тестировал этот модуль. Для связки wysiwyg и ckeditor 3.6 модуль был сделан изначально и продолжает работать. BuEditor является не совсем wysiwyg и для него работает этот модуль так же, как и для простого окна ввода, в котором вообще wysiwyg нет. Пользуйтесь на здоровье!

chimir 26.12.2013 - 21:17

Спасибо. за ответ, Уточни пожалуйста пару моментов (скрин http://clip2net.com/s/6tjzc1):
1. как разместить кнопку цитирования на панели ckeditor(2) или цитирование происходит только из самого комментария(1)
2. как при цитировании использовать html теги а не BBCode(3)

Nikita Petrov 18.01.2014 - 10:01

1. Это надо писать плагин к CKEditor'y. Но в чем смысл кнопки цитирования именно в визуальном редакторе? Ведь тогда придется вводить автора цитируемого сообщения и текст цитаты вручную, ведь редактор сам по себе не знает, что вы собрались цитировать. Как вариант можно просто добавить кнопку, которая вставляет теги [quote][/quote], и ставит курсор внутрь этих кодов. Тогда будет анонимная цитата. Такую кнопку сделать довольно легко по аналогии с другими, например кнопкой "Жирный текст".
2. Надо зайти в конфигурацию модуля Quote, там есть такая настройка. В моём модуле я не помню, подхватываю я эту настройку или нет, если что измените файл .js, поищите там по слову [quote

Олег 10.01.2014 - 17:11

Большое спасибо. Модуль работает так как я хотел. Он гораздо лучше модул с друпал. орг

Серый 19.01.2014 - 15:25

+1
В связке Д7,25 + CKeditor 4 все запустилось!

Еще один вопрос: может у вас есть скрип кнопки для эдванс форума, которая при нажатии "обновляет тему" форума, т.е. выполняет функцию как будто человек написал сообщение с содержимым 'UP'. Такое часто делают если хотят поднять свою тему в списке других тем. Это полезно например если тема форума - объявление, и чтобы не писать кучу страниц "апов" - просто нажал на кнопку. И как расширенный функционал - можно задавать в настройках, как часто можно жать на эту кнопку, например 1 раз в 12 часов, или сутки.
Спасибо!

Nikita Petrov 23.01.2014 - 14:22

Нет, скрипта нет, напишите его сами - при нажатии на кнопку запросом к базе данных обновляйте дату изменения этой ноды (таблица nodes, столбец updated). Вообще не очень уверен, что такой скрипт очень уж полезен.

chimir 23.03.2014 - 00:51

привет, при цитировании комментария, с цитатой внутри, получается каша. Было бы хорошо, как Д.ру цитировать только выделенный текст, а не весь комментарий.

А еще вопросик, как имя автора в цитате обернуть в какой нибудь див с классом

Олег 24.10.2014 - 17:49

Если бы в личных сообщениях было еще ыозможно цитировать, было бы очень хорошо

Инна 08.04.2015 - 10:33

Никита, для новой версии модуля все еще требуется BBCode? Если да, то зачем? У меня и без него прекрасно работает, Друпал 7.36. Отличный модуль, спасибо!

Nikita Petrov 08.04.2015 - 13:04

Инна, спасибо за отзыв, действительно модуль можно и без BBCode использовать (я тоже так делаю) :-D

Александр 20.01.2016 - 09:44

посмотрел, поковырял скрипт.... селекторы элементов страницы в адвансед-форуме изменились. при выделении работает как надо. //Get full message не хочет работать...
Никит, посмотри пожалуйста

Александр 03.02.2016 - 17:33

скрипт ищет div .field-item внутри .field-name-comment-body и .field-name-body
не знаю почему но у меня нет его, я убрал его и все у меня заработало.
до этого я вообще поставил искать просто .field и так тоже работало :) но были проблемы с множественными цитатами. сейчас все ОК! спасибо

Nikita Petrov 03.02.2016 - 18:11

Отлично!
Возможно обертка div.field-item зависит от темы оформления, у меня в skeletontheme видимо она была. Спасибо за ценный комментарий!

Zaq 12.02.2016 - 05:30

скажите пожалуйста, эти два модуля (quote и ваш jsquote_0), в итоге какой обьем информации помещают в блок цитаты?
у меня с любыми (вашими, друпаловскими и т.п.) модулями, выводится только автор (не как ссылка на профиль) надпись wrote: и собственно цитируемый текст.

полагал, что ваш модуль должен выводить автора как ссылку, дату цитируемого, ссылку на цитируемое сообщение и под всем этим добром уже саму цитату.
я ошибся? это не предусмотрено?

Nikita Petrov 12.02.2016 - 11:35

Да, к сожалению это не предусмотрено, вы можете попробовать сами доработать файл jsquote.js и выложить сюда результат.

Zaq 13.02.2016 - 02:14

ну, если обложусь горой справочников и потрачу кучу времени, то какого-то результата добьюсь безусловно ))).
было бы здорово, если бы вы кратенько пояснили, почему подобная доработка невозможна или крайне трудна (если это так).

имя автора цитаты, ведь откуда то берется? значит это "что-то", таки обрабатывается и из него выбирается нужное поле. мне не кается невозможным, получить из "что-то" данные других полей.
засунул нос в ваш модуль. (перед прошлым постом). в конце там строка:
content['links'][$key]['#links']['quote']['attributes']['data-name'] = $object->name;
собственно интерпретировав ее, как вывод полей массива, в котором присутствуют "links", "attributes" и пр, и задал вопрос. поскольку вижу, что выводится только $key, значение которого берется из массива $object->content['links']['comment']['#links']['quote']
вот и показалось, что все остальные значения, тоже должны отображаться.

Роман 18.10.2016 - 17:01

jsquote пока не ставил, после установки http://drupal.org/project/quote и http://drupal.org/project/bbcode такие репорты пошли на странице топика (у меня PHP 5.6 на Ubuntu 16):

Deprecated function: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead в функции _bbcode_filter_process() (строка 238 в файле /sites/all/modules/bbcode/bbcode-filter.inc).

Notice: Undefined index: comment-jump в функции advanced_forum_102rota_style_comment_view_alter() (строка 47 в файле /sites/all/modules/advanced_forum_102rota_style/advanced_forum_102rota_style.module).

Выходит, что строку с preg_replace() придется переписать

а что делать с comment-jump в функции advanced_forum_102rota_style_comment_view_alter() ? может просто собачку @ поставить? ))

в целом, квотирование как-то приглючивает (видимо из-за preg_replace())

Роман 18.10.2016 - 17:17

Заглянул в bbcode-filter.inc - там такой шаблон подстановки в preg_replace() что мозги тут же скрутило в бараний рог :D

Роман 18.10.2016 - 21:33

решение подсказали на Друпал.ру:

https://drupal.org/project/xbbcode

помучался правда с настройкой

дело в том, что xbbcode создает новый текстовый формат - bbcode - и требуется настраивать именно его, а не filtered_html

но все кончилось благополучно - каменты работают

и да, модуль quote - отключил, мне непонятно зачем он вообще нужен, цитирование и так происходит, без него (я кстати хотел его сначала вообще отключить, когда проблемы начались, но не понял как именно)

Бажена 17.02.2017 - 12:49

Здравствуйте. Тоже установила. Без CKE работает, с ним нет. Точнее у меня связка CKE+wysiwyg
Как вылечить?((
Профиль делаю - не работает. профиль убираю - работает((

Nikita Petrov 21.02.2017 - 22:27

Есть, но сейчас вам не могу помочь. Нужно разбираться, что изменилось в новых версиях модулей.

Бажена 08.04.2017 - 19:34

Здравствуйте. Так и не получилось у меня : выделить текст - цитировать....и чтоб без перезагрузки. Очень неудобно(( Вы не нашли решение???

Анатолий 22.12.2017 - 00:01

В общем заработало с новым CKEditor, поправил скрипт.
Собственно вот то что исправил:
if (CKEDITOR.instances["edit-comment-body-" + lang + "-0-value"]){
CKEDITOR.instances["edit-comment-body-" + lang + "-0-value"].insertText(text)
} else
{insertAtCaret(document.getElementById("edit-comment-body-" + lang + "-0-value"),text)}

Добавить комментарий