Новые сообщения на AJAX в тайтле

+47
6.23K

Добрый день!

Вот предлагаю вашему вниманию простой плагин, который отображает информацию о новом сообщении в заголовке страницы.


Установка:
1. Скачать вот тута.
2. Залить на сервер.
3. Установить и запустить в админке.
4. Для 1.10 и 1.10.1 (для более поздних версий системы можете пропустить этот пункт) в файле /core/classes/user.class.php
Заменить:
  1. 153 return $this->loads_users[$info['id']] = $info;
На:
  1. return $this->loads_users[$info['id']] = cmsCore::callEvent('LOAD_USER', $info);
v0.2 совместно с lokanaft
+ поправел баг
+ скрипт грузится при загрузке пользователя и не грузится для гостей
+ добавлена возможность моргания заголовка окна


До сообщения:
Иллюстрация
После
Иллюстрация
Спасибо вот сюда:
WMR кошелек: R105352751274
+1
Димитриус Димитриус 11 лет назад #
Немного поправил, скачайте заново.
+1
bondar bondar 11 лет назад #
А что должно быть ?? У меня ничего не происходит ))
0
Димитриус Димитриус 11 лет назад #
Суть такая:
Когда человеку приходит новое сообщение, в заголовке страницы пишется новое сообщение.
+1
bondar bondar 11 лет назад #
Я так и подумал, странно, сообщения нет ((
0
Димитриус Димитриус 11 лет назад #
Плагин включили?
+1
bondar bondar 11 лет назад #
да, включил)
0
Димитриус Димитриус 11 лет назад #
Были мысли сделать еще, что бы само сообщение пролисталось..
+1
bondar bondar 11 лет назад #
А можно как-то сделать, чтоб сообщение, всплывало снизу (типа вк, но не суть), и было постоянно , даже если ты лазишь по страницам до тех пор, пока не нажмешь закрыть или прочитать ? Если можно - то скажите сумму, готов купить. Функционал и прочие функции не интересуют. Просто - новое сообщение- прочитать или закрыть.
0
bondar bondar 11 лет назад #
Даже без текста самого сообщения, простое текст - новое сообщение.
+1
Димитриус Димитриус 11 лет назад #
Хорошо, я подумаю.
Вечером отпишусь
0
bondar bondar 11 лет назад #
Спасибо
+5
Крот Крот 11 лет назад #
А можно как-то сделать, чтоб сообщение, всплывало снизу (типа вк, но не суть), и было постоянно , даже если ты лазишь по страницам до тех пор, пока не нажмешь закрыть или прочитать

можно smile
я сделал, пока не ткнешь не пропадет, при клике на сообщение, переход на само сообщение, еще появляется окошко, если друг на сайте вышел, зашел
но если страницу обновить(или перейти по ссылке) соответсвенно исчезнет
можно при желании сделать повторное появление окна до тех пор, пока по нему не "ткнут"
+5
Крот Крот 11 лет назад #
еще, окно появляется только в том окне, в котором сидит пользователь, т.е. если открыто 10 страниц с сайта, то появляется только в активном окне
0
qwest qwest 11 лет назад #
А для какой версии?
+1
Димитриус Димитриус 11 лет назад #
Здорово =)
Дайте линк на скачку или на блог)
0
Evgenii Evgenii 11 лет назад #
Тоже дайте линк на скачку
+3
Крот Крот 11 лет назад #
Ребят, версия сделана для 1.9, сделана на long poll, т.е. мгновенный приход сообщения
НО, есть некоторые траблы при тестировании на локальном сервере при нагрузке

попробую разместить на нормальном хостинге, потестю 1.10.1, если все будет ок, выложу
если нет, придется тупо по таймеру следить sad
0
Димитриус Димитриус 11 лет назад #
Почитал, что такое лонг пол smile Штука хорошая, но постоянно держать коннект с сервером в нашем случае не айс.

А если открыто несколько страниц они точно не держат коннект?
0
Крот Крот 11 лет назад #
но постоянно держать коннект с сервером в нашем случае не айс
да, думаю придет даун, когда число онлайнеров превысит число воркеров апача smile

НО, уже упомянутая несколькими постами выше система комментариев CACKLE работает как раз в лонгпулле и на php
вконтакте тоже работает на логнпулле (конечно, же там используется node.js, что снимает ограничения архитектуры apache+php)

итого, есть успешная реализация в рунете и на php
почему бы и нам не сделать?

а вот картинки, которые давно хотел выложить, чтобы не быть голословным
""

""

извините, что я пишу сюда и не по теме)
0
Димитриус Димитриус 11 лет назад #
Это конечно хорошо, но не надо забывать, что за частую и пользователей на VPS и тем более не выделенный сервер.
Сразу подумал, о том, что может есть смысл сделать опциоально, держать коннект или делать с задержкой раз в н секунд как это сделано в это исполнении.
0
Крот Крот 11 лет назад #
согласен, так сам и планировал
и еще, там в соединениях библиотеку для nginx нужно ставить, не все виртуальные хостинги это разрешат
0
Shishlena Shishlena 11 лет назад #
И я такое хочу!!! :)))))))))
0
Telema93 Telema93 11 лет назад #
это предыдущий, только под 10? Нужная штука, плюс! Жаль, никак не могу купить личку на яве с аяксом.
+2
Скела Скела 11 лет назад #
игрался - но ни чего не появляется..
0
Dost Dost 11 лет назад #
Скрин бы показали.
0
Димитриус Димитриус 11 лет назад #
ок.
0
qwest qwest 11 лет назад #
Это как в одноклассниках
0
IRATE IRATE 11 лет назад #
Вещь нужная, но многие простые юзеры не знают про адресную строку - у них есть Яндекс, куда они вбивают, что ищут, а глаза вверх не поднимают. Было бы снизу.
0
Димитриус Димитриус 11 лет назад #
Верно говорите...
Думаю сделать динамичную, что-бы менялась с предыдущим тайтлом
0
Станислав Григорьевич (Мозголом) Станислав Григорьевич (Мозголом) 11 лет назад #
Проверял на Mozilla Firefox и Яндекс браузере, что то плагин не работает.
0
Димитриус Димитриус 11 лет назад #
хм... а в хроме работало?
0
Димитриус Димитриус 11 лет назад #
Сейчас сам проверю
0
Димитриус Димитриус 11 лет назад #
В мозиле работает.
Яндекса у меня нет.
Вы точно плагин включили?
0
Станислав Григорьевич (Мозголом) Станислав Григорьевич (Мозголом) 11 лет назад #
Установил и включил, но вот изменений нет что на мозиле что на яндексе одно и тоже.
""
+1
Димитриус Димитриус 11 лет назад #
странно...
Есть вариант, что из-за последней моей правки не работает делал её в архиве уже...
Вечером буду дома, гляну...
0
Димитриус Димитриус 11 лет назад #
Надо посмотреть через сервер...
Архивы идентичные.
+1
st.Puh st.Puh 11 лет назад #
Установил,не работает.
0
lokanaft lokanaft 11 лет назад #
Вы бы не:
Код PHP:
  1. $opt = $inCore->request('opt', 'str');
  2. if ($opt=='data'){
А что-то нечто:
Код PHP:
  1. if(@$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'){весь код}
Сделали бы. Может быть из-за этого не работает.
0
Димитриус Димитриус 11 лет назад #
1. проверил архив, и то что у меня на сервере одно и тоже
2. Данная запись уже есть, так-как идёт через класс include(PATH.'/core/ajax/ajax_core.php');
3. Надо искать причину по месту.
0
lokanaft lokanaft 11 лет назад #
Так уберите оттуда вообще параметры тогда. Помню у меня тоже были проблемы с параметрами как то.
0
Димитриус Димитриус 11 лет назад #
Я посмотрел, у них аякс работает. Отдает нулевое значение.
Дело в запросе получается.
0
lokanaft lokanaft 11 лет назад #
Так вот у вас же ничего и не отдаст, если параметр не найден. И у меня запрос работал, но параметры не передавал, пока я, вроде бы, не заюзал другую функцию для запроса.
0
Димитриус Димитриус 11 лет назад #
А как вы проверяете передает он параметры или нет!?
0
lokanaft lokanaft 11 лет назад #
Ну как, пишу в пхп вывод этих параметров, если нету - не передались scratch
0
Димитриус Димитриус 11 лет назад #
При работе с AJAX что, бы увидеть переда параметр или нет можно воспользоваться сл. инструментами: В Мозиле файрбаг (Вкладка сеть кажись)в Хроме(инструмент разработчика вкладка network) При отправке аякса вы увидите это, что передано и куда передано и что ответил сервер
0
lokanaft lokanaft 11 лет назад #
В том то и дело, что там всё нормально было с параметрами, но через закаулки обработки параметров движка они не проходили)
+1
lokanaft lokanaft 11 лет назад #
Хм, установил - работает!)
+1
lokanaft lokanaft 11 лет назад #
Вот засада =DDDDDDDDDD :
Код PHP:
  1. $sql ='SELECT COUNT(*) FROM cms_user_msg WHERE is_new = 1 and id='.$User_id;
Ключевая фраза: "and id".
0
Димитриус Димитриус 11 лет назад #
что это значит!?=)
Ты был не авторизован? =)
0
Димитриус Димитриус 11 лет назад #
я сам понял =)
0
Димитриус Димитриус 11 лет назад #
Спасибо, архив перезалил =)
+3
lokanaft lokanaft 11 лет назад #
С вашего позволения, если можно, слегка доработанная версия.
Что умеет: моргает заголовком, в нём пишет кол-во новых сообщений, если вы прочли сообщения в другой вкладке например, то моргать перестаёт и возвращает прежний заголовок.
В data.js можно настроить:
Код JS:
  1. if(newmsg_iters > 30)newmsg_iters = 0;
  2. },500);
  3. })
500 - это пауза между морганиями заголовка в миллисекундах 500 = 0.5 сек
30 - это число надо умножить на паузу и вы получите промежуток времени между запросами к серверу, сейчас 500*30 = 15 сек
+2
lokanaft lokanaft 11 лет назад #
Ах да, теперь он висит на другом евенте и для гостей не загружается.
+1
Димитриус Димитриус 11 лет назад #
Я только за =)
0
Димитриус Димитриус 11 лет назад #
Архив снова обновлён и перелазит, спасибо lokanaft.
Актуальная версия 0.2
0
xxuuu xxuuu 11 лет назад #
Как себя поведет на мобильных браузерах?
+1
st.Puh st.Puh 11 лет назад #
Прошу прощения но плагин у меня так и не заработал,скачал обновленный архив, старый плагин удалил новый установил,почистил кеш браузера и сайта, но сообщения не появляются.Проверил в браузерах Мозила,Хром,Опера и IE.В чём может быть проблема?
+1
Станислав Григорьевич (Мозголом) Станислав Григорьевич (Мозголом) 11 лет назад #
Поддержу, тоже не работает. Проверил на чистом Instat и на основном сайте, но результата нет.
+1
lokanaft lokanaft 11 лет назад #
http://instantcms.ru/blogs/lunyi-blog/sankci-i-shtrafy-prava-dlja-foruma.html
Выполните правку фала как в пункте 2 установки и заработает.
0
lokanaft lokanaft 11 лет назад #
*файла
0
Димитриус Димитриус 11 лет назад #
Обновил пост, добавил инструкцию.
0
Димитриус Димитриус 11 лет назад #
Отписался каждому, будет искать проблему индивидуально.
+2
st.Puh st.Puh 11 лет назад #
Зделал как сказал lokanaft
в файле /core/classes/user.class.php
Заменил:
приблизительно 153 строка
Код PHP:
  1. return $this->loads_users[$info['id']] = $info;
На:
Код PHP:
  1. return $this->loads_users[$info['id']] = cmsCore::callEvent('LOAD_USER', $info);
И все заработало.Спасибо.
0
Станислав Григорьевич (Мозголом) Станислав Григорьевич (Мозголом) 11 лет назад #
Большое спасибо Димитриус и lokanaft что уделили внимание, пока что всё работает!
0
st.Puh st.Puh 11 лет назад #
Пришлось отключить плагин так как перестало выводить людей в модуле Dezerit-а "Люди" mod_dt_people
0
Станислав Григорьевич (Мозголом) Станислав Григорьевич (Мозголом) 11 лет назад #
А у меня работает с этим модулем нормально, ошибок пока не заметил.
0
Tsarkoff Tsarkoff 11 лет назад #
Добрый вечер, а можно данное решение дополнительно связать с элементом сообщения в стандартном меню?
0
Димитриус Димитриус 11 лет назад #
Вы имеете в виду вывести ко-во сообщений?
0
Tsarkoff Tsarkoff 11 лет назад #
да
0
Димитриус Димитриус 11 лет назад #
да, можно.
0
Tsarkoff Tsarkoff 11 лет назад #
если не секрет, не могли бы вы подсказать, как это можно реализовать?
0
Димитриус Димитриус 11 лет назад #
конечно могу. всё просто.
берёте вот этот файл data.js
добавляете функцию определения сколько на данный момент сообщений.
Если кол-во сообщений больше 0 то по классу my_messadge добавляете кол-во сообщений которое у пользователя.

Это так вкратце алгоритм.
0
Tsarkoff Tsarkoff 11 лет назад #
благодарю. попробуем (под эти аккаунтом нас двое) реализовать. если честно мы не специалисты по инстант и всё, что сейчас реализовано это методом проб и ошибок. если есть желание можете посмотреть, что сейчас есть http://social.progoose.ru/, возможно сможете дать ещё несколько советов. основная идея - хотим приблизиться по интерфейсу к одноклассникам и вытянуть за счёт соцсети ещё 2 проекта, которые сейчас лежат. а самый первый опыт пришлось похоронить. прошу прощения за возможную навязчивость.
-3
letsgo letsgo 11 лет назад #
Вы зря рассказали идею, возьмут кто нибудь украдут и будут вытягивать свои проекты лежащие. Осторожнее надо быть. Кстати, вы почти приблизились к одноклассникам, прямо в глаза бросилось.
0
reload reload 11 лет назад #
Tsarkoff:
возможно сможете дать ещё несколько советов
Для этого тему на форуме создайте!)

...советов будет мешок!))
0
Tsarkoff Tsarkoff 11 лет назад #
Благодарю
0
Tsarkoff Tsarkoff 11 лет назад #
а поподробнее можно? куда и что нужно добавить?
Заранее благодарен
0
Станислав Григорьевич (Мозголом) Станислав Григорьевич (Мозголом) 11 лет назад #
Вот и нашёл первую проблему с работой данного плагина, когда он включён фотографии не загружаются, при загрузки появляется пустая страница, а выключаешь его фотографии загружаются.
+1
Димитриус Димитриус 11 лет назад #
Спасибо, будем искать причину.
0
bondar bondar 11 лет назад #
и происходит ошибка

Fatal error: Class 'cmsPage' not found in www/core/classes/plugin.class.php on line 30
0
Димитриус Димитриус 11 лет назад #
какая версия у вас 1.10.1 ?
0
bondar bondar 11 лет назад #
да
0
Димитриус Димитриус 11 лет назад #
есть возможность проверить на сервере на чистой инстанте?
0
Димитриус Димитриус 11 лет назад #
http://instantcms.ru/forum/thread14223.html посмотрите вот такая ошибка?
0
bondar bondar 11 лет назад #
Да , ошибка похоже. Попробую завтра внести изменения.

Не ответил сразу по поводу проверки на чистой, прошу прощения, не смог ответить, и проверить нет возможности )
0
bubbus bubbus 11 лет назад #
при работающем плагине на 1.10 очищаю сообщения и страница зависает на месте, не переходит дальше.
0
bubbus bubbus 11 лет назад #
извиняюсь, поспешил, всё работает отлично!
0
Mercy Mercy 11 лет назад #
Отлично работает, но есть небольшой конфликт с видеокомпонентом))

Еще от автора

Плагин: подтверждение профиля через привязку номера телефона к профилю
Здравствуйте форумчане! Уже достаточно много времени прошло с момента публикации предыдущего поста.
Плагин: подтверждение профиля через привязку номера телефона к профилю
Здравствуйте форумчане! Предлагаю вам плагин привязки номера телефона к профилю. Особенность плагин заключается в следующем.
Плагин: подтверждение профиля через привязку номера телефона к профилю
Приветствую Вас! Очередная модификация смс активации с переводом в новую группу выполненная в виде плагина. Данный пост является анонсом.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.