gtsNotify

Компонент для создания RealTime оповещений на сайте
Автор дополнения
touol
Пакетов
8
Закачек
499
Обычно отвечает в течение суток
Автор дополнения
Пакетов
8
Закачек
499
Обычно отвечает в течение суток
Версия 1.2.7-beta
Дата выпуска 31.01.2021
Загрузки 0
Просмотры 118
Внимание, этот компонент требует версию PHP 7.0 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.6 !
Для многих сайтов требуются RealTime уведомления для работы чатов и мессенджеров, автоматической перезагрузки страницы при изменении данных на сервере и уведомлений пользователей о поступлении новых товаров, о, например, выпуске новой проды на книжных сайтах. Для этой цели разработан компонент gtsNotify для CMS MODX



Для работы RealTime уведомлений по websocket требуется выделенный сервер и на сайте gtsnotify.ru реализован сервис-провайдер уведомлений.
С использованием этого компонента разработан компонент мессенджера для MODX — RealMessenger.

Базовый тариф на доступ к провайдеру уведомлений для gtsNotify составляет 10₽ в сутки.

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

Установка
Для bootstrap v4 подключить на сайте Font Awesome Free 5.14.0 или другую версию, но, возможно, надо будет сменить иконки.
Установить с modstore.
Зарегистрироваться на сервисе gtsnotify.ru.
В личном кабинете вкладка «Сайты» добавить свой сайт:

Скопировать адрес сервера, адрес сайта и secret_key:

в настройки gtsNotify на своем сайте (находятся в админке компонента):


В 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"));
					}
				}
			}
		}
	}
});

1.2.7-beta Админка переведена на extjs

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