# =========================================================================== #
# NG CMS // Плагины // AJAX Based Чат                                         #
# =========================================================================== #
# Версия: 0.12                                                                #
# Дата: 01.02.2026                                                            #
# Модернизирован с использованием ng-helpers v0.2.2                           #
# =========================================================================== #
Плагин позволяет добавить WEB чат на страницах вашего сайта, при этом
обновление чата происходит с использованием технологий AJAX и JSON, что позволяет
значительно экономить трафик, передаваемый клиенту.
Основные особенности:
* Управление правилами доступа для гостей (доступ запрещен / только просмотр /
  просмотр + собственные посты)
* Управление периодом обновления чат-страницы у пользователя.
  Рекомендованное значние: обновление каждые 30 секунд
* Управление кол-вом сообщений, отображаемых в истории сообщений в чате
* Защита от флуда
* Возможность остановки обновлений чата в случае, если польвательно не оставлял
  своих сообщений в заданных период (защита от ситуации, когда пользователь открывает
  и не обновляет страницу в течении очень долгого времени, к примеру - может держать
  открытой страницу с чатом в течении суток или даже недель).
  Рекомендованное значение: 1200 секунд (т.е. 20 минут)
* Авторазделение длинных слов. Необходимо для того, чтобы дизайн чата не "плыл" при
  написании слишком длинных слов. При активации данной функции в слишком длинные слова
  будут вставляться пробелы
* Задание максимального размера (в символах) сообщения
* Минимальный трафик: при отсутствии новых комментариев пользователь получает всего
  около 20 байт (+HTTP заголовки) информации, при наличии новых комментариев - пользователь
  получает только их
* Отображение как в боковой панели так и на собственной страничке
* Собственная страница может быть как внутри дизайна сайта, так и полностью отдельно
* [v0.11] Интеграция с ng-helpers v0.2.2 для улучшенной безопасности
* [v0.11] Комплексное логирование всех операций в engine/data/logs/plugins.log
* [v0.11] Защита от XSS через sanitize() всех пользовательских данных
* [v0.11] Безопасная работа с входными параметрами через array_get()
* [v0.11-0.12] Панель выбора эмодзи с 190+ популярными эмодзи 😊🎉👍
* [v0.12] Панель эмодзи доступна во всех режимах: боковая панель, отдельная страница в дизайне, отдельное окно
Отображение плагина:
--------------------------------------------------------------------
За вывод чата отвечает переменная {{ plugin_jchat }}, которая доступна в шаблоне main.tpl
За отображение содержимого чата отвечает шаблон jchat.tpl
[ВНИМАНИЕ!]
Шаблон содержит не только дизайн-часть, но и необходимые для работы JScript'ы!
В самом шаблоне в HTML комментариях указано какие блоки можно а какие крайне
нежелательно (если вы не осознаёте последствий изменений) менять.
Для особо интересующихся - формат строки чата определяется в шаблоне tpl/jchat.script.header.js, строки #125-139:
// **                                                                  **
// ** NOTIFICATION FOR ADMIN                                           **
// ** YOU CAN MAKE CHANGES IN THIS LINE TO CHANGE VIEW OF jChat RECORD **
// **                                                                  **
cell.innerHTML =
	// 1. Поле для отображения даты&времени записи (со стилем float: right)
	'<div style="float: right; font-size: 75%;" title="'+rec['datetime']+'">'+rec['time']+'</div>'+
	// 2. Изображение-признак зарегистрированного пользователя, оно также является ссылкой на профиль пользователя (если включен плагин uprofile)
	((rec['author_id']>0)?('{% if pluginIsActive("uprofile") %}<a target="_blank" href="'+rec['profile_link']+'">{% endif %}<img src="{{ skins_url }}/images/profile.png" width="13" height="13" border="0"/>{% if pluginIsActive("uprofile") %}</a>{% endif %} '):'')+
	// 3. Имя автора [жирным, используется специальный класс jchat_userName для автовставки имени]
	'<span class="jchat_userName">'+rec['author']+'</span>'+
	// 4. Переход на новую страницу
	'<br/> '+
	// 5. Сам текст сообщения
	rec['text'];
