gtsNotify

Компонент для создания RealTime оповещений на сайте
Автор дополнения
touol
Пакетов
11
Закачек
947
Обычно отвечает в течение суток
Автор дополнения
Пакетов
11
Закачек
947
Обычно отвечает в течение суток
Версия 2.0.3-beta
Дата выпуска 17.03.2022
Загрузки 8
Просмотры 1 861
Внимание, этот компонент требует версию 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