## Модуль Комментарии. ### Функционал: * Возможность создавать комментарии как зарегистрированным Пользователям так и Анонимам * Разрешения задаются в Админпанели * Аватар Пользователя * если есть в системе - выведет его изображение, если нет выведет аватар с первой буквой имени пользователя или анонима * Авторская оценка * При создании комментария , Автор может поставить оценку материалу (документу) - звезды 1...5 баллов * Права для Анонимов (разрешено/нет)настраиваются в Админпанели * Разрешать Авторскую оценку в ответах настраивается в Админпанели * Рейтинг комментариев * Пользователи и Анонимы могут ставить оценки комментариям других Авторов * На выбор два варианта или пять звезд или лайк (сердечко) * Права для Анонимов (разрешено участвовать/нет)настраиваются в Админпанели * Таймер времени, при котором доступно редактирование или удаление комментария Автором * Время задается в Админпанели, после истечении времени редактирование или удаление комментария будет сделать невозможно, за исключением Администратора * Время жизни куки для Анонимов * Задается в Админпанели, в течении этого времени Аноним будет считаться Автором своих комментариев * Файлы * Авторы могут загружать в свои комментарии разрешенные в Админпанели файлы. * Размер и тип файла задаются в Админпанели. Отдельные права для Анонимов. Для изображений выводятся их превью, для остальных превью с именем расширения этого файла. * Дополнительные поля * Два дополнительных поля, их названия и обязательные или нет, настраивааются в Админпанели * Валидация обязательных полей на заполненность + проверка на разрешения для файлов * Комментарий - родитель (ветка комментариев) * Если на комментарий Автора другие Пользователи сделали ответ, то удалить такой комментарий Автору или Администратору в публичной части сайта будет невозможно, вместо этого будет произведено мягкое удаление - удалится все , что относится к данному комментарию (Рейтинги, файлы , текст) и вместо этого будет выводится специальный аватар и текст: Комментарий удален автором либо Комментарий удален администратором. Восстановить данные такого комментария невозможно. * Удаление комментариев в Админке * Одиночные комментарии (не имеющие ответов) удаляются сразу и навсегда. * Комментарии родители (имеющие ответы/ветку ответов) получают два варианта одиночного удаления: * Мягкое удаление (удалится все , что относится к данному комментарию (Рейтинги, файлы , текст) и вместо этого будет выводится специальный аватар и текст: Комментарий удален администратором. Восстановить данные такого комментария невозможно, * Жесткое удаление самого комментария и всей ветки ответов на этот комментарий. Администратор выбирает сам какой вариант ему необходим. * Массовое удаление - одиночные комментарии удаляются сразу, комментарии-родители удаляются Мягким вариантом (с подстановкой текста Комментарий удален Администратором). * Статус Скрыт/Опубликован (иконка глаз) * Если комментарий родитель и на него есть ответы: * При клике по иконке Скрыть (как в публичной части сайта так и в Админке) - автоматически будет скрыт как сам комментарий так и все ответы на него (ветка комментариев), при этом у ответов возможность скрытия/публикации будет заблокирована до тех пор, пока родительский комментарий не будет разблокирован (опубликован). Восстановление в ветке статусов - опубликован, происходит персонально, кликом Опубликовать по каждому комментарию в ветке. * Если комментарий одиночный (на него нет ответов): * При клике по иконке Скрыть - комментарий будет скрыт. При клике опубликовать - будет опубликован. * Видимость скрытых комментариев: * Если комментарий родитель и на него есть ответы и он скрыт - будут также скрыты все ответы на него. Такой комментарий будет видеть только Администратор и Автор комментария с пометкой "На модерации", однако если этот комментарий будет в свою очередь потомком вышестояшего в иерархии комментария-родителя другого Автора и тот в свою очередь будет скрыт - то тогда комментарий будет виден только Администратору. * Если комментарий одиночный и на него нет ответов и он, в свою очередь, сам не является ответом: если статус Скрыт - то его видит только Администратор и сам Автор. Другие посетители его не видят. * Контроль Имен Анонима * Если Анонимный пользователь, в течении жизни куки, сменит имя под которым он опубликовал свой первый комментарий, рядом с именем появится плашка с тултипом в котором будут перечислены все его имена. * Пагинация * Пагинация работает только для родительских комментариев, количество ответов (дети и внуки) на родительский комментарий - задается в Админпанели отдельно. Если общее количество ответов превышает лимит ответов установленный из Админки, будет выведена кнопка Показать еще N ответов, при клике по которой AJAX подгрузит и выведет оставшиеся комментарии на страницу. * Система тегов: * Тег [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 ```