gtsNotify

Компонент для создания RealTime оповещений на сайте
Автор дополнения
touol
Пакетов
10
Закачек
816
Автор дополнения
Пакетов
10
Закачек
816
Обычно отвечает в течение суток
Версия 2.0.3-beta
Дата выпуска 17.03.2022
Загрузки 5
Просмотры 1 292
Внимание, этот компонент требует версию PHP 7.0 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.6 !
Я переделал компонент для работы через сервер уведомлений comet-server.ru. Работа через мой сервер gtsnotify.ru прекращается. Это не выгодно как оказалось.

Для многих сайтов требуются RealTime уведомления для работы чатов и мессенджеров, автоматической перезагрузки страницы при изменении данных на сервере и уведомлений пользователей о поступлении новых товаров, о, например, выпуске новой проды на книжных сайтах. Для этой цели разработан компонент gtsNotify для CMS MODX



Для работы RealTime уведомлений требуется регистрация на comet-server.ru.

В настройках компонента, в Пакеты->gtsNotify вбить секретный ключ и публичный id с comet-server.ru.



С использованием этого компонента разработан компонент мессенджера для MODX — RealMessenger.

Компонент разработан с использованием pdoTools и bootstrap. Поддерживается bootstrap версии 3 и версии 4. Но можно стилизовать как вам угодно!

Установка
Для bootstrap v4 подключить на сайте Font Awesome Free 5.14.0 или другую версию, но, возможно, надо будет сменить иконки.
Установить с modstore.

В navbar сайта или где вам удобно разместить сниппет gtsNotify:
{if $_modx->user.id > 1}{'!gtsNotify' | snippet}{/if}

Для bootstrap v4, в системную настройку gtsnotify_frontend_css прописать [[+cssUrl]]web/b4_default.css.

Использование
В настройках компонента создаются каналы уведомлений:

Нужно прописать Имя канала, Иконку, Чанк уведомления в меню канала и поставить Активно.
Для RealMessenger канал создается при его установке.

API
$gtsNotify = $modx->getService('gtsNotify', 'gtsNotify', MODX_CORE_PATH . 'components/gtsnotify/model/', []);
if ($gtsNotify) {
	$mess = [
		'message' => "{$message}",
	];
	if($notify = $this->gtsNotify->create_notify($mess)){
		$notify->addPurposeGroups('1,5,11','material_error');
		$notify->save();
		$notify->send();
	}
}
Функции назначения получателей:
$notify->addPurposeGroups(Группы пользователей MODX через запятую,Имя канала, Ссылка в уведомлении);
$notify->addPurpose($user_id,$channels,$url = '')
В браузере получаем сообщения:
document.addEventListener("gtsnotifyprovider", function(event) { 
	//console.log('notify',event.detail);
	for(var key in event.detail.channels) {
		if(key == 'RealMessenger'){
			user_data = event.detail.channels[key].data.user_data;
			for(var chat in user_data) {
				$el_chat = $('.realmessenger-chat[data-id="' + chat + '"]');
				$badge = $el_chat.find('.messages-new-count');
				$badge.text(user_data[chat].chat_count);
				if(user_data[chat].chat_count == 0){
					$badge.hide();
				}else{
					$badge.show();
					if($el_chat.hasClass("active")){
						$messages = $(event.detail.data.messages);
						$messages.removeClass('ownmessage');
						$('#realmessenger-messages').append($messages);
						var d = $('#realmessenger-messages');
						d.scrollTop(d.prop("scrollHeight"));
					}
				}
			}
		}
	}
});

2.0.0-beta

1.2.3-beta

  • Выравнивание меню.

1.2.2-beta

  • add send notify_id.

1.2.1-beta

  • add method addPurposeGroups.

1.2.0-beta

  • add hidden channels.
  • Исправлено задвоение числи сообщений. Удаление сообщений.

1.1.0-beta

  • add gtsNotifyNotify->addPurpose.
  • add gtsNotifyNotify->send.
  • add gtsNotify->remove_channel_notifys.
  • change channel_count for send_notify.

1.0.0-beta

  • New build script.

Последние обсуждения в сообществе MODX.pro