Destruction Опубликовано 17 Мая 2007 Жалоба Поделиться Опубликовано 17 Мая 2007 Зашёл - решил вам идейку мода подкинуть, если такого ещё нет Если есть - дайте ссылку, поставлю Собственно суть простая - выбираем в топике стандартной выбиралкой посты, жмём "Быстрая цитата" - цитаты постов идут в форму быстрого ответа. Было бы полезно для тех у кого трафик Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
PALADIN+ Опубликовано 17 Мая 2007 Жалоба Поделиться Опубликовано 17 Мая 2007 Так давно уже у всех стоит У некоторых даже с временем постинга. в 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;} Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Destruction Опубликовано 17 Мая 2007 Автор Жалоба Поделиться Опубликовано 17 Мая 2007 О, кулл) Самому делать лень было Пойду на форумы ставить Посмотрел - не то. Имелось ввиду посты кнопочкой для мультицитаты отметил и ушёл, нажал кнопу - все посты в форму быстрого ответа А то, что ты написал и в стандартном IPB 2.1 есть Типа:Так давно уже у всех стоит Заюзал стандартную кнопу ) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
PALADIN+ Опубликовано 17 Мая 2007 Жалоба Поделиться Опубликовано 17 Мая 2007 Вот этот кусок тоже в жаба-скрипт. Забыл скопипастить 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;}} Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Destruction Опубликовано 17 Мая 2007 Автор Жалоба Поделиться Опубликовано 17 Мая 2007 Никаких селекшнов не надо! Видишь кнопу "+Цитата" ? Нужно чтобы при нажатии кнопы "быстрая цитата" в форму быстрого ответа заносились выбранные посты, как при нажатии кнопки "Ответ", тока без перезагрузки страницы. Включи моск, прочитай, чтоп пишу, а не тока название темы Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
PALADIN+ Опубликовано 17 Мая 2007 Жалоба Поделиться Опубликовано 17 Мая 2007 Те у кого траффик - не обломятся и выделят. Не запихивать же им в жабу не только имена, но у весь пост, и так все 30 постов на странице. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Destruction Опубликовано 17 Мая 2007 Автор Жалоба Поделиться Опубликовано 17 Мая 2007 Я сказал чего надо, не надо предлагать то, чего не надо и тем более есть в стандартном IPB Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 17 Мая 2007 Жалоба Поделиться Опубликовано 17 Мая 2007 корче понятно, что это аякс, да еще и недецкий... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 17 Мая 2007 Жалоба Поделиться Опубликовано 17 Мая 2007 Если ограничиться текущей страничкой можно и ява-скриптом..Но на кнопку + нет ограничения по страницам, поэтому только аякс. А поэтому, скажем дружно... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 17 Мая 2007 Жалоба Поделиться Опубликовано 17 Мая 2007 Если ограничиться текущей страничкой можно и ява-скриптом..Но на кнопку + нет ограничения по страницам, поэтому только аякс. А поэтому, скажем дружно...Можно и джава-скриптом без аякса на много страниц Чего нам не хватает в джава-скрипте? Нам нужно где-то сохранить текст при перелистывании страницы.В куках ограничения на объем; но есть и хранилище строки без ограничения по длинне: объект window.name...Дел-то чуть: по onblur сделать сброс из формы быстрого ответа в window.name; по onfocus сделать проверку текстинпута, и если пустой, то сброс из window.name в текстинпут с обнулением window.name; по кнопкам предпросмотра и отправки тоже обнуление window.name.Собственно, все...В сочетании с "Быстрая цитата" как в вобле может получиться именно то, что спрашивает топикстартер. UPDТут есть проблемка: если пользователь "нащелкает" цитат, но сообщение не отправит, и уйдет в другой топик - цитаты уйдут вместе с ним в другой топик.Может быть это и не плохо, что цитаты из одного топика попадут в другой.Но лучше добавить проверку номера топика (можно выдернуть из window.location) и очищать window.name при изменении номера топика. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 17 Мая 2007 Жалоба Поделиться Опубликовано 17 Мая 2007 нужно где-то сохранить текста если он хочет выбрать все сообщения, а на странице у него их 40, а не по умолчанию...не, первое, над чем думается - защита от дурака нажимая на "+ цитата" мы получаем прямо ид поста в добавку?тогда можно в функции, которая будет вызыватся аяксом длявсех (выбранные ид как ид) сделать запрос к базе и вернуть отформатированный текст (получим автор нейм, время, пост ид и текст, этого достаточно для полномерного quote) или не для всех, а в запросе будет pid=1 or pid=2 и т.д., а потом в while Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 17 Мая 2007 Жалоба Поделиться Опубликовано 17 Мая 2007 Тут есть проблемка: если пользователь "нащелкает" цитат, но сообщение не отправит, и уйдет в другой топик - цитаты уйдут вместе с ним в другой топик.Может быть это и не плохо, что цитаты из одного топика попадут в другой.Но лучше добавить проверку номера топика (можно выдернуть из window.location) и очищать window.name при изменении номера топика. В 2.х это превознесено именно как фича. Чтобы можно было цитировать воообще любой пост. нажимая на "+ цитата" мы получаем прямо ид поста в добавку?тогда можно в функции, которая будет вызыватся аяксом длявсех (выбранные ид как ид) сделать запрос к базе и вернуть отформатированный текст (получим автор нейм, время, пост ид и текст, этого достаточно для полномерного quote)FatCat (и я) предлагаем получать текст поста с текущей страницы без обращения в базу. В куках ограничения на объем; но есть и хранилище строки без ограничения по длинне: объект window.name...Дел-то чуть: по onblur сделать сброс из формы быстрого ответа в window.name; по onfocus сделать проверку текстинпута, и если пустой, то сброс из window.name в текстинпут с обнулением window.name; по кнопкам предпросмотра и отправки тоже обнуление window.name.Собственно, все...ммм.. звучит заманчиво. Но я так сильно в js не секу Мне кажется с таким подходом сильно много чего нужно предусмотреть... Так что ваш выход Маестро! upd: в частности как быть, если я выделял посты, потом у меня необходимость цитирования пропала, я хожу по страницам (посты через window.name всё ещё передаются), а потом нажимаю "цитировать" с ещё одним добавленным постом, и они у меня вылезают все сразу.. Но видимо это не победишь, т.к. в 2.х именно так оно и работает.Ещё нужно по нажатию на минус удялять всё что есть в инпуте и виндов нэйм по отношению к посту, на котором мы минус нажали.. вообщем один гемор. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 17 Мая 2007 Жалоба Поделиться Опубликовано 17 Мая 2007 Так что ваш выход Маестро! Напишу с руки, не проверяя, там вроде бы все просто.Нужно найти в скине <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 нет минусов и плюсов... Плохо понимаю, о чем речь. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 17 Мая 2007 Жалоба Поделиться Опубликовано 17 Мая 2007 но и плюсов ведь нет не так ли? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Destruction Опубликовано 18 Мая 2007 Автор Жалоба Поделиться Опубликовано 18 Мая 2007 (изменено) Завернуть в мод и выложить. IMHO. PS: Завернуть для всех версий Изменено 18 Мая 2007 пользователем Destruction Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 18 Мая 2007 Жалоба Поделиться Опубликовано 18 Мая 2007 (изменено) Завернуть в мод и выложить.Завернуть могу завтра вечером(ночью), если к коду претензий не будет. Сейчас уже не успеваю... Кстати говоря это уже было почти сделано, см. подпись) Если кто-то возьмётся за поддержку и т.д., могу передать инструкцию, ибо коду там большинство от IPS, а вам мороки меньше. P.S. Написано через "недецкий аякс", xmlout возвращает сразу отформатированный цитатами текст. Добавлено:Надо ток баги чуть половить, кеш запросов не пашет, пришлось запрос набивать, и ещё по мелочам. Мог и не заметить чего... Изменено 18 Мая 2007 пользователем Sannis Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Hostem Опубликовано 19 Мая 2007 Жалоба Поделиться Опубликовано 19 Мая 2007 Давно так сделал на ajax, но так, что 1 клик "цитата" напротив поста = 1 цитата в быстрый ответ, а не выделение вначале нескольких, а потом клик . Это некоторая оптимизация так как меньше запросов в сумме выходит, причем если есть вложенная цитата то она убирается таким способом"[квоут][квоут]цитата 1[/квоут] какой-то текст ответ на цитату 1[квоут]цитату 2[/квоут] какой-то текст 2...[квоут]цитату n[/квоут] какой-то текст n[/квоут]" В форму быстрого ответа копируется как: "[квоут]какой-то текст ответ на цитату 1[/квоут] [квоут]какой-то текст 2[/квоут]...[квоут] какой-то текст n[/квоут]" Потому что, что не говорите - многовложенные цитаты - это все-таки зло ..... И те ситуации "юзабельности" многовложенных цитат намного реже возникают, чем просто лень юзеру их убирать. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 19 Мая 2007 Жалоба Поделиться Опубликовано 19 Мая 2007 P.S. Написано через "недецкий аякс", xmlout возвращает сразу отформатированный цитатами текст.Продолжаем нагибать и нагибать и так медленно работающий форум.. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Hostem Опубликовано 19 Мая 2007 Жалоба Поделиться Опубликовано 19 Мая 2007 Продолжаем нагибать и нагибать и так медленно работающий форум..Почему? ) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Destruction Опубликовано 19 Мая 2007 Автор Жалоба Поделиться Опубликовано 19 Мая 2007 А я бы спросил - зачем?) Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Hostem Опубликовано 19 Мая 2007 Жалоба Поделиться Опубликовано 19 Мая 2007 В общем очень хотелось бы услышать что-то конкретнее . Почему вы считаете, что в данном случае быстрая цитата через аякс будет грузить форум больше чем цитата обычная (желательно указать цитату каких версий рассматриваете 2.х или 1.3)? Подсчитывали какую-то статистику потребности цитирования сообщений в теме и оказалось, что предполагаемая нагрузка вызываемая хттп-запросами+запросами к бд за один и тот же промежуток времени будет больше в ситуации если использовать аякс? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 19 Мая 2007 Жалоба Поделиться Опубликовано 19 Мая 2007 Продолжаем нагибать и нагибать и так медленно работающий форум..А иначе с сохранением форматирования сделать нельзя. А если форум нагружен, зачем такой мод? З.Ы. Значит не буду спешить или не буду выкладывать. Так что если кому нужно, пишите соберу инструкцию... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Destruction Опубликовано 20 Мая 2007 Автор Жалоба Поделиться Опубликовано 20 Мая 2007 Я тему создал - но мне вероятно не нужно... Сделать без Ajax можно. Сделаете - собирайте Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Song Опубликовано 21 Мая 2007 Жалоба Поделиться Опубликовано 21 Мая 2007 Почему вы считаете, что в данном случае быстрая цитата через аякс будет грузить форум больше чем цитата обычная (желательно указать цитату каких версий рассматриваете 2.х или 1.3)?ну потому что обычная быстрая (если взять технологию её из 1.х, не знаю как сделана быстрая в 2.х, поэтому и утверждать не берусь) цитата обходится только лишь ява-скриптом без обращений к базе вообще.IPB 2.x очень перегружен ажаксом и не надо думать, что раз это не технология с перезагрузкой, то это никак не отображается на нагрузке сервака.В быстрой цитате вообще желательно не обращаться к серваку. На то она и быстрая.Всё остальное в двухе уже сделано: кнопки +/- и кнопка "Ответить". Hostem, ты видимо рассматриваешь все фишечки к форуму исключительно исходя из их "крутости". Ну типа ажакс популярен в последнее время в модах IPB, удобен, ну значит его везде где можно нужно вставить, а потом всем сказать, смотрите какой у меня форум: и тут ажакс и тут ажакс..Сторона работы с сервером тебя видимо мало беспокоит. Так же например поступает винград. Встраивают где только можно.Конечно админу нравится когда ему пишется как в фантастических фильмах "Process in progress...", а всё делается в фоне (и как бы и не делается), но всё в результате хорошо. Всё это игрушечки, для самоутверждения админа. Не более того. На самом деле ажакс - это только лишь помощник скрипту. Его переусердие вовсе не скажется хорошо. Никакой статистики я не считал и не собираюсь, это всего лишь моё мнение (и не только моё к слову).Я не отрицаю, вещь очень удобная, но во всём надо знать меру. И, если есть способ поступить проще, но пускай с некоторыми ограничениями, лучше поступить проще, чем делать полное обращение к базе через скрипты. В этом и есть золотая середина. З.Ы. Значит не буду спешить или не буду выкладывать. Так что если кому нужно, пишите соберу инструкцию...Да нет, ты выкладывай. Мы просто дискутируем. Обязательно найдётся тот, кто воспользуется модом и ему будет наплевать на все нагрузки, главное, что удобно.Потом только через пару годиков, когда у него подрастёт юзерская база, он поставит ещё пару десятков модов с ажаксом плюсом к этому. Он придёт сюда и создаст тему "Помогите оптимизировать форум, что надо изменить в запросах. Меня выгоняет хостер...". Таких тем здесь море.Но не все это понимают сразу.Вы просто забываете магическое действие слова "ажакс" в модах на новичков. Хотя будут обязательно и такие, которые не устанавливают все моды подряд, у них не будет траблов, только избранные исходя из соображающих мозгов. Так что выкладывай. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 21 Мая 2007 Жалоба Поделиться Опубликовано 21 Мая 2007 Плюс к сказанному, если свой сервер, то можно увеличить мемори лимит наверно, и тогда не будет вопросов типа "как оптимизировать", так? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.