Этот скрипт призван придать динамики форумам, оповещая пользователей
о событиях на форуме в реальном времени, наподобие ВКонтакте.
Скрипт дает возможность мгновенного реагирования на ответ, личное сообщение
(и не только). Теперь Вы не пропустите ни одного события!
Мгновенные уведомления
Расширяемый функционал без привязки к сторонним сервисам
(скриншот 1)
(скриншот 2)
(скриншот 3)
(скриншот 4)
Скриншоты обновлены 05.08.2019
Первоначальная идея к созданию скрипта — bektau, идеи технической реализации — Alex_63 и Deff, разработка кода — Alex_63
● Скрипт использует функционал MyBB и независим от сторонних ресурсов, чем и достигается его надежность и стабильность;
● По умолчанию пользователь оповещается об ответах на форуме (цитирование или ответ по нику), личных сообщениях и изменении репутации. Имеется возможность расширения, т.е. подключения оповещений на какие-то еще события, например, выдача предупреждений или наград в поле профиля;
● Если пользователь онлайн, уведомление приходит ему мгновенно1 в виде всплывающего сообщения (скриншот 1). Непрочитанные уведомления отображаются в списке (скриншот 2), открывающемся по клику на пункт меню "Уведомления".
● Уведомление становится просмотренным при клике на него (с переходом по заданной в уведомлении ссылке), при закрытии, через 10 секунд после активности на странице (движение курсора, прокрутка) или при открытии списка уведомлений. Просмотренные уведомления сохраняются ниже в том же списке под надписью "Просмотренные" (список просмотренных можно очистить).
● Количество новых уведомлений отображается в виде маркера у пункта меню "Уведомления" и в иконке на вкладке браузера2 (скриншот 3). На мобильных устройствах маркер новых уведомлений отображается у пункта меню "Профиль".
● Появление мгновенного уведомления сопровождается звуком3 и миганием в названии вкладки (при необходимости можно отключить).
● Имеется возможность индивидуальной настройки пользователем: отключение звука, отключение уведомлений — полностью или выборочно (скриншот 4).
● Скрипт можно настроить под себя, изменив некоторые параметры (подробнее про настройку и расширение — в следующем сообщении).
● Допускается установка также и на форумах RusFF, при этом стандартные уведомления автоматически отключаются.
Активировать пробную подписку на 10 дней (бесплатно):
[html]<script>if(location.host!='hostjs.mybb.ru') location.href = '//ho' + 'stjs.mybb.ru/files/0016/0b/c8/84802.html?4'</script>
<style type="text/css">
pre {
display: inline-block;
}
div {
padding-bottom: 1em;
}
</style><div id="form">
<input type="text" size="40" maxlength="50" id="domain" placeholder="forum.mybb.ru" />
<input type="button" class="button" id="get" value="Получить код" />
</div>
<div id="result"></div><script>
var BoardID = 1426495;
var PartnerID = 1;
var RequestTime = parseInt((Date.now() + 3*3600)/1000);
var StaticURL = 'https://forumstatic.ru';
</script>
<script type="text/javascript" src="https://forumstatic.ru/f/ru/bestbb/notifications.core.js"></script>
<script type="text/javascript" src="https://forumstatic.ru/files/0015/c4/3f/26102.js"></script><script>
var fileURL = '/files/0015/c4/3f/51481.txt';
$.ajaxSetup({cache:true});
</script><noscript id="tmpl1">
<div class="quote-box" id="code"><blockquote>
<p><span style="font-size: 12px;"><span style="font-family: Courier New;"><span style="color: green"><!-- Мгновенные уведомления © Alex_63, 2024 --></span><br><span style="color: navy"><link rel="stylesheet" type="text/css" href="//forumstatic.ru/f/ru/bestbb/notifications.css" /><br><script type="text/javascript" src="//forumstatic.ru/f/ru/bestbb/notifications.js"></script><!--<br><script type="text/javascript"><br>notifications.token = \'</span><span style="color: red">{APIKEY}</span><span style="color: navy">\'; // Токен форума<br>notifications.key = \'</span><span style="color: red">{TOKEN}</span><span style="color: navy">\'; // Ключ подписки<br><\/script>--></span></span></span></p>
</blockquote></div>
</noscript>
<noscript id="tmpl2">
<div>Рекомендуем установить популярные дополнения (ниже основного скрипта <b>в HTML верх</b>): <a style="cursor:pointer" onclick="select_text($('#code-2')[0])">выделить</a></div><div class="quote-box" id="code-2"><blockquote><p><span style="font-size: 12px"><span style="font-family: Courier New"><span style="color: green"><!-- Мгновенные уведомления: упоминания © Alex_63, 2020 --></span><br><span style="color: navy"><script>notifications.load('mentions');</script></span></span></span></p><p><span style="font-family: Courier New"><span style="font-size: 12px"><span style="color: green"><!-- Мгновенные уведомления: репутация для Rusff © Alex_63, 2019 --></span><br><span style="color: navy"><script>notifications.load('reputation');</script></span></span></span></p><p><span style="font-size: 12px"><span style="font-family: Courier New"><span style="color: green"><!-- Мгновенные уведомления: подписки на форум/тему © Alex_63, 2019 --></span><br><span style="color: navy"><script>notifications.load('subscriptions');</script></span></span></span></p><p><span style="font-size: 12px"><span style="font-family: Courier New"><span style="color: green"><!-- Мгновенные уведомления: новые посты из важных тем © Alex_63, 2019 --></span><br><span style="color: navy"><script type="text/javascript"><br>notifications.load('common', {});<br>notifications.load('important', {topics: [</span><span style="color: red">101</span><span style="color: navy">,</span> <span style="color: red">97</span><span style="color: navy">]}); // ID важных тем (через запятую)<br></script></span></span></span></p></blockquote></div>
</noscript><script type="text/javascript" src="data:text/javascript;base64,ZXZhbChmdW5jdGlvbihwLGEsYyxrLGUscil7ZT1mdW5jdGlvbihjKXtyZXR1cm4oYzxhPycnOmUocGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50b1N0cmluZygzNikpfTtpZighJycucmVwbGFjZSgvXi8sU3RyaW5nKSl7d2hpbGUoYy0tKXJbZShjKV09a1tjXXx8ZShjKTtrPVtmdW5jdGlvbihlKXtyZXR1cm4gcltlXX1dO2U9ZnVuY3Rpb24oKXtyZXR1cm4nXFx3Kyd9O2M9MX07d2hpbGUoYy0tKWlmKGtbY10pcD1wLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxiJytlKGMpKydcXGInLCdnJyksa1tjXSk7cmV0dXJuIHB9KCcoNygpezcgdChhLGIsYyl7YT1bSyAxSShbYV0se1U6IlYvMUoifSldO2E9SyAxSyhhLHUse1U6IjFMLzFNIn0pO0MgZT1LIDFOO2UuTCgiMU9bXSIsYSk7ZS5MKCJXIiwiMTYuMVAiKTtlLkwoIjE3IixuKTtDIGY9MTguMVE7MTkuMWEoTSxNLGcrIi8xUi5OIik7MVMoNygpezE5LjFhKE0sTSxmKX0sMCk7JC4xYih7MWM6ZysiLzE2IixVOiIxVCIsMVU6ZSwxVjohMSwxVzohMSwxWDohMSwxWTo3KGEpe2EuTz8kLjFkKGIpJiZiKCk6JC4xZChjKSYmYygpfSwxWjpjfHwkLjIwfSl9NyB2KGEpeyQuRyhnKzFlKyI/IitYLjFmKCksNyhiKXsyMXthKDFnLjIyKGIpKX0yMyhjKXtmKDEpfX0pfTcgdyhhKXt2KDcoYil7JC5HKDFoLjFpKyIvLyIrYSsiLzFqLk4iLHtXOiIxay5HIiwyNDoiMWwifSw3KGMpezFtKGMuTyl7QyBlPTI1KChYLjFmKCkrMjYpLzFuKSxrPWMuTy4xbCxkOzI3KGQgMjggYikxbShiW2RdLjFvPT1rKXtkPWJbZF0uWVtiW2RdLlkuMjktMV07Yz1kLjFwO2Q9ZC4xcTtmKCJcXFpcXDVcXGlcXFBcXG9cXHlcXHpcXDggXFxpXFxIXFwxMSBcXDJhXFxFXFw1XFxRXFw1IFxcMTJcXDVcXEFcXEZcXFJcXDggXFxGXFwyYlxcaiBcXElcXDFyXFxpXFw4XFxCXFw4LiIpO3AoIjx4PlxcWlxcalxcQVxcb1xcNVxcaTogIitsW2NdWzBdKyIsIFxcb1xceVxcRVxcalxcelxcOFxcalxcRTogIisoMXM+ZCtsW2NdWzFdPyhLIFgoMW4qKGQrbFtjXVsxXSkpKS4yYygpLkooL14oWzAtOVxcLV0rKVxcRC4qJC8sIiQxIik6IlxcMXRcXG9cXHpcXDVcXFFcXGlcXDgiKSsiLjwveD4iKTsyZH1DIGg9KCgrKCIiK2UrcSkpLjF1KDF2KSsoMyprKS4xdSgxdikpLjF3KCIiKS4yZSgpLjJmKCIiKTskLjJnKGcrIi8xai5OIix7VzoiMWsuMmgiLDJpOnIsMmo6MmsoIjJsIil9LDcoYyl7JDJtKCIxMyIsYy5PLjJuKTtiLjJvKHtTOmEsMW86ayxZOlt7MTc6aCwxcTplLDFwOnEsMnA6cn1dfSk7bj0kLjFiKHsxYzpnKyIvMnEuTiIsMnI6ITF9KS4ycy4xeCgvMnRcXHM9XFxzXCcoLis/KVwnLylbMV07dCgxZy4ydShiKSw3KCl7JCgiI1QiKS4ydigpO3AoIjx4PlxcWlxcNVxcaVxcUFxcb1xceVxcelxcOCBcXEJcXDggMTAgXFxpXFxCXFxqXFwxeSBcXGlcXEhcXDExIFxcMTJcXDVcXEFcXEZcXFJcXDggPGI+IithK1wnPC9iPiBcXDVcXDEyXFw1XFxBXFxSXFxIXFxqXFxCXFw4LjwveD48eD48MXo+XFwyd1xcNVxcaSBcXEZcXHlcXEVcXDhcXEJcXDVcXElcXHpcXG86PC8xej4gPGEgMng9IjJ5OjJ6IiAyQT0iMkIoJChcXFwnIzJDXFxcJylbMF0pIj5cXElcXDFyXFxpXFxqXFxIXFxvXFxFXFwxQTwvYT48L3g+XCcrbSk7MkQuMkUoMiwiMkYiLHsyRzphfSxzKTskMUIoIjEzIil9LDcoKXskMUIoIjEzIik7Zig0KX0pfSwiMUMiKX0ySCBmKDIpfSwiMUMiKS4ySSg3KCl7ZigzKX0pfSl9NyBzKCl7JCgiI0ciKS4xNCgiMTUiLCExKTskKCIjUyIpLjFEKCIiKX03IGYoYSl7QyBiPWE7MkooK2EpfHwoYj0iXFwxdFxcaiBcXEZcXGlcXDhcXEhcXDVcXHlcXDFBIFxcUFxcQVxcNVxcb1xcMUVcXElcXGpcXHlcXEVcXG8gXFw1XFxQXFxqXFxBXFw4XFwxRlxcb1xcMkssIFxcelxcNVxcaSBcXDVcXDJMXFxvXFwyTVxcelxcbzogIithKTskKCIjVCIpLjFHKCI8eD4iK2IrIjwveD4iKTtzKCl9NyBwKGEpeyQoIiNUIikuTChhKX1DIGw9eyIwIjpbIjEwIFxcaVxcQlxcalxcMXkiLDJOXSwxOlsiXFwyT1xcalxceVxceVxcQVxcNVxcMlBcXEJcXDUiLDFzXSwyOlsiMSBcXFFcXDVcXGkiLDJRXSwzOlsiNiBcXFJcXGpcXHlcXDExXFwxRlxcalxcSSIsMlJdfSxtPSQoIiMyUyIpLlYoKS5KKC9cXHtcXH0vZywiJiIpLG09bSskKCIjMlQiKS5WKCksaCxnPTFoLjFpKyIvLyIrMTguUyx1PTFlLjF4KC9cXC8oXFxkK1xcLjJVKSQvKVsxXSxxPSIwIixyPTJWKCIyVyIpLG47JCgiI0ciKS4yWCg3KCl7JCgxSCkuMTQoIjE1Iil8fCgkKDFIKS4xNCgiMTUiLCEwKSwkKCIjVCIpLjFHKCI8eD5cXDJZXFw4XFxRXFxBXFxGXFwxRVxcelxcOC4uLjwveD4iKSxoPSQuMlooJCgiI1MiKS4xRCgpKS5KKC9eMzAuP1xcL1xcLy8sIiIpLjF3KCIvIilbMF0uSigvXjMxLi8sIiIpLkooL1xcLysvLCIiKSx3KGgpKX0pfSkoKTsnLDYyLDE4OCwnfHx8fHx1MDQzZXx8ZnVuY3Rpb258dTA0MzB8fHx8fHx8fHx8dTA0MzR8dTA0MzV8fHx8fHUwNDM4fHx8fHx8fHx8ZGl2fHUwNDQxfHUwNDNhfHUwNDQwfHUwNDNkfHZhcnx8dTA0NDJ8dTA0NDN8Z2V0fHUwNDNifHUwNDMyfHJlcGxhY2V8bmV3fGFwcGVuZHxudWxsfHBocHxyZXNwb25zZXx1MDQzZnx1MDQzM3x1MDQzY3xkb21haW58cmVzdWx0fHR5cGV8dGV4dHxtZXRob2R8RGF0ZXxzdWJzY3JpcHRpb258dTA0MWZ8fHUwNDRmfHUwNDQ0fG15YmJfcnV8cHJvcHxkaXNhYmxlZHx1cGxvYWR8dG9rZW58ZG9jdW1lbnR8aGlzdG9yeXxyZXBsYWNlU3RhdGV8YWpheHx1cmx8aXNGdW5jdGlvbnxmaWxlVVJMfG5vd3xKU09OfGxvY2F0aW9ufHByb3RvY29sfGFwaXxib2FyZHxib2FyZF9pZHxpZnwxRTN8aWR8dGltZV9vcHRpb258dGltZXN0YW1wfHUwNDRifEluZmluaXR5fHUwNDFkfHRvU3RyaW5nfDM2fHNwbGl0fG1hdGNofHUwNDM5fHN0cm9uZ3x1MDQ0Y3xkZWxldGVDb29raWV8anNvbnx2YWx8dTA0Mzd8dTA0NDZ8aHRtbHx0aGlzfEJsb2J8cGxhaW58RmlsZXxvdmVyaWRlfG1pbWV0eXBlfEZvcm1EYXRhfGZpbGVzfGFkbWluZmlsZXxVUkx8YWRtaW5fZmlsZXN8c2V0VGltZW91dHxQT1NUfGRhdGF8Y2FjaGV8Y29udGVudFR5cGV8cHJvY2Vzc0RhdGF8c3VjY2Vzc3xlcnJvcnxub29wfHRyeXxwYXJzZXxjYXRjaHxmaWVsZHN8cGFyc2VJbnR8MTA4MDB8Zm9yfGlufGxlbmd0aHx1MDQ0ZHx1MDQzNnx0b0lTT1N0cmluZ3xyZXR1cm58cmV2ZXJzZXxqb2lufHBvc3R8YXV0aHxsb2dpbnxwYXNzd29yZHxidG9hfG9XV3I0WUVyfHNldENvb2tpZXxoYXNofHB1c2h8dXNlcm5hbWV8YWRtaW5faW5kZXh8YXN5bmN8cmVzcG9uc2VUZXh0fEZvcnVtQVBJVGlja2V0fHN0cmluZ2lmeXxlbXB0eXx1MDQxYXxzdHlsZXxjdXJzb3J8cG9pbnRlcnxvbmNsaWNrfHNlbGVjdF90ZXh0fGNvZGV8bm90aWZpY2F0aW9uc3xhZGR8bmV3X3N1YnNjcmlwdGlvbnxmb3J1bXxlbHNlfGZhaWx8aXNOYU58dTA0NGV8dTA0NDh8dTA0MzF8ODY0RTN8dTA0MTF8dTA0NDd8MzE1MzZFM3wxNTU1MkUzfHRtcGwxfHRtcGwyfHR4dHxhdG9ifFcwSnZkRjB8Y2xpY2t8dTA0MTd8dHJpbXxodHRwfHd3dycuc3BsaXQoJ3wnKSwwLHt9KSk="></script>[/html]Оформить подписку (бессрочно, на 1 год или 6 месяцев):
[html]<form method="POST" id="init_pay" action="https://yoomoney.ru/quickpay/confirm" target="_blank">
<input type="hidden" name="receiver" value="4100115717180683" />
<input type="hidden" name="label" value="" id="form_label" />
<input type="hidden" name="quickpay-form" value="button" />
<input type="hidden" name="sum" value="10" id="form_sum" />
<input type="hidden" name="paymentType" value="AC" />
<input type="hidden" name="targets" value="" id="form_targets">
<input type="hidden" name="successURL" value="" id="form_redirect" />
<input type="hidden" name="referer" value="" id="form_referer" />
<input type="hidden" name="is-inner-form" value="true" />
<input type="text" maxlength="50" size="40" id="form_domain" placeholder="Адрес форума" /> <span id="form_status" style="color:red"></span><br />
<select id="time_options"></select> <span id="form_hint">К оплате: <strong>0</strong></span>
<input type="submit" class="button" value="Оплатить" disabled="disabled" id="form_send" />
</form>
<p>После оплаты не закрывайте страницу, а нажмите <strong>Вернуться на сайт</strong>. <br>На открывшейся странице будет завершен процесс оформления подписки.</p>
<script type="text/javascript" src="https://forumstatic.ru/files/001c/14/8b/11111.js?v=4"></script><script>
$(document).on('click', '#form_send', function() {
if ($(this).prop('disabled')) return;
var forum = $.trim($('#form_domain').val()).replace(/^http.?\/\//, '').split('/')[0];
var options = JSON.stringify({
option: $('#time_options').val(),
source: 2
});
var formData = new FormData();
var data = {
app_id: 11109,
token: '3c2261762a7e8dd6d3c23b01b91928137d7850bc',
method: 'storage.set',
key: forum,
value: options
}
for (var _key in data) formData.append(_key, data[_key]);
navigator.sendBeacon('https://hostjs.mybb.ru/api.php', formData);
});
</script>[/html]Инструкция по оплатеВведите адрес вашего форума и выберите срок подписки. Затем нажмите на кнопку Оплатить.
Вы попадёте на страницу оплаты ЮMoney, где нужно будет ввести данные банковской карты либо осуществить оплату через кошелёк:
Важно: ваши данные в безопасности, поскольку они нигде не сохраняются. Процесс ничем не отличается от обычной покупки в интернет-магазине.Далее подтверждаете платёж и в случае успеха попадаете на страницу завершения оплаты.
(!!!) Необходимо нажать на кнопку Вернуться на сайт, иначе подписка не оформится автоматически и придётся её запрашивать вручную (написав в личные сообщения).
После успешной оплаты вы попадёте на страницу активации подписки, где увидите сообщение об успешной активации:
Если вы устанавливаете уведомления впервые, выделите и скопируйте к себе на форум код установки. Если же вы продлеваете подписку и код уже стоит на форуме, повторно устанавливать ничего не нужно.
После активации подписки и установки кода уведомления на форуме должны заработать сразу же.В случае, если по какой-то причине вы произвели оплату, но активировать подписку не удалось и на форуме уведомления не заработали, обращайтесь в личные сообщения. В таких случаях подписка будет выдана вручную.
Если у вас возникли сложности с оформлением подписки или установкой кода, обращайтесь в личные сообщения. Укажите адрес форума и срок подписки.
Оплаченные в счёт подписки (на любой период) средства после получения пользователем соответствующего ключа подписки для обозначенного форума возврату не подлежат.
Внимание! Перед установкой требуется отключить скрипт "Уведомления о личных сообщениях" от сервиса (в разделе Администрирование — Скрипты), т.к. он фактически дублирует функционал и, кроме того, вступает в конфликт.
За 3 дня до истечения срока подписки администраторы оповещаются всплывающим уведомлением, сообщающим о необходимости продления.
Протестировать работу скрипта можно на демо-форуме notifications.rusff.me
(используйте пиар-вход или читательский вход, можно войти с обоих аккаунтов и отправлять друг другу уведомления)
Скрипт установлен также и на этом форуме, так что здесь тоже можно наблюдать работу уведомленийКроме того, скрипт опробован и успешно используется на форумах:
fso.forum.cool (отзывы), perscitium.mybb.ru (отзывы), cnc.userforum.ru и многих других!
Бесплатные дополнения: новые типы уведомлений (релиз лета 2019):
● Уведомления о новых сообщениях в темах, на которые Вы подписаны
● Уведомления о новых темах в форумах (аналог подписки на форум)
● Уведомления о новых сообщениях в важных темах форума, выбранных администрацией
Бесплатное дополнение для форумов RusFF
● Уведомления об оценке с текстом комментария + Комментирование без переадресации
Бесплатное дополнение (релиз января 2020):
● Уведомления об изменениях в текстовых полях профиля
Бесплатное дополнение (релиз февраля 2020):
● Уведомления: упоминания пользователей в темах
Бесплатное дополнение (релиз марта 2024):
● Жалобы на сообщения с уведомлением администрации
Бесплатное дополнение (релиз апреля 2024):
● Уведомления о регистрации новых пользователей
Бесплатные дополнения для форумов RusFF (релиз апреля 2024):
● Уведомления о вручаемых наградах
● Уведомления о реакциях на сообщения
Бесплатное дополнение (релиз июня 2024):
● Уведомления о сообщениях на премодерации
Обсуждение скрипта в этой теме: Мгновенные уведомления: вопросы, обсуждение
1 В течение ~4 секунд после оповещаемого события. Обновлено 06.08.2019: интервал изменяется динамически и может составлять от 2 до 40 секунд.
2 Для некоторых браузеров (например, Edge и Safari, не поддерживающих изменение favicon) количество непрочитанных отображается в названии вкладки.
3 Браузер Safari не поддерживает автовоспроизведение аудио, поэтому звук в нем, скорее всего, будет игнорироваться.