Добавление комментариев на AJAX. Хак. InstantCMS 1.9

1993
Доброй ночи всем!

Ради спортивного интереса и по просьбе пользователя sotastroy, сделал добавление комментариев без перезагрузки страницы (на всеми так любимом аяксе hoho )
Делал примерно 8 часов, смотрите что получилось

демо: тут

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


заходите, регистрируйтесь, а можно и без регистрации и добавляйте комментарии!



Это хак стандартного компонента COMMENTS с небольшим изменением шаблонов.

Желающие могут скачать архив и посмотреть, чем он отличается от компонента в оффрелизе.

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


Также пока еще не доделал редактирование комментариев и хочу удаление сделать на аяксе.
Но это потом, может кто-то захочет помочь в доработке и (или) предложить еще какие-то идеи.

Пользуйтесь на здоровье!

P.S. хак строго для версии 1.9
Плагин Мои подписки для комментариев и форума 2.0. | Плагин Регистрация и вход через ВК.
Комментарии (30)
͡﴾͡๏̯͡๏﴿ 23 июля 2012 в 03:05 0
Пока не тестировал...Но уже плюсую..этого давно не хватало
͡﴾͡๏̯͡๏﴿ 23 июля 2012 в 03:07 0
Попробовал коммент в блогах отправить со смайлом- то при нажатии на "отправить" ничего не происходит. Браузер-последняя опера!
Def 23 июля 2012 в 03:25 0
аналогично в хроме.


Крот, а что за модуль "Блоги" у тебя?
Крот 23 июля 2012 в 03:35 +1
Крот 23 июля 2012 в 03:31 +1
тоже самое в опере...
странная ошибка
поправил
Крот 23 июля 2012 в 03:50 +1
это не ошибка странная... это одной переменной $model прицепляется сначала класс одного компонента, а потом другого... и все в пределах одной функции...

странно все-таки, почему у меня в хроме работало??? smile

Разработчики, поправьте код!!!
Reborn 23 июля 2012 в 03:23 -1
Нужная вешь. +
Жаль,что при сабмите форма не сворачивается и коммент не появляется.
Его становится видно после обновления страницы.
Крот 23 июля 2012 в 03:31 +2
проверьте еще раз
Reborn 23 июля 2012 в 03:39 -1
Проверил.Теперь всё гуд.Спасиб.)
KS 23 июля 2012 в 04:55 0
Реально полезная штука ! +
если пост большой да еще и с фото, лишний раз его загружать не гуд ))
Malanas 23 июля 2012 в 05:02 0
Случайно ввел неправильно капчу, а сообщение отправилось "Неправильно указан код с картинки!"... без имени пользователя... думаю это неправильно...
Ленивый 23 июля 2012 в 06:27 +1
Это не сообщение, это мессага юзеру об ощибке.
В комментарии она не добавляется, после обновления страницы исчезает.

...ну может её красненьким сделать чтобы, действительно, не путали с комментариями
Malanas 23 июля 2012 в 11:37 0
Все понял. Спасибо.
vitalson9 23 июля 2012 в 06:54 0
не знаю как у всех а у меня редактирование работает нормально
SE7EN 23 июля 2012 в 07:06 0
классно, спасибо!
Mr.Andreius 23 июля 2012 в 09:04 +2
Но это потом, может кто-то захочет помочь в доработке и (или) предложить еще какие-то идеи.

автосклейку дабл постинга еще бы ...
lokanaft 23 июля 2012 в 11:22 0
Вот удаление без повторной загрузки дерева:
Код PHP:
//deleteComment
$(".delcom").live("click", function(){
var delid = $(this).attr("delid");
    $.ajax({
                        type: "POST",
                        url: "/comments/delete/"+delid,
                        data: 'js=1',
                        success: function(data){
                        var what = $("a[name=c"+delid+"]").parent('div');
                        var lvl = what.attr("lvl");
                        what.nextAll().each(function() {
                        if($(this).attr("lvl") > lvl)$(this).remove();
                        if($(this).attr("lvl") == lvl)return false;
                        });
                        what.remove();
                        }

   });
return false;
});
//
lokanaft 23 июля 2012 в 11:30 0
Без загрузки всего дерева при добавлении пропадает живость, то есть мы не знаем, кто там чё ещё написал вдруг.
При клике на "отправить" и торможении ответа сервера, я могу подумать, что надо ещё разок(раз 10) нажать, чтоб сработало наконец.
Крот 23 июля 2012 в 12:31 +1
по хорошему после клика на отправить нужно скрыть все и повесить анимацию отправки

еще думаю сделать отслежку и вывод новых комментариев, но там посложнее будет
Крот 23 июля 2012 в 12:33 +1
хотя можно просто тупо все дерево из аякса менять - но тогда смысл пропадает
SJen 23 июля 2012 в 19:20 +2
ну не совсем пропадает - страницу целиком то перегружать все-равно не придется. Но эт не самый красивый вариант.. Грузить еще раз то, что и так есть на странице (и не факт, что появилось что-то новое)
lokanaft 23 июля 2012 в 22:31 0
А вдруг есть? Да и нагрузка не ужасная.
SJen 24 июля 2012 в 00:00 0
Есть такая мысль -
возвращать дерево на ajax только в том случае если оно поменялось(это мы в php же сможем узнать? - зная максимальный ID исходного дерева), иначе флаг того - что новых комментов не было. Я думаю это логичнее и проще всего - потому что дорисовывать дерево на javascript - это жесть) Я себе это плохо представляю..
lokanaft 24 июля 2012 в 11:00 0
Есть функция аякс загрузки комментов по умолчанию в системе. Узнавать изменилось ли там чего или нет - это тоже запросы к БД. Не знаю, у меня всё работает.
Крот 24 июля 2012 в 12:41 +1
по сути, у нас при отображении всегда есть id последнего комментария...
можно по таймеру получить комментарии >id и вывести их под соответствующие родительские комментарии (parent)
Evgenii 24 июля 2012 в 13:03 0
Пишу комментарий, - думает , думает а потом вот что получается...Помогите...
Крот 24 июля 2012 в 13:18 +2
в личку сайт пришлите, тут ничего не видно
Evgenii 24 июля 2012 в 13:55 +1
отправил
sotastroy 25 июля 2012 в 01:17 0
Отлично, огромное спасибо, протестирую и отпишу. Но может все-таки сделать полный вариант, с удалением, редактированием? Я думаю благодарные тут найдутся $
BELIEVER 24 мая 2013 в 17:56 +1
хорошо бы на 1.10