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