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




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

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



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

Установка
Установить pdoTools, getTables. Для 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"));
					}
				}
			}
		}
	}
});
Пакеты:
gtsnotify-1.2.6-beta.transport.zip
realmessenger-1.1.2-beta.transport.zip
19 сентября 2020, 05:43    Александр Туниеков Компоненты 0    2 0

Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.

    Вы можете авторизоваться на сайте через:
    YandexGoogleVkontakte