Перейти к контенту

Рекомендуемые сообщения

Зашёл - решил вам идейку мода подкинуть, если такого ещё нет :D

 

Если есть - дайте ссылку, поставлю ;)

 

Собственно суть простая - выбираем в топике стандартной выбиралкой посты, жмём "Быстрая цитата" - цитаты постов идут в форму быстрого ответа.

 

Было бы полезно для тех у кого трафик :)

Ссылка на комментарий
Поделиться на других сайтах

Так давно уже у всех стоит :D У некоторых даже с временем постинга.

в RenderRow там кнопка цитаты

<a href="java script:Insert(selection, '{$post['name']}')" onMouseOver="get_selection()"><{P_QUOTE}></a>

 

В жаба-скрипт

function Insert(text, postername){ 
if (text!="")
{paste("[quote="+postername+"]"+text+"[/quote]\n", 0);
}}

function get_selection() {
if (document.getSelection){
selection = document.getSelection();
selection = selection.replace(/\r\n\r\n/gi, "_doublecaret_");
selection = selection.replace(/\r\n/gi, " ");
while (selection.indexOf("  ") !=-1) selection = selection.replace(/  /gi, ""); 
selection = selection.replace(/_doublecaret_/gi, "\r\n\r\n");} else
selection = document.selection.createRange().text;}

Ссылка на комментарий
Поделиться на других сайтах

О, кулл)

 

Самому делать лень было :D

 

Пойду на форумы ставить ;)

 

Посмотрел - не то.

 

Имелось ввиду посты кнопочкой для мультицитаты отметил и ушёл, нажал кнопу - все посты в форму быстрого ответа :)

 

А то, что ты написал и в стандартном IPB 2.1 есть :)

 

Типа:

Так давно уже у всех стоит

 

Заюзал стандартную кнопу )

Ссылка на комментарий
Поделиться на других сайтах

Вот этот кусок тоже в жаба-скрипт. Забыл скопипастить
function paste(text, flag){ 
if (document.REPLIER) {
if ((document.selection)&&(flag)) {
document.REPLIER.Post.focus();
document.REPLIER.document.selection.createRange().text = text;
} else document.REPLIER.Post.value += text;}}

Ссылка на комментарий
Поделиться на других сайтах

Никаких селекшнов не надо!

 

Видишь кнопу "+Цитата" ? Нужно чтобы при нажатии кнопы "быстрая цитата" в форму быстрого ответа заносились выбранные посты, как при нажатии кнопки "Ответ", тока без перезагрузки страницы.

 

Включи моск, прочитай, чтоп пишу, а не тока название темы :D

Ссылка на комментарий
Поделиться на других сайтах

Те у кого траффик - не обломятся и выделят. Не запихивать же им в жабу не только имена, но у весь пост, и так все 30 постов на странице.
Ссылка на комментарий
Поделиться на других сайтах

Я сказал чего надо, не надо предлагать то, чего не надо и тем более есть в стандартном IPB :D
Ссылка на комментарий
Поделиться на других сайтах

Если ограничиться текущей страничкой можно и ява-скриптом..

Но на кнопку + нет ограничения по страницам, поэтому только аякс. А поэтому, скажем дружно...

Ссылка на комментарий
Поделиться на других сайтах

Если ограничиться текущей страничкой можно и ява-скриптом..

Но на кнопку + нет ограничения по страницам, поэтому только аякс. А поэтому, скажем дружно...

Можно и джава-скриптом без аякса на много страниц :D

Чего нам не хватает в джава-скрипте? Нам нужно где-то сохранить текст при перелистывании страницы.

В куках ограничения на объем; но есть и хранилище строки без ограничения по длинне: объект window.name...

Дел-то чуть: по onblur сделать сброс из формы быстрого ответа в window.name; по onfocus сделать проверку текстинпута, и если пустой, то сброс из window.name в текстинпут с обнулением window.name; по кнопкам предпросмотра и отправки тоже обнуление window.name.

Собственно, все...

В сочетании с "Быстрая цитата" как в вобле может получиться именно то, что спрашивает топикстартер.

 

 

UPD

Тут есть проблемка: если пользователь "нащелкает" цитат, но сообщение не отправит, и уйдет в другой топик - цитаты уйдут вместе с ним в другой топик.

Может быть это и не плохо, что цитаты из одного топика попадут в другой.

Но лучше добавить проверку номера топика (можно выдернуть из window.location) и очищать window.name при изменении номера топика.

Ссылка на комментарий
Поделиться на других сайтах

нужно где-то сохранить текст

а если он хочет выбрать все сообщения, а на странице у него их 40, а не по умолчанию...

не, первое, над чем думается - защита от дурака

 

нажимая на "+ цитата" мы получаем прямо ид поста в добавку?

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

 

или не для всех, а в запросе будет pid=1 or pid=2 и т.д., а потом в while

Ссылка на комментарий
Поделиться на других сайтах

Тут есть проблемка: если пользователь "нащелкает" цитат, но сообщение не отправит, и уйдет в другой топик - цитаты уйдут вместе с ним в другой топик.Может быть это и не плохо, что цитаты из одного топика попадут в другой.Но лучше добавить проверку номера топика (можно выдернуть из window.location) и очищать window.name при изменении номера топика.

 

В 2.х это превознесено именно как фича. Чтобы можно было цитировать воообще любой пост.

 

нажимая на "+ цитата" мы получаем прямо ид поста в добавку?тогда можно в функции, которая будет вызыватся аяксом длявсех (выбранные ид как ид) сделать запрос к базе и вернуть отформатированный текст (получим автор нейм, время, пост ид и текст, этого достаточно для полномерного quote)

FatCat (и я) предлагаем получать текст поста с текущей страницы без обращения в базу.

 

В куках ограничения на объем; но есть и хранилище строки без ограничения по длинне: объект window.name...Дел-то чуть: по onblur сделать сброс из формы быстрого ответа в window.name; по onfocus сделать проверку текстинпута, и если пустой, то сброс из window.name в текстинпут с обнулением window.name; по кнопкам предпросмотра и отправки тоже обнуление window.name.Собственно, все...

ммм.. звучит заманчиво. Но я так сильно в js не секу :D Мне кажется с таким подходом сильно много чего нужно предусмотреть...

 

Так что ваш выход Маестро! ;)

 

upd: в частности как быть, если я выделял посты, потом у меня необходимость цитирования пропала, я хожу по страницам (посты через window.name всё ещё передаются), а потом нажимаю "цитировать" с ещё одним добавленным постом, и они у меня вылезают все сразу.. Но видимо это не победишь, т.к. в 2.х именно так оно и работает.

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

Ссылка на комментарий
Поделиться на других сайтах

Так что ваш выход Маестро! ;)
Напишу с руки, не проверяя, там вроде бы все просто.

Нужно найти в скине

<textarea

- найти ту, которая из формы быстрого ответа.

Там уже есть обработчики, например у меня (1.3) она выглядит так:

<textarea cols="80" rows="15" wrap="soft" name="Post" tabindex="3" class="textinput" onClick="storeCaret(this);" onKeyup="storeCaret(this);" onChange="storeCaret(this);" onFocus="storeCaret(this);"></textarea>

Нам будут нужны обработчики onFocus и onBlur. Если они есть, в них добавить действия; если нет - создать.

У меня есть onFocus, в него добавлю, нет onBlur, его создам.

Итак, получается:

<textarea cols="80" rows="15" wrap="soft" name="Post" tabindex="3" class="textinput" onClick="storeCaret(this);" onKeyup="storeCaret(this);" onChange="storeCaret(this);" onFocus="java script:storeCaret(this);if(value.length==0)value=window.name;" onBlur="java script:window.name=value;"></textarea>

Осталось сделать очистку "буфера обмена" при отправке сообщения.

Для этого в функцию ValidateForm() добавить строку

window.name="";

 

 

 

 

upd: в частности как быть, если я выделял посты, потом у меня необходимость цитирования пропала, я хожу по страницам (посты через window.name всё ещё передаются), а потом нажимаю "цитировать" с ещё одним добавленным постом, и они у меня вылезают все сразу.. Но видимо это не победишь, т.к. в 2.х именно так оно и работает.

Будет скидываться в форму быстрого ответа; при переходе на новую страницу форма будет пустая, но по первому клику мышкой в нее всё, что было на прошлой странице, в нее скинется из буфера; причем не только цитаты, но и ответы пользователя, если он писал ответы к цитатам.

 

 

 

Ещё нужно по нажатию на минус удялять всё что есть в инпуте и виндов нэйм по отношению к посту, на котором мы минус нажали.. вообщем один гемор.
У меня в 1.3 нет минусов и плюсов... Плохо понимаю, о чем речь. :D
Ссылка на комментарий
Поделиться на других сайтах

Завернуть в мод и выложить.

 

IMHO.

 

PS: Завернуть для всех версий :D

Изменено пользователем Destruction
Ссылка на комментарий
Поделиться на других сайтах

Завернуть в мод и выложить.

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

 

Если кто-то возьмётся за поддержку и т.д., могу передать инструкцию, ибо коду там большинство от IPS, а вам мороки меньше.

 

P.S. Написано через "недецкий аякс", xmlout возвращает сразу отформатированный цитатами текст.

 

 

Добавлено:

Надо ток баги чуть половить, кеш запросов не пашет, пришлось запрос набивать, и ещё по мелочам. Мог и не заметить чего...

Изменено пользователем Sannis
Ссылка на комментарий
Поделиться на других сайтах

Давно так сделал на ajax, но так, что 1 клик "цитата" напротив поста = 1 цитата в быстрый ответ, а не выделение вначале нескольких, а потом клик :D. Это некоторая оптимизация так как меньше запросов в сумме выходит, причем если есть вложенная цитата то она убирается таким способом

"[квоут]

[квоут]цитата 1[/квоут]

какой-то текст ответ на цитату 1

[квоут]цитату 2[/квоут]

какой-то текст 2

...

[квоут]цитату n[/квоут]

какой-то текст n

[/квоут]"

 

В форму быстрого ответа копируется как:

 

"[квоут]какой-то текст ответ на цитату 1[/квоут]

 

[квоут]какой-то текст 2[/квоут]

...

[квоут] какой-то текст n[/квоут]"

 

Потому что, что не говорите - многовложенные цитаты - это все-таки зло ;)..... И те ситуации "юзабельности" многовложенных цитат намного реже возникают, чем просто лень юзеру их убирать.

Ссылка на комментарий
Поделиться на других сайтах

P.S. Написано через "недецкий аякс", xmlout возвращает сразу отформатированный цитатами текст.

Продолжаем нагибать и нагибать и так медленно работающий форум..

Ссылка на комментарий
Поделиться на других сайтах

Продолжаем нагибать и нагибать и так медленно работающий форум..

Почему? )

Ссылка на комментарий
Поделиться на других сайтах

В общем очень хотелось бы услышать что-то конкретнее :D. Почему вы считаете, что в данном случае быстрая цитата через аякс будет грузить форум больше чем цитата обычная (желательно указать цитату каких версий рассматриваете 2.х или 1.3)? Подсчитывали какую-то статистику потребности цитирования сообщений в теме и оказалось, что предполагаемая нагрузка вызываемая хттп-запросами+запросами к бд за один и тот же промежуток времени будет больше в ситуации если использовать аякс?
Ссылка на комментарий
Поделиться на других сайтах

Продолжаем нагибать и нагибать и так медленно работающий форум..

А иначе с сохранением форматирования сделать нельзя. А если форум нагружен, зачем такой мод?

 

З.Ы. Значит не буду спешить или не буду выкладывать. Так что если кому нужно, пишите соберу инструкцию...

Ссылка на комментарий
Поделиться на других сайтах

Я тему создал - но мне вероятно не нужно...

 

Сделать без Ajax можно. Сделаете - собирайте :D

Ссылка на комментарий
Поделиться на других сайтах

Почему вы считаете, что в данном случае быстрая цитата через аякс будет грузить форум больше чем цитата обычная (желательно указать цитату каких версий рассматриваете 2.х или 1.3)?

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

IPB 2.x очень перегружен ажаксом и не надо думать, что раз это не технология с перезагрузкой, то это никак не отображается на нагрузке сервака.

В быстрой цитате вообще желательно не обращаться к серваку. На то она и быстрая.

Всё остальное в двухе уже сделано: кнопки +/- и кнопка "Ответить".

 

Hostem, ты видимо рассматриваешь все фишечки к форуму исключительно исходя из их "крутости". Ну типа ажакс популярен в последнее время в модах IPB, удобен, ну значит его везде где можно нужно вставить, а потом всем сказать, смотрите какой у меня форум: и тут ажакс и тут ажакс..

Сторона работы с сервером тебя видимо мало беспокоит. Так же например поступает винград. Встраивают где только можно.

Конечно админу нравится когда ему пишется как в фантастических фильмах "Process in progress...", а всё делается в фоне (и как бы и не делается), но всё в результате хорошо. Всё это игрушечки, для самоутверждения админа. Не более того.

 

На самом деле ажакс - это только лишь помощник скрипту. Его переусердие вовсе не скажется хорошо. Никакой статистики я не считал и не собираюсь, это всего лишь моё мнение (и не только моё к слову).

Я не отрицаю, вещь очень удобная, но во всём надо знать меру. И, если есть способ поступить проще, но пускай с некоторыми ограничениями, лучше поступить проще, чем делать полное обращение к базе через скрипты. В этом и есть золотая середина.

 

З.Ы. Значит не буду спешить или не буду выкладывать. Так что если кому нужно, пишите соберу инструкцию...

Да нет, ты выкладывай. Мы просто дискутируем. Обязательно найдётся тот, кто воспользуется модом и ему будет наплевать на все нагрузки, главное, что удобно.

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

Он придёт сюда и создаст тему "Помогите оптимизировать форум, что надо изменить в запросах. Меня выгоняет хостер...". Таких тем здесь море.

Но не все это понимают сразу.

Вы просто забываете магическое действие слова "ажакс" в модах на новичков.

 

Хотя будут обязательно и такие, которые не устанавливают все моды подряд, у них не будет траблов, только избранные исходя из соображающих мозгов. Так что выкладывай.

Ссылка на комментарий
Поделиться на других сайтах

Плюс к сказанному, если свой сервер, то можно увеличить мемори лимит наверно, и тогда не будет вопросов типа "как оптимизировать", так?
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.