diff --git a/ReadMe.txt b/ReadMe.txt
index c60942d..ce3d7e1 100644
--- a/ReadMe.txt
+++ b/ReadMe.txt
@@ -1,13 +1,3 @@
-Шаг 1: Назначение перемнных в шаблоне
-
-
-
-Шаг 2: Нужен плагин для jQuery - jquery.form
-http://malsup.com/jquery/form/
-
Добавить в шаблон
\ No newline at end of file
diff --git a/class/comment.php b/class/comment.php
index 272ed27..88d33e3 100644
--- a/class/comment.php
+++ b/class/comment.php
@@ -303,14 +303,34 @@ function commentListShow($tpl_dir)
while ($row = $sql->FetchAssocArray())
{
- if (isset($row['comment_author_id']) && $row['comment_author_id'] > 0)
- {
- $row['avatar'] = getAvatar($row['comment_author_id'], 48);
- }
- else
- {
- $row['avatar'] = '';
- }
+// 1. Получаем аватар через стандартную функцию системы
+ if (isset($row['comment_author_id']) && $row['comment_author_id'] > 0)
+ {
+ $row['avatar'] = getAvatar($row['comment_author_id'], 48);
+ }
+ else
+ {
+ $row['avatar'] = '';
+ }
+
+ // 2. ПРОВЕРКА: Если функция вернула системную заглушку, считаем, что аватара нет
+ if (!empty($row['avatar']) && strpos($row['avatar'], 'user.png') !== false)
+ {
+ $row['avatar'] = '';
+ }
+
+ // 3. ЛОГИКА БУКВ: Если аватара нет (пусто или мы его обнулили выше)
+ if (empty($row['avatar']))
+ {
+ // Берем имя автора (если пусто — 'Guest')
+ $name = !empty($row['comment_author_name']) ? stripslashes($row['comment_author_name']) : 'Guest';
+
+ // Получаем первую букву имени (в верхнем регистре)
+ $row['first_letter'] = mb_substr(trim($name), 0, 1, 'UTF-8');
+
+ // Вычисляем индекс цвета (от 1 до 8) на основе имени
+ $row['avatar_color_index'] = (abs(crc32($name)) % 12) + 1;
+ }
// --- ИСПРАВЛЕННАЯ ЛОГИКА ТАЙМЕРА И ПРАВ (УЧЕТ АДМИНА) ---
$row['can_edit'] = 0;
@@ -560,7 +580,22 @@ exit;
if ($ajax)
{
- $new_comment['avatar'] = (isset($new_comment['comment_author_id']) && $new_comment['comment_author_id'] > 0) ? getAvatar($new_comment['comment_author_id'], 48) : '';
+ // 1. Получаем аватар как обычно
+$new_comment['avatar'] = (isset($new_comment['comment_author_id']) && $new_comment['comment_author_id'] > 0) ? getAvatar($new_comment['comment_author_id'], 48) : '';
+
+// 2. Очищаем, если это системный user.png
+if (!empty($new_comment['avatar']) && strpos($new_comment['avatar'], 'user.png') !== false)
+{
+ $new_comment['avatar'] = '';
+}
+
+// 3. Если аватара нет — генерируем данные для буквы
+if (empty($new_comment['avatar']))
+{
+ $name = !empty($new_comment['comment_author_name']) ? stripslashes($new_comment['comment_author_name']) : 'Guest';
+ $new_comment['first_letter'] = mb_substr(trim($name), 0, 1, 'UTF-8');
+ $new_comment['avatar_color_index'] = (abs(crc32($name)) % 12) + 1;
+}
$new_comment['comment_changed'] = 0;
// Передаем флаги для мгновенной активации управления в шаблоне
diff --git a/css/mod_comment_styles.css b/css/mod_comment_styles.css
index e7e5bf3..db57029 100644
--- a/css/mod_comment_styles.css
+++ b/css/mod_comment_styles.css
@@ -1,108 +1,109 @@
/* ====================================================================
- ОБЩИЕ СТИЛИ КОММЕНТАРИЕВ И АВАТАРОВ (НОВЫЕ И ОБНОВЛЕННЫЕ)
+ ОБЩИЕ СТИЛИ КОММЕНТАРИЕВ И АВАТАРОВ
==================================================================== */
/* 1. Общие настройки для блока комментария */
.mod_comment_comment {
- /* Можно добавить небольшой отступ снизу, если стандартный mb-3 недостаточен */
- /* margin-bottom: 1.5rem !important; */
+ /* Резерв для кастомных отступов */
}
/* 2. Контейнер аватара */
.mod_comment_avatar {
- /* Фиксируем размер и убедимся, что аватар не "съедет" */
width: 48px;
height: 48px;
- margin-right: 20px !important;
- /* Убедимся, что аватар имеет правильный отступ от метаданных/текста */
- /* margin-right: 15px; */ /* Если вы используете me-3 в HTML, этот CSS не нужен */
+ margin-right: 1rem !important;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-shrink: 0;
}
/* 3. Стиль изображения аватара */
.mod_comment_avatar img {
- /* Если rounded-circle не работает или его нет в Bootstrap */
- border-radius: 50%;
- width: 100%;
- height: 100%;
- object-fit: cover; /* Гарантирует, что изображение не исказится */
+ border-radius: 50% !important;
+ width: 48px !important;
+ height: 48px !important;
+ object-fit: cover !important;
}
/* 4. Стиль метаданных (Автор, Дата, IP) */
.mod_comment_meta {
- /* Делаем блок метаданных компактнее и выравниваем по верхнему краю */
line-height: 1.2;
- margin-bottom: 5px !important; /* Чуть меньше отступ от текста */
+ margin-bottom: 0.5rem !important;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ gap: 5px 15px; /* Удобный отступ между элементами */
}
/* 5. Стили текста комментария */
.mod_comment_text {
- /* Увеличиваем межстрочный интервал для лучшей читабельности */
line-height: 1.5;
+ word-wrap: break-word;
+ overflow-wrap: break-word;
}
-/* 6. Стили панели действий (Редактировать, Удалить, Ответить) */
-.mod_comment_actions a {
- text-decoration: none;
- font-size: 0.9em;
- padding-left: 10px;
- padding-right: 10px;
+/* 6. Прикрепленные изображения */
+.mod_comment_attached_image img {
+ max-width: 100%;
+ height: auto;
+ max-height: 300px;
}
+/* 7. СТИЛИ ДЛЯ БУКВЕННЫХ АВАТАРОВ */
+.mod_comment_avatar_letter {
+ width: 100%;
+ height: 100%;
+ border-radius: 50%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: bold;
+ color: #ffffff;
+ font-size: 1.2rem;
+ text-transform: uppercase;
+ user-select: none;
+ box-shadow: inset 0 0 5px rgba(0,0,0,0.1);
+}
+
+/* Цветовая палитра для аватаров */
+.av-c1 { background-color: #6c5ce7; }
+.av-c2 { background-color: #2ecc71; }
+.av-c3 { background-color: #e67e22; }
+.av-c4 { background-color: #e91e63; }
+.av-c5 { background-color: #00cec9; }
+.av-c6 { background-color: #0984e3; }
+.av-c7 { background-color: #d63031; }
+.av-c8 { background-color: #636e72; }
+.av-c9 { background-color: #fdcb6e; }
+.av-c10 { background-color: #fd79a8; }
+.av-c11 { background-color: #a29bfe; }
+.av-c12 { background-color: #273c75; }
/* ====================================================================
- СТИЛИ ДЛЯ ДРЕВОВИДНОГО ОТОБРАЖЕНИЯ КОММЕНТАРИЕВ (Replies) - ВАШ КОД
+ СТИЛИ ДЛЯ ДРЕВОВИДНОГО ОТОБРАЖЕНИЯ (Replies)
==================================================================== */
-/* 1. Общий контейнер ответа, который находится внутри .mod_comment_comment
- и имеет отступ ms-4 */
.mod_comment_comment .mod_comment_comment.ms-4 {
- /* Добавляем вертикальную линию слева */
- border-left: 3px solid #dee2e6; /* Легкая граница */
-
- /* Уменьшаем margin-left, который дает ms-4, чтобы освободить место
- для линии и при этом не уходить слишком далеко вправо на каждом уровне. */
- margin-left: 20px !important; /* Принудительно уменьшаем отступ */
- padding-left: 15px; /* Отступ между линией и контентом ответа */
-
- /* Опционально: немного отличающийся фон */
+ border-left: 3px solid #dee2e6;
+ margin-left: 20px !important;
+ padding-left: 15px;
background-color: #f8f9fa;
}
-/* 2. Отдельно стилизуем рамку для вложенных карточек, чтобы они не выглядели
- громоздко внутри родителя */
.mod_comment_comment .mod_comment_comment.ms-4 > .mod_comment_box {
- border: none !important; /* Убираем стандартную рамку карточки, чтобы осталась только наша вертикальная линия */
+ border: none !important;
}
-/* 3. Убираем рамки у вложенных заголовков, чтобы линия была чистой */
-.mod_comment_comment .mod_comment_comment.ms-4 > .mod_comment_box > .card-header {
- border-bottom: none !important;
-}
-
-/* 4. Более глубокий уровень вложенности (если ответов много) */
-/* Если ответ на ответ имеет дополнительный ms-4, стилизуем его дальше */
-.mod_comment_comment .mod_comment_comment.ms-4 .mod_comment_comment.ms-4 {
- border-color: #adb5bd; /* Чуть темнее линия для следующего уровня */
- background-color: #fff; /* Возвращаем белый фон для контраста */
-}
-
-
/* ====================================================================
- !!! ФИНАЛЬНЫЕ СТИЛИ ДЛЯ ПАГИНАЦИИ !!!
+ СТИЛИ ДЛЯ ПАГИНАЦИИ
==================================================================== */
-/* 1. Общий контейнер, который окружает