Ajax комментарии

Всех поздравляю с наступившим 2009 годом! :)
За первые праздничные дни набросал тестовую версию ajax комментариев. Теперь для добавления коммента и обновления дерева не нужно перезагружать страницу.
Пощупать новинку можно, например, по этому адресу — http://new.livestreet.ru/blog/dev_livestreet/589.html Так же там работает новый механизм голосования за комменты.
Просьба потестировать новые комменты с голосованием и сообщать о всех багах. БД на сайте new.livestreet.ru используется та же, что и на livestreet.ru

ЗЫ Отдельное спасибо хочу сказать deniart'у за быструю верстку этой страницы.

142 комментария

avatar
комментировать естественно можно по этому адресу — http://new.livestreet.ru/blog/dev_livestreet/635.html
  • ort
  • +10
avatar
а чтобы авторизоваться нужно сходить по адресу — http://new.livestreet.ru/login
avatar
вы можете перечислить в каких файлах находится изменения относительно новой системы комментариев?(экшены+шаблоны, просто перечислить в каких, без указания какие были изменения)

*чтобы можно было портировать на ветку 0.2(как сделаем выложу)
avatar
смотри изменения в SVN от даты этого топика
avatar
Работает.
avatar
угу
avatar
Занятно ) даже ветки можно сворачивать…
  • skif
  • +1
avatar
тут скорее вся фишка в обновлении комментов )
avatar
обновление дерева вроде как работает.
avatar
но коменты добавляются с перезагрузкой страницы т.е. без аякса
avatar
уверен?
avatar
сейчас проверю ещё раз
avatar
да, страница перезагрузилась… js у меня разрешен. FF3
avatar
как ты определяешь, что она перезагрузилась? :)
перед отправкой формы выдели текст на странице и потом нажми отправить коммент. + в УРЛ не должен якорь при аяксе подставляться
avatar
А строка при получении запроса фаерфокс кажет ход загрузки, как будно идет перегруз страницы, но ФАЕРБАГ расставит всё на свои места. (признаться с моим инетом я ещё не залогинился туда)
avatar
Можно я теперь проверю :)
avatar
Да так и есть. перезагрузки не наступает. Просто это кажется потомучто значек загрузки стьраницы крутится и строка получения в статусе прогресс показывает. Всё отлично.
avatar
Нужно на свернуть/развернуть повесить слайд эффект, могу помочь сделать. Ну и на проявку новых камментов можно ФЭЙД повесить, со слайдом. То есть сначало разьехалась плашка с новым камментом, потом проявилась от opacity:0 к opacity:1.
avatar
обычно не известно в каком месте появится новый коммент и делать для него анимацию, которую юзер не увидит сомнительно. А вот анимацию поля ввода коммента можно сделать, но я пока не разобрался с эффектами в мутулсе
avatar
Ооооо, отлично! и дизайн новый
avatar
:)
avatar
когда каменты на одном уровне не сразу понятно, кто автор какого камента
это было первое ощущение, которое потом прошло… но все же
avatar
Занятно, и верстка уже почти готова
avatar
Ну пока видно одну страницу. Макс с остальными ещё всё плохо?
avatar
С наступившим всю честную братию: о)
avatar
немного доработал, теперь свой коммент при добавлении не считается новым и не появляется на пимпе для обновления
  • ort
  • +1
avatar
для старого шаблона будет синхронизация на SVN?
avatar
скорее всего нет, я не потяну такой объём работы
avatar
это же последняя функция, почему бы ее не внедрить в старый шаблон? как же нам производить синхронизацию :(
avatar
для внедрения новых комментов в старый шаблон нужно его(шаблон) переверстывать, а это еще тот геморрой
avatar
ну тогда хотябы последовательные коммиты на SVN, для того, чтобы можно было понять где новый шаблон а где новые функции. Это хоть возможно?
avatar
раздельно коммитить не получиться, новый шаблон будет в отдельном каталоге в /skin/
avatar
добавил скролл на добавленный коммент
  • ort
  • 0
avatar
А шапка видимо не работает еще пока. Зашел неавторизованным и увидел там deniart :-)
Мне даже дали коммент написать, правда потом пришло сообщение, что надо авторизоваться.

PS: Всем с наступившем — много интересного будет в этом году, попкорн запасайте :-D
avatar
Вау! Супер! :-)
avatar
С наступившим Новым годом, спасибо Максу огромное и всем кто ему помогает!
avatar
Вот это высший класс! Восторг!
avatar
ТОлько отступ между комментами чуть больше сделайте, чтобы не сливались.
avatar
добавил эффект слайда для формы коммента
  • ort
  • +4
avatar
:) теперь со свёрткой дерева сидишь? Правда Mootools увлекательная штука.
avatar
там косяки вылазят при свертке/развертке друг в друге. В скрипте есть код закомментированый для слайда дерева
avatar
тест
avatar
во. написало от моего имени а в верху: «deniart (выход»
avatar
это заглушка
avatar
Кстати, мне кажется, что ветки комментов изначально лучше свернутыми сделать, а потом если юзер хочет — разворачивает. Смысл их сворачивать, если они уже развернуты?

Так видел в других местах и так удобнее, имхо. А отступ лучше все-таки сделать, будет вообще супер, а то малехо сливаются.
avatar
Кстати, а что за 2 кнопочки около названия блога? плюсик и штекер, это подключение к блогу?
avatar
приоткрывая завесу тайны:
«плюсик» — это добавление в социальные закладки топика, при нажатии будет виден список сервисов социальных закладок. Надеюсь эту функцию реализуют :)

«штекер» — это стандартная иконка для подключения к блогу
avatar
может лучше делать их свернутыми после того, как юзер в них побывал уже?
т.е. если глянул — значит прочитал.)
а новые — держать развернутыми…
avatar
Я к тому, что функция в данном виде выпадает: вот ты зашел в топик, ты же все комменты читаешь, и сворачивать отдельные ветки тебе зачем, если они уже развернуты и готовы для прочтения? ) Т.е. выходит что эта функция вообще не нужна, а вот если бы ветки были изначально свернуты, появилась бы мотивация к использованию «плюсика» — чтобы развернуть ветку.
avatar
Допустим если ветка пошла совсем левая, то сворачиваешь и наслаждаешься более интересными далее. Когда они все свернуты, то бывает сложно быстро «сканировать» текст на предмет нужного.

Мне кажется, что вариант как свернутый (посмотрите на примере сети Профессионалы — очень напрягает), так и развернутый оба плохи. Здесь нужно некую золотую середину найти. Может сворачивать комментарии начиная с третьего уровня допустим? Это и общий смысл ветки позволит уловить и разгрузит визуально все комментарии.

Опять же, если совсем другим путем пойти, то зачем весь этот сыр бор для сворачиваний делается в первую очередь? Мне кажется самая большая проблема — найти откуда ноги растут (или другими словами предка) у того или иного комментария, так? На хабре для этого сделаны совсем непотребные стрелочки, где-то сворачивания делают и т.д. А может попробовать ввести некую динамику в это дело? Я вот чего придумал:

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

Такой вариант может очень существенно увеличить удобство работы с комментариями и уменьшит давление на колесо мыши.
avatar
+1, идея понравилась

Нюанс в том, что коммент по смыслу может быть и не связан с предком (первоначальным комментом), а относится к другому ответу, тогда выпадающее окошко с предком вряд ли о чем то скажет. Но идея все равно удачная, возьму на заметку ;)
avatar
вы не поняли. смотрите.
я захожу в тему. там 10 комментов.их них у каждогого 10 веток. к прмиеру.
я первый раз зашел в тему — они все развернуты.в базе к примеру (или в куках, где хотите). поставилась заметка «ага, эта ветка прочитана/отобразилась один раз».
когда я во второй раз захожу в топик, где еще новых 10 комментов с 10 ветками, то первые 10 (которые я по сути уже читал) — свернуты.
а новые 10, которые мною не читаны — развернуты. и не надо ниче сворачивать самому…

из минусов — в базе дофига всего хранить… брююю
avatar
хотя может я вас не понял… в 4 часа ночи как-то туго думается)
avatar
ветка флуда, чем не мотивация её свернуть? и продолжить читать другие комменты
как вариант можно сделать пимпы: свернуть все и развернуть все
avatar
а сложно сделать подгрузку длинных веток аяксом? так было бы интересней… ну и просмотр отдельных веток, как в жж, тоже имеет право на существование ;)
avatar
тут скорее вопрос, а нужно ли это? )
avatar
Вот вот, будет полезно (пимпы)
avatar
Почему бы не сделать что-то между livejournal и digg, чтобы когда коментов на странице очень много все ветки сворачивались до коментов первого и второго уровней?
avatar
я о чем и говорил
avatar
Я конечно дико извиняюсь, но почему все такое меленькое :) Я понимаю что это легко переделывается, но неужели у всех стоит 800*600? У меня например, просто пиксель-хантинг получается. В остальном всё отлично конечно.
avatar
+1 глазам больно( все сливается…
avatar
странно, у меня 1680 по ширине при 15" матрице, выглядит нормально.
скинь скрин своей мелкоты
avatar
А скоро эту версию виложите?
avatar
Мне очень нравится ) Ждем )
avatar
Теперь совсем не жалею, что остановил свой выбор на LiveStreet. Сравнивал LiveStreet, BigStreet и explay =)
avatar
explay можно было не сравнивать :)
avatar
Эх как бы подгадать к релизу логотипчик и другие доработки?!) По времени не сориентируете?
avatar
Не по теме сообщения. Просто — вниманию разработчиков.
Всё замечательно с Ливстритом. Но есть кое что, без чего индексация сайта ПС слегка притормаживает. Нужен sitemap.xml причём и для Google и для Yandex-a очень нужен.
avatar
поюзайте поиск. я выкладывал модуль генерации сайтмэпов для гугла
avatar
заработал на аяксе «Прямой эфир», теперь так кроме комментов есть и последние топики. посмотреть/потестировать можно здесь http://new.livestreet.ru
  • ort
  • 0
avatar
Я что-то не понял, а зачем «Прямой эфир» вообще делать на аяксе?
avatar
Если это для того, чтобы в одном блоке разместить и последние комменты и публикации, то не понятно зачем изначально грузить аяксом. Лучше грузить через аякс только при смене публикации/комменты. А то как-то глупо смотрится при загрузке страницы
avatar
ничего глупого не вижу
avatar
имхо это не глупо, а не оптимально: раз уж сразу после загрузки страницы последует автоподзапрос последних комментов, то во-первых лишний запрос к веб-серверу. многие бьются за минимизацию их количества, во-вторых повторная инициализация значительной части движка (выделения памяти, подгрузка файлов, интепретация...). повторный коннект к базе. на это все нужно время и ресурсы, которые секунду назад уже были потрачены :-).

так что с точки зрения экономии ресурсов более рационально просто еще один запрос сделать к БД за комментами, чем повторно делать все с начала ради одного запроса.
avatar
Хм, что там тех ресурсов? А мы думали на аяксе подтягивать ленту камментов/постов/голосов/событий. Тоесть висишь ты на странице, читаешь. На блок глянул, а он уже показывает все изменения произошедшие на сайте.

Заранее предвижу вопрос про отсутствие таких событий. Мы запустили сайт внутри сети в январе. На сайте сидит больше 500 человек одновременно. Постов, опросов и коллективных блогов создана уже куча. И вот там такой аякс оправдан.

(ЗЫ: Кстати ort движок с нагрузкой справляется на ура 10% процессора апачь и иногда до90% мускуль, но кратковременно пик проскакивает. Так что движок c БД работает не по детски круто)
avatar
с выключенным memcached все значительно медленнее работает :-) так что в подобных проектах без кеширования никуда
avatar
мемкэшед к своему стыду не включили :) Представляешь это на файлах всё. (правда мы сервак целиком под это купили)
avatar
в движке кеширование(лайфтайм) настроено не оптимально для посещаемых проектов, во многих местах время нужно увеличить в десятки раз, тогда будет еще быстрее :)
и на счет кеширования надо попробовать разбить большие запросы с джойнами на тупые отдельные подзапросы и кешировать сущности отдельно, а не всю пачку сразу. Возможно будет еще больший выигрыш, хотя это нужно экспериментировать
avatar
здесь больше уклон в сторону унификации, сделать получение данных только в одном месте + страница с нужным контентом загружается быстрее, т.к. не грузятся блоки, модемщики и GPRSники это должны ощутить :)
это, кстати, позволяет в данных блоках вообще отказаться от подключения обработчиков блоков в Смарти, если речь зашла о ресурсах :)
avatar
А имеет смысл кэшировать эти данные? Что уже запрос в БД или запрос к файлу с подготовленными данными?
avatar
уже, в смысле какое из двух тормознее. В смысле является узким местом?
avatar
они и так кешируются на уровне модуля
avatar
прикольно
avatar
В хроме иконка на третьем повороте колесика при прокрутке падает вниз за край экрана
добавление important в «top: 220px !important;» класса .update решило проблему, но я не знаю правильно ли так делать или нет
avatar
возможно был глюк во время отладки js кода, попробуй еще проверить
avatar
да, сейчас все хорошо…
это повторялось в течении пары дней, я сразу не написал, мало ли разработка, а сегодня посмотрел во всех остальных браузерах, там все нормально было, а вот в хроме падало, решил все же написать :)
avatar
кстати про эту кнопку… а будут стрелочки крутиться, пока данные получаются? а то нажал и не понятно нажалась она или нет
avatar
они и так крутятся при получении данных, просто обмен может происходить очень быстро и визуально не всегда заметно
avatar
ой и правда… они вертятся! :)
а может дать им провернуться хотя бы кружок? ну или как-нибуть по другому, чтоб отклик от кнопки был при нажатии
avatar
сделал
avatar
я счастлив, честное слово, спасибо
avatar
Новый дизайн = СУПЕР! С нетерпением жду релиза LS :)
avatar
Круто, ждем релиза :)
avatar
Привет!
Проверка работи скрипта…
avatar
Хорош скрипт
avatar
Теперь при просмотре топика с новыми комментами можно перемещаться по ним + появилась возможность удаление/восстановления комментов
  • ort
  • +1
avatar
а каким образом происходит перемещение? что-то я пока не увидела
avatar
таким же образом как и при обновление комментов — пимпа справа
avatar
Макс, спасибо за фичу! а можно организовать такую штуку, чтобы новый комментарий открывался посередине экрана, а не сверху? чтобы можно было не скролируя видеть, на что собственно комментарий. В javascript не силен, но думаю это както должно решаться. было бы просто супер!
avatar
добавил возможность скролла в центр, для этого нужно раскомментить строчку:
<code>var offsetX=0;
				//для скролла в центр
				//offsetX=-window.getSize().y/2;
				docScroller.setOptions({ 
					duration:500, 
					offset: {
        				'x': 0,
        				'y': offsetX
   					}
 				});</code>
avatar
попутал Y с X-ом =)
avatar
хохо, круто! пойду тестировать :)
avatar
в опере не работает
avatar
работает, надо на циферку количества новых комментов нажимать
avatar
в том то и дело, что ее в опере нет а в ФФ есть :)
avatar
у меня в FF нет :)) что за мистика такая?
avatar
мужики, ну когда новы релиз то будет?
avatar
появились удобные штуки: свернуть / развернуть всё дерево комментариев
  • ort
  • +2
avatar
Макс, а зачем эта штука? Ведь ее значение не запоминается нигде и при перезагрузки страницы опять свернутое дерево разворачивается.
avatar
удобнее читать большие деревья
avatar
Вот если бы деревья были свернуты, если в них нет новых комментариев, то да, было бы супер. Лучше разворачивать, чем сворачивать. НО тогда лучше делать не малозаметный «плюсик», а под корневым комментарием писать «раскрыть ветку из X-ми комментариев».
И еще такой момент, когда добавляешь новый комментарий по ajax, спорно, что все остальные сразу делаются прочитанными. Ведь я могу ответить на первый попавшийся комментарий, не прочитав ни одного нового ниже, потом фиг поймешь какие из них были новые, не даты же добавления читать. Я бы отмечал комментарии прочитанными только при обновлении страницы, а не при добавлении комментария.
avatar
пофиксил второй пункт
avatar
как всегда оперативен ;)
avatar
нука, извините, тест :)
avatar
тоже проверяешь комменты на уровень вложенности? и сокрытие?
avatar
наверное еще тут версия постарее
avatar
а хотя нет. работает.
avatar
заработала навигация по комментам
  • ort
  • +1
avatar
теперь текущий коммент по центру и выделяется цветом + анимация процесса добавления коммента
  • ort
  • +4
avatar
кстати после добавления коммента, у меня почему-то экран постоянно куда-то вверх съезжает и я своего комментария не вижу.
avatar
дайте пожалуйста сразу ответы на стандартные вопросы, о браузере, его версии, ОС и её версии, отключенных и включенных скриптах и всём остальном что может пригодиться… и впредь при описании ошибки вставляйте эту информацию, пожалуйста
avatar
пардон, Firefox 3.0.7., Vasta 64,
avatar
чо то я не пойму:) comments.js я нашёл, а как заставить работать его?
avatar
А есть способ отключить ajax в комментариях и вообще по сайту, так вот одним махом?
  • Sky
  • 0
avatar
На аяксе половина юзерской части движка завязано. Махом разумеется нет. Да и не махом запаритесь дописывать/переписывать.

А вы что, заботитесь о том одном проценте(думаю, даже меньше) у которого отключен JS? Аякс это удобно и красиво, без аяксовых фишек конкретно LS потеряет много своих фишек — если бы было хотя бы соотношение 70/30 а не 99/1, то может быть и стоило бы под 30% без яваскрипта что-то делать. А при сегодняшнем раскладе это не нужно.
avatar
Без аякса, оно надёжнее, и какие именно фишки вы имеете ввиду на аяксе чисто LS? Приведу пример, отсылка комментариев, без аякса ты точно знаешь результат, а с аяксом иногда случается что связь с сервером потеряна и значок обновления крутится и крутится, я конечно понимаю что для того чтобы проверить результат надо например обновить страницу, а как же наши любимые пользователи, которые жмут и жмут и плачут…?
avatar
такой вопрос, что видит пользователь при отправки формы на сервер(без всякого ajax), когда с сервером потеряна связь?
avatar
Догадываюсь — timeout error (страница не ответила в заданное время)? Это и результат — пользователю всё понятно. Вопрос, тут выше говорили что ajax это в движке, а мне так думается надо тему править?
avatar
Может, тогда стоит озаботиться качественным хостингом? На нормальном хостинге никаких таймаутов быть не должно, согласитесь. Максимум что видел конкретно на ЛС — задержка ответа с тормознутого хоста в сша(информационный бокс вылезал через 4-5 секунд), но при безаяксовом движке от тормозов, если сервер у чукчи в юрте стоит вы не избавитесь.

говорили что ajax это в движке, а мне так думается надо тему править?

/incude/ajax/ смотрели? Весь этот функционал используется для добавления комментов/голосов и еще кучи всего, его надо распихать тогда по новой логике. Запаритесь — я вам говорю. Да и не нужно это 100%.
avatar
А от чего может зависеть скорость работы аякса? Последний ЛС вертится на апаче, вдска. Нагрузка большая (около 3к уников в сутки), но хостер говорит реусрсов у нас еще дофига и затыка по серверу нет. Однако добавление комментов и всякие голосовалки идут с дикой задержкой. Т.е. тыкнул в стрелочку — результат будет только через 20-40 секунд. То же самое и с добавлением комментов.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.