## Модуль Комментарии. ### Функционал: * Возможность создавать комментарии как зарегистрированным Пользователям, так и Анонимам * Разрешения задаются в Админ панели * Аватар Пользователя * если есть в системе - выведет его изображение, если нет выведет аватар с первой буквой имени пользователя или анонима * Авторская оценка * При создании комментария, Автор может поставить оценку материалу (документу) - звезды 1...5 баллов * Права для Анонимов (разрешено/нет), настраиваются в Админ панели * Разрешать Авторскую оценку в ответах настраивается в Админ панели * Редактирование Авторской оценки Администратором в публичной заблокировано. Однако, если в порыве гнева, вы все таки решили изменить Авторскую оценку, несмотря на возможную потерю после такого вашего действия желания у Авторов в дальнейшем ставить хоть какие то оценки вашим супер интересным статьям, то сделать это возможно из Админ панели, но при условии, что ваше самолюбие заставит вас открыть файл /class/comment.php и сменить значение в переменной $_edit_avtor_rating = 0; на $_edit_avtor_rating = 1; (находится в самом начале файла). * Рейтинг комментариев * Пользователи и Анонимы могут ставить оценки комментариям других Авторов * На выбор два варианта или пять звезд или лайк (сердечко) * Права для Анонимов (разрешено участвовать/нет), настраиваются в Админ панели * Таймер времени, при котором доступно редактирование или удаление комментария Автором * Время задается в Админ панели, после истечении времени редактирование или удаление комментария будет сделать невозможно, за исключением Администратора * Время жизни куки для Анонимов * Задается в Админ панели, в течении этого времени Аноним будет считаться Автором своих комментариев * Файлы * Авторы могут загружать в свои комментарии разрешенные в Админ панели файлы. * Размер и тип файла задаются в Админ панели. Отдельные права для Анонимов. Для изображений выводятся их превью, для остальных превью с именем расширения этого файла. * Важно! Разрешив загрузку файлов, особенно Анонимам - вы подвергаете свой сайт дополнительным рискам! Относитесь к этой функции с максимальной острожностью. * Дополнительные поля * Два дополнительных поля, их названия и обязательные или нет, настраиваются в Админ панели * Валидация обязательных полей на заполненность + проверка на разрешения для файлов * Комментарий - родитель (ветка комментариев) * Если на комментарий Автора другие Пользователи сделали ответ, то удалить такой комментарий Автору или Администратору в публичной части сайта будет невозможно, вместо этого будет произведено мягкое удаление, - удалится все, что относится к данному комментарию (Рейтинги, файлы, текст) и вместо этого будет выводится специальный аватар и текст: Комментарий удален автором либо Комментарий удален администратором. Восстановить данные такого комментария невозможно. * Удаление комментариев в Админке * Одиночные комментарии (не имеющие ответов) удаляются сразу и навсегда. * Комментарии родители (имеющие ответы/ветку ответов) получают два варианта одиночного удаления: * Мягкое удаление (удалится все, что относится к данному комментарию (Рейтинги, файлы, текст) и вместо этого будет выводится специальный аватар и текст: Комментарий удален администратором. Восстановить данные такого комментария невозможно, * Жесткое удаление самого комментария и всей ветки ответов на этот комментарий. Администратор выбирает сам какой вариант ему необходим. * Массовое удаление - одиночные комментарии удаляются сразу, комментарии-родители удаляются Мягким вариантом (с подстановкой текста Комментарий удален Администратором). * Статус Скрыт/Опубликован (иконка глаз) * Если комментарий родитель и на него есть ответы: * При клике по иконке Скрыть, как в публичной части сайта, так и в Админке, - автоматически будет скрыт как сам комментарий так и все ответы на него (ветка комментариев), при этом у ответов возможность скрытия/публикации будет заблокирована до тех пор, пока родительский комментарий не будет разблокирован (опубликован). Восстановление в ветке статусов - опубликован, происходит персонально кликом - Опубликовать по каждому комментарию в ветке. * Если комментарий одиночный (на него нет ответов): * При клике по иконке Скрыть - комментарий будет скрыт. При клике опубликовать - будет опубликован. * Видимость скрытых комментариев: * Если комментарий родитель, и на него есть ответы, но Администратор решит его скрыть - будут также скрыты все ответы на него, включая ответы на ответы (все потомки). Такой комментарий (скрытые комментарии в ветке) будут видеть только Администратор и Автор комментария с пометкой "На модерации", однако если этот комментарий будет в свою очередь потомком вышестоящего в иерархии комментария-родителя другого Автора и тот в свою очередь будет скрыт - такой комментарий будет виден только Администратору. * Если комментарий одиночный и на него нет ответов и он, в свою очередь, сам не является ответом: если статус Скрыт - то его видит только Администратор и сам Автор с пометкой "На модерации". Другие посетители его не видят. * Порядок разблокировки скрытых комментариев в ветке (для Администратора). В публичной части у всех потомков будут отключены кнопки "Показать комментарий" до тех пор, пока не будет разблокирован родительский комментарий, т.е. сначала нужно разблокировать (клик по иконке "перечеркнутый красный глаз - Показать комментарий") главного родителя (если в ветке есть ответы на ответы), после этого станут доступными иконки ("перечеркнутый красный глаз - Показать комментарий") у следующих родителей (если они есть) и так по иерархии - спускаться нужно сверху вниз и до последнего потомка. В админ панели проще работать с скрытыми ветками. В ней есть два типа иконок-замочков - родительские и для потомков. При наведении мыши на иконку потомков - будет выведена подсказка - Id комментария, который является родителям для данного комментария. Действия аналогичны публичной части - разблокируйте сначала родителей, затем потомков. Используйте фильтр в Админке - вывести скрытые комментарии и далее работайте с ними, так будет удобнее. * Контроль Имен Анонима * Если Анонимный пользователь, в течении жизни куки, сменит имя, под которым он опубликовал свой первый комментарий, рядом с именем появится плашка с тултипом в котором будут перечислены все его имена. * Пагинация * Пагинация работает только для родительских комментариев, количество ответов (дети и внуки) на родительский комментарий - задается в Админ панели отдельно. Если общее количество ответов превышает лимит ответов, установленный в Админке, будет выведена кнопка Показать еще N ответов, при клике по которой AJAX подгрузит и выведет оставшиеся комментарии на страницу. * Сортировка * В админ панели доступен поиск комментария по следующим параметрам: по Имени, IP адресу, по тексту комментария. Сортировка: сначала новые, сначала старые, популярные (согласно Рейтингу пользователей), обсуждаемые - по количеству ответов на комментарий-родитель, оценки Автора (у кого больше всех звезд). Фильтрация: выводить все сообщения, только с файлами, только скрытые. Вывод комментариев по умолчанию - плоский список, но для удобства есть и древовидный список, что позволяет видеть сразу всю ветку. Количество на странице: выводит желаемое количество комментариев на страницу. Период: вам доступен календарь, в котором вы сами выбираете нужный вам период для просмотра - от и до. * В публичной части также можно менять вывод комментариев (выбирается в Настройках модуля): * Сначала старые (новые внизу) * Сначала новые (старые внизу) * По общему рейтингу (лучшие вверху) * По оценке Автора (кол-ву звезд) * Важно! В ветках потомки выводятся по принципу сначала старые (новые внизу), что-бы не рушить визуальную иерархию ответов. * Эмодзи * Модуль использует кодировку utf8mb4, что позволяет использовать в тексте комментариев эмодзи, например такие: 😀 😁 😂 🤣 😃 😄 😅 😆 😉 😊 😋 😎 😍 😘 😗 😙 😚 🙂 🤗 🤩 * Шаблоны (файлы .tpl) отвечающие за вывод в публичную часть: * comments_tree.tpl - выводит на страницу форму "Написать комментарий" * comments_tree_sub.tpl - выводит на страницу кооментарий (ветку комментариев) * last_comments.tpl - выводит на страницу виджет "Последние комментарии" * Большинство стилей модуля вынесены в отдельный CSS-файл, который расположен по следующему пути: ```comment/css/mod_comment_styles.css```. Это позволяет адаптировать внешний вид виджета под дизайн вашего сайта. * Подключение css файла в основной шаблон: * При использовании модуля в основной шаблон в секцию ```
... ``` программно будет прописан путь до css файла модуля ``````, с вашей стороны никаких действий по подключению файла стилей не требуется. * Лог загрузки опасных файлов: * Вы можете вкл/выкл запись лога загрузки опасных файлов. При включенном режиме в Админ панели в списке комментариев появится ссылка "Просмотреть логи безопасности", при новых записях будет включен оранжевый индикатор и текст ссылки будет изменен на "Есть новые записи в логах!". Основные типы записи в лог: * Обнаружена подмена (Fake Image) * Вредоносный тип контента (MIME) * Опасный формат файла * Файл слишком большой: Превышение лимита * Пустой файл: Попытка загрузки файла нулевого размера. * Запрещенное расширение: Файл не прошел по списку разрешенных расширений. * Система тегов: * Тег [mod_comment] (Без параметров), - Это основной системный тег для вывода полноценного функционала на странице документа, выводит форму создания нового комментария + сами комментарии. * Тег [mod_comment:X] (Один параметр) - Выводит виджет последних комментариев, где X - количество выводимых комментариев, количество символов текста комментария равно 150 по умолчанию. * Тег [mod_comment:X:Y] (Два параметра) - Выводит виджет последних комментариев, где X - количество выводимых комментариев, а Y - количество символов в тексте комментария. #### Сводная таблица параметров по умолчанию | Тег | Лимит (X) | Обрезка текста (Y) | Режим вывода | | --- | --- | --- | --- | | [mod_comment] | — | 1000 | Полный список + Форма | | [mod_comment:10] | 10 | 150 | Виджет (last_comments.tpl) | | [mod_comment:5:200] | 5 | 200 | Виджет (last_comments.tpl) | ### Для AJAX работы модуля не забудьте подключить: #### JS: ``` https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js ``` ``` https://cdnjs.cloudflare.com/ajax/libs/jquery.form/4.3.0/jquery.form.min.js ``` ``` https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js ``` #### Стили: ``` https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css ``` ``` https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css