Как отменить переброс в форму ответа при цитировании?

Список разделов phpBBex 1.x (поддерживается) Поддержка 1.x

Описание: У вас проблемы с phpBBex 1.x и вам необходима помощь? Спрашивайте здесь!
Правила раздела: Одна тема — один вопрос или группа связанных вопросов. Обязательно формируйте внятный заголовок, максимально отражающий суть вопроса. Подробно описывайте проблему. Не забудьте указать версию phpBBex и какие моды установлены, по возможности добавьте скриншоты проблемы или ссылку на страницу с проблемой.
Модератор: Поддержка

Сообщение #1 kenguru74 » 17.02.2013, 23:43

Собссна, сабж..
Скроллить после каждого цитирования надоело, а приходится из 5-9 постов приводить цитаты порой. Наше сообщество тем более капризное - мы собрались с другого форума, где переброса не было..
Я так понимаю - это какой-то скрипт делает? :help:
kenguru74 M
Автор темы
Аватара
Откуда: Челябинск
Репутация: 0
С нами: 11 лет 3 месяца

Сообщение #2 VEG » 18.02.2013, 00:43

kenguru74, к сожалению, простого способа (исправлением одной строки) так сделать не выйдет, поскольку в таком случае фокус на форму ввода не будет перебрасываться и при других манипуляциях с текстом (вставка смайликов, BBCode и др.). Задумка такая — вы что-то процитировали, сразу написали ответ, затем опять что-то процитировали, затем опять написали ответ. При таком подходе автоскролл только помогает :)

Хотя... Попробуйте в файле viewtopic_body.html найти:
Код: Выделить всё
<a rel="nofollow" href="#postform" onclick="addquote({postrow.POST_ID},'{postrow.POSTER_QUOTE}'); insert_text('\r\n'); return false;" title="{L_QUOTE_TEXT}">
и заменить этот фрагмент на:
Код: Выделить всё
<a rel="nofollow" href="#postform" onclick="addquote({postrow.POST_ID},'{postrow.POSTER_QUOTE}'); return false;" title="{L_QUOTE_TEXT}">

Если поможет с перескакиванием, то будет один неприятный момент — после цитаты не будет вставляться перевод строки. Тут надо будет что-то на замену удалённому insert_text('\r\n'); химичить.
VEG M
Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 12 лет

Сообщение #3 kenguru74 » 19.02.2013, 14:10

VEG, Не помогло. Все кэши чистил, файлы обновлял.
Перевод строки пропал, но также перебрасывает..
kenguru74 M
Автор темы
Аватара
Откуда: Челябинск
Репутация: 0
С нами: 11 лет 3 месяца

Сообщение #4 VEG » 19.02.2013, 15:15

kenguru74, угу, я уже изучил этот код, там всюду используется insert_text(), в теле которого вызывается функция textbox.focus();. Можете попробовать в editor.js в функции insert_text() закомментировать вызовы textbox.focus() — но в таком случае фокус в поле ввода и в других случаях автовставки текста не будет перебрасываться.
Кстати, можете включить полный ответ, а там — обзор темы в отдельном прокручиваемом окошке. Вполне себе решение — там на больших мониторах не будет прокручиваться, а на маленьких будет прокручиваться немного. Обзор темы включается в личном разделе в настройках отображения.
VEG M
Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 12 лет

Сообщение #5 kenguru74 » 21.02.2013, 00:37

VEG, Огромное спасибо за наводку, Евгений!
Именно в этом скрипте я нашёл проблему и уже исправил её. Но немного не то, о чём Вы писали.

Итак, информация для тех, кто хочет на своём форуме отключить перебрасывание в форму ответа при любом виде цитирования (полном либо частичном):

Найти в папке шаблонов стиля ( путь styles/prosilver/template ) файл скрипта editor.js, открыть его, найти следующий код:

Код: Выделить всё
var textarea_pos = parseInt(jQuery(textarea).position().top);
      var visible_from = jQuery(document).scrollTop();
      var visible_to = visible_from + jQuery(window).height();
      if (textarea_pos < visible_from || textarea_pos > (visible_to - 20))
      {
         jQuery(document).scrollTop(textarea_pos);
      }
и закомментировать этот кусок полностью.

Должно получиться так:

Код: Выделить всё
/* var textarea_pos = parseInt(jQuery(textarea).position().top);
      var visible_from = jQuery(document).scrollTop();
      var visible_to = visible_from + jQuery(window).height();
      if (textarea_pos < visible_from || textarea_pos > (visible_to - 20))
      {
         jQuery(document).scrollTop(textarea_pos);
      } */

Может это и топорно, может всплывут какие-либо проблемы (у нас сейчас вовсю тестируют, хотя я проверял), но это работает!
Пока никаких проблем не вижу.. И перевод строки работает.
Единственный момент, который не проверен - как изменилось поведение каретки при полном ответе.
У меня при полном ответе просмотр форума отключен.. Никто полным не пользуется - всё в быстром есть, как и надо..
kenguru74 M
Автор темы
Аватара
Откуда: Челябинск
Репутация: 0
С нами: 11 лет 3 месяца

Сообщение #6 VEG » 21.02.2013, 01:26

Точно, я уже совсем забыл про этот код. Самое интересное, что я сам писал эти строки 10 месяцев назад. В хроме при передаче фокуса прокрутка не срабатывала :)
VEG M
Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 12 лет

Сообщение #7 kenguru74 » 21.02.2013, 20:07

VEG, После этих слов я кинулся проверять Фоксом и увидел, что проблема-то осталась! В хроме только получается вылечил..
Может подскажете - как для остальных популярных убрать? Для Фокса и Оперы?

Странно. Парень с Мозиллы пишет - нет переброса у него.. У меня есть.. Где-то что-то еще по-старому пашет, похоже..
kenguru74 M
Автор темы
Аватара
Откуда: Челябинск
Репутация: 0
С нами: 11 лет 3 месяца

Сообщение #8 VEG » 22.02.2013, 00:16

kenguru74, пускай все очистят кэш.
Многие браузера перебрасывают к форме после установки фокуса в поле ввода сообщения textarea.focus();. Не знаю, может быть новые версии браузеров ведут себя так же как и Chrome, и это положено по стандарту. Но раньше, когда я делал эту фишку, автопрокрутка по установке фокуса не работала только в Chrome, поэтому и пришлось написать этот код. Который, кстати, улучшал автопрокрутку во всех браузерах :) Так что можете поискать строчки установки фокуса в этой функции и закомментировать их.
VEG M
Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 12 лет


Вернуться в Поддержка 1.x