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

+49
2.7K
Доброй ночи всем!

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

демо: тут

Группе, к которой вы принадлежите, запрещено просматривать этот скрытый текст


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



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

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

Группе, к которой вы принадлежите, запрещено просматривать этот скрытый текст


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

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

P.S. хак строго для версии 1.9
0
nikitka nikitka 11 лет назад #
Пока не тестировал...Но уже плюсую..этого давно не хватало
0
nikitka nikitka 11 лет назад #
Попробовал коммент в блогах отправить со смайлом- то при нажатии на "отправить" ничего не происходит. Браузер-последняя опера!
0
Def Def 11 лет назад #
аналогично в хроме.


Крот, а что за модуль "Блоги" у тебя?
+1
Крот Крот 11 лет назад #
тоже самое в опере...
странная ошибка
поправил
+1
Крот Крот 11 лет назад #
это не ошибка странная... это одной переменной $model прицепляется сначала класс одного компонента, а потом другого... и все в пределах одной функции...

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

Разработчики, поправьте код!!!
-1
Reborn Reborn 11 лет назад #
Нужная вешь. +
Жаль,что при сабмите форма не сворачивается и коммент не появляется.
Его становится видно после обновления страницы.
+2
Крот Крот 11 лет назад #
проверьте еще раз
-1
Reborn Reborn 11 лет назад #
Проверил.Теперь всё гуд.Спасиб.)
0
KS KS 11 лет назад #
Реально полезная штука ! +
если пост большой да еще и с фото, лишний раз его загружать не гуд ))
0
Malanas Malanas 11 лет назад #
Случайно ввел неправильно капчу, а сообщение отправилось "Неправильно указан код с картинки!"... без имени пользователя... думаю это неправильно...
+1
Сергей Петрович Сергей Петрович 11 лет назад #
Это не сообщение, это мессага юзеру об ощибке.
В комментарии она не добавляется, после обновления страницы исчезает.

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

автосклейку дабл постинга еще бы ...
0
lokanaft lokanaft 11 лет назад #
Вот удаление без повторной загрузки дерева:
Код 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;
});
//
0
lokanaft lokanaft 11 лет назад #
Без загрузки всего дерева при добавлении пропадает живость, то есть мы не знаем, кто там чё ещё написал вдруг.
При клике на "отправить" и торможении ответа сервера, я могу подумать, что надо ещё разок(раз 10) нажать, чтоб сработало наконец.
+1
Крот Крот 11 лет назад #
по хорошему после клика на отправить нужно скрыть все и повесить анимацию отправки

еще думаю сделать отслежку и вывод новых комментариев, но там посложнее будет
+1
Крот Крот 11 лет назад #
хотя можно просто тупо все дерево из аякса менять - но тогда смысл пропадает
+2
SJen SJen 11 лет назад #
ну не совсем пропадает - страницу целиком то перегружать все-равно не придется. Но эт не самый красивый вариант.. Грузить еще раз то, что и так есть на странице (и не факт, что появилось что-то новое)
0
lokanaft lokanaft 11 лет назад #
А вдруг есть? Да и нагрузка не ужасная.
0
SJen SJen 11 лет назад #
Есть такая мысль -
возвращать дерево на ajax только в том случае если оно поменялось(это мы в php же сможем узнать? - зная максимальный ID исходного дерева), иначе флаг того - что новых комментов не было. Я думаю это логичнее и проще всего - потому что дорисовывать дерево на javascript - это жесть) Я себе это плохо представляю..
0
lokanaft lokanaft 11 лет назад #
Есть функция аякс загрузки комментов по умолчанию в системе. Узнавать изменилось ли там чего или нет - это тоже запросы к БД. Не знаю, у меня всё работает.
+1
Крот Крот 11 лет назад #
по сути, у нас при отображении всегда есть id последнего комментария...
можно по таймеру получить комментарии >id и вывести их под соответствующие родительские комментарии (parent)
0
Evgenii Evgenii 11 лет назад #
Пишу комментарий, - думает , думает а потом вот что получается...Помогите...
+2
Крот Крот 11 лет назад #
в личку сайт пришлите, тут ничего не видно
+1
Evgenii Evgenii 11 лет назад #
отправил
0
sotastroy sotastroy 11 лет назад #
Отлично, огромное спасибо, протестирую и отпишу. Но может все-таки сделать полный вариант, с удалением, редактированием? Я думаю благодарные тут найдутся $
+1
BELIEVER BELIEVER 10 лет назад #
хорошо бы на 1.10

Еще от автора

Инвайтер 1.9 для 1.10.6
Доброго всем времени суток! Решил нарушить сложившуюся здесь традицию и решил вернуться сюда с обновлениями.
Инстант "по взрослому". Часть 2. Авторизация. Аякс. v1.10
Доброго всем времени суток! Продолжая серию Инстант "по взрослому", сегодня хотел бы показать более мощный плагин авторизации.
Инстант "по взрослому". Часть 1. Авторизация. Счетчик неверных входов. v1.10
Доброго всем дня! Продолжим наши уроки по усовершенствованию Инстанта. Сегодня мы будем изучать и усовершенствовать первую ветку Инстанта.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.