добавляем языковые переменные для админки - вывода списка комментариев и работа с ним
This commit is contained in:
@@ -903,7 +903,7 @@ if (!$can_upload && isset($_FILES['comment_image'])) {
|
||||
// 1. Получаем оригинальное имя файла без расширения
|
||||
$original_basename = pathinfo($fname, PATHINFO_FILENAME);
|
||||
|
||||
// 2. Очищаем имя через нашу исправленную функцию
|
||||
// 2. Очищаем имя
|
||||
$clean_name = prepare_fname($original_basename);
|
||||
|
||||
// 3. Защита от пустого имени
|
||||
@@ -941,7 +941,7 @@ if (!$can_upload && isset($_FILES['comment_image'])) {
|
||||
$user_rating = (int)$row['user_rating'];
|
||||
}
|
||||
|
||||
// 6. Обновление базы данных
|
||||
// Обновление базы данных
|
||||
$new_status = $is_admin ? (int)$row['comment_status'] : ($row['comment_need_approve'] == '1' ? 0 : 1);
|
||||
|
||||
$AVE_DB->Query("
|
||||
@@ -1112,7 +1112,7 @@ function commentPostDelete($comment_id)
|
||||
$user_id = empty($_SESSION['user_id']) ? 0 : (int)$_SESSION['user_id'];
|
||||
$anon_key = $this->_getAnonKey();
|
||||
|
||||
// ПРОВЕРКА ПРАВ ГОЛОСОВАНИЯ (Новое)
|
||||
// ПРОВЕРКА ПРАВ ГОЛОСОВАНИЯ
|
||||
// Получаем настройки модуля, чтобы узнать, разрешено ли анонимам голосовать
|
||||
$settings = $this->_commentSettingsGet();
|
||||
if (empty($user_id) && empty($settings['comment_rating_anon_vote'])) {
|
||||
@@ -1206,7 +1206,6 @@ function commentPostDelete($comment_id)
|
||||
'" . time() . "')
|
||||
");
|
||||
|
||||
// ОБНОВЛЕНИЕ В ТАБЛИЦЕ INFO
|
||||
$AVE_DB->Query("
|
||||
UPDATE " . PREFIX . "_module_comment_info
|
||||
SET rating_sum = rating_sum + " . $vote_value . ",
|
||||
@@ -1214,7 +1213,7 @@ function commentPostDelete($comment_id)
|
||||
WHERE Id = '" . $comment_id . "'
|
||||
");
|
||||
|
||||
// ФИНАЛ: Чистый ответ для JS
|
||||
// Чистый ответ для JS
|
||||
if ($ajax) {
|
||||
if (ob_get_length()) ob_end_clean();
|
||||
echo 'success';
|
||||
@@ -1236,7 +1235,6 @@ function commentAdminDelete($comment_id)
|
||||
if (empty($ids)) return;
|
||||
|
||||
// Читаем тип удаления из запроса (для одиночных кликов по иконкам)
|
||||
// Для массового удаления через кнопку "Применить" этот параметр обычно не передается
|
||||
$delete_type = $_REQUEST['admin_action_type'] ?? 'auto';
|
||||
|
||||
foreach ($ids as $id) {
|
||||
@@ -1245,7 +1243,6 @@ function commentAdminDelete($comment_id)
|
||||
// Проверяем наличие детей
|
||||
$has_children = $AVE_DB->Query("SELECT COUNT(*) FROM " . PREFIX . "_module_comment_info WHERE parent_id = '$id'")->GetCell();
|
||||
|
||||
// ЛОГИКА СОГЛАСНО ДОГОВОРУ:
|
||||
// Если тип 'soft' ИЛИ (тип 'auto' и есть дети) — делаем мягкое удаление
|
||||
if (($delete_type == 'soft') || ($delete_type == 'auto' && $has_children > 0)) {
|
||||
$AVE_DB->Query("
|
||||
@@ -1404,7 +1401,7 @@ function commentAdminListShow($tpl_dir)
|
||||
$res = $AVE_DB->Query("SELECT Id FROM " . PREFIX . "_module_comment_info WHERE parent_id IN ($parent_list)");
|
||||
|
||||
$found_children = [];
|
||||
// Перебираем результат построчно через стандартный FetchAssocArray
|
||||
// Перебираем результат построчно
|
||||
if ($res) {
|
||||
while ($row_child = $res->FetchAssocArray()) {
|
||||
$found_children[] = (int)$row_child['Id'];
|
||||
|
||||
27
lang/ru.txt
27
lang/ru.txt
@@ -219,3 +219,30 @@ COMMENT_SET_GEN = "Общие настройки"
|
||||
COMMENT_TEXT_DEL_BY_ADMIN = "Комментарий удален администратором."
|
||||
COMMENT_TEXT_DEL_BY_AUTHOR = "Комментарий удален автором."
|
||||
COMMENT_STATUS_DELETED = "Удалено"
|
||||
COMMENT_STATUS_AKTIV = "Активен"
|
||||
COMMENT_STATUS_HIDE = "Скрыт"
|
||||
COMMENT_ANSWER_ADM = "Ответ на комментарий"
|
||||
COMMENT_DEL_ADM_ADM = "Комментарий удален администратором"
|
||||
COMMENT_DEL_AVT_ADM = "Автор удалил свой комментарий"
|
||||
COMMENT_ICON_HIDE_ADM = "Скрыть"
|
||||
COMMENT_ICON_SHOW_ADM = "Одобрить"
|
||||
COMMENT_ICON_EDIT_ADM = "Редактировать"
|
||||
COMMENT_ICON_DEL_SOFT = "Мягкое удаление/заменяет текст (сохраняет ветку)"
|
||||
COMMENT_ICON_DEL_HARD = "Удалить навсегда (вместе с веткой)"
|
||||
COMMENT_NOT_COOMENTS_MES = "Сообщение:"
|
||||
COMMENT_NOT_COOMENTS_MES_A = "Нет комментариев."
|
||||
COMMENT_ACTION_SELECT = "Выберите действие..."
|
||||
COMMENT_ACTION_SELECT_PUB = "Опубликовать"
|
||||
COMMENT_ACTION_HIDE = "Скрыть"
|
||||
COMMENT_ACTION_DEL = "Удалить выбранные"
|
||||
COMMENT_ACT_DEL_SEL = "Выберите действие из списка!"
|
||||
COMMENT_ACT_DEL_WAR = "Внимание"
|
||||
COMMENT_ACT_DEL_SEL_A = "Вы не выбрали ни одного комментария для обработки."
|
||||
COMMENT_ACT_DEL_WAR_A = "Ошибка"
|
||||
COMMENT_ACT_DEL_SEL_B = "Выполнить выбранное действие для "
|
||||
COMMENT_ACT_DEL_WAR_B = " эл.?
|
||||
COMMENT_ACT_DEL_WAR_C = "Подтверждение"
|
||||
COMMENT_CONFIRM_ADM_DIR = "Удаление комментария"
|
||||
COMMENT_CONFIRM_ADM_NAME = "Удалить навсегда (вместе с веткой)?"
|
||||
COMMENT_CONFIRM_ADM_DIR_SOFT = "Мягкое удаление комментария (ветка остается)"
|
||||
COMMENT_CONFIRM_ADM_NAME_SOFT = "Удалить все данные и применить текст Комментарий удален администратором ?"
|
||||
|
||||
@@ -158,7 +158,7 @@
|
||||
{if $docs}
|
||||
{foreach from=$docs item=row name=zebraloop}
|
||||
{assign var="is_deleted" value=false}
|
||||
{if $row.comment_author_name == '__DELETED__' || $row.comment_author_name == 'Удалено'}{assign var="is_deleted" value=true}{/if}
|
||||
{if $row.comment_author_name == '__DELETED__' || $row.comment_author_name == '{#COMMENT_STATUS_DELETED#}'}{assign var="is_deleted" value=true}{/if}
|
||||
|
||||
|
||||
<tr class="{if $row.comment_status == '0'}row-hidden deleted-row{elseif $smarty.foreach.zebraloop.iteration % 2 == 0}row-even{else}row-odd{/if}">
|
||||
@@ -166,9 +166,9 @@
|
||||
<td align="center"><strong>{$row.CId}</strong></td>
|
||||
<td align="center">
|
||||
{if $row.comment_status == '1'}
|
||||
<span class="status-dot dot-active" title="Активен"></span>
|
||||
<span class="status-dot dot-active" title="{#COMMENT_STATUS_AKTIV#}"></span>
|
||||
{else}
|
||||
<span class="status-dot dot-hidden" title="Скрыт"></span>
|
||||
<span class="status-dot dot-hidden" title="{#COMMENT_STATUS_HIDE#}"></span>
|
||||
{/if}
|
||||
</td>
|
||||
|
||||
@@ -215,16 +215,16 @@
|
||||
</div>
|
||||
<div style="display: flex; align-items: center; gap: 8px;">
|
||||
{if $row.parent_id > 0}
|
||||
<span style="background:#e1f5fe; color:#0288d1; padding:1px 5px; border-radius:3px; font-weight:bold; font-size: 10px !important;">Ответ на комментарий #{$row.parent_id} »</span>
|
||||
<span style="background:#e1f5fe; color:#0288d1; padding:1px 5px; border-radius:3px; font-weight:bold; font-size: 10px !important;">{#COMMENT_ANSWER_ADM#} #{$row.parent_id} »</span>
|
||||
{/if}
|
||||
<div class="comment-text-cell">
|
||||
{if $row.comment_text == '__DEL_BY_ADM__'}
|
||||
<div class="comment-deleted-info del-adm">
|
||||
<span style="font-size:14px;">🚫</span> Комментарий удален администратором
|
||||
<span style="font-size:14px;">🚫</span> {#COMMENT_DEL_ADM_ADM#}
|
||||
</div>
|
||||
{elseif $row.comment_text == '__DEL_BY_AUT__'}
|
||||
<div class="comment-deleted-info del-aut">
|
||||
<span style="font-size:14px;">🗑️</span> Автор удалил свой комментарий
|
||||
<span style="font-size:14px;">🗑️</span> {#COMMENT_DEL_AVT_ADM#}
|
||||
</div>
|
||||
{else}
|
||||
{$row.comment_text|strip_tags|truncate:130}
|
||||
@@ -263,17 +263,17 @@
|
||||
<div style="display: flex; justify-content: flex-end; gap: 6px;">
|
||||
{if !$is_deleted}
|
||||
{if $row.comment_status == '1'}
|
||||
<a class="icon_sprite ico_unlock_no" title="Скрыть" href="index.php?do=modules&action=modedit&mod=comment&moduleaction=1&admin_action=set_status_0&id={$row.CId}&cp={$sess}"></a>
|
||||
<a class="icon_sprite ico_unlock_no" title="{#COMMENT_ICON_HIDE_ADM#}" href="index.php?do=modules&action=modedit&mod=comment&moduleaction=1&admin_action=set_status_0&id={$row.CId}&cp={$sess}"></a>
|
||||
{else}
|
||||
<a class="icon_sprite ico_unlock" title="Одобрить" href="index.php?do=modules&action=modedit&mod=comment&moduleaction=1&admin_action=set_status_1&id={$row.CId}&cp={$sess}"></a>
|
||||
<a class="icon_sprite ico_unlock" title="{#COMMENT_ICON_SHOW_ADM#}" href="index.php?do=modules&action=modedit&mod=comment&moduleaction=1&admin_action=set_status_1&id={$row.CId}&cp={$sess}"></a>
|
||||
{/if}
|
||||
<a class="icon_sprite ico_edit" title="Редактировать" href="javascript:void(0);" onClick="windowOpen('index.php?do=modules&action=modedit&mod=comment&moduleaction=admin_edit&pop=1&docid={$row.document_id}&Id={$row.CId}','700','700','1');"></a>
|
||||
<a class="icon_sprite ico_edit" title="{#COMMENT_ICON_EDIT_ADM#}" href="javascript:void(0);" onClick="windowOpen('index.php?do=modules&action=modedit&mod=comment&moduleaction=admin_edit&pop=1&docid={$row.document_id}&Id={$row.CId}','700','700','1');"></a>
|
||||
{if $row.has_children}
|
||||
<a class="icon_sprite ico_delete ConfirmDelete" title="Скрыть текст (сохранить ветку)"
|
||||
<a class="icon_sprite ico_delete ConfirmDelete" title="{#COMMENT_ICON_DEL_SOFT#}" dir="{#COMMENT_CONFIRM_ADM_DIR_SOFT#}" name="{#COMMENT_CONFIRM_ADM_NAME_SOFT#}"
|
||||
href="index.php?do=modules&action=modedit&mod=comment&moduleaction=admin_del&admin_action_type=soft&Id={$row.CId}&cp={$sess}"></a>
|
||||
{/if}
|
||||
{/if}
|
||||
<a class="icon_sprite ico_delete ico_delete_all ConfirmDelete" title="УДАЛИТЬ ПОЛНОСТЬЮ"
|
||||
<a class="icon_sprite ico_delete ico_delete_all ConfirmDelete" title="{#COMMENT_ICON_DEL_HARD#}" dir="{#COMMENT_CONFIRM_ADM_DIR#}" name="{#COMMENT_CONFIRM_ADM_NAME#}"
|
||||
href="index.php?do=modules&action=modedit&mod=comment&moduleaction=admin_del&admin_action_type=full&Id={$row.CId}&cp={$sess}"></a>
|
||||
</div>
|
||||
</td>
|
||||
@@ -283,7 +283,7 @@
|
||||
<tr>
|
||||
<td colspan="9">
|
||||
<ul class="messages">
|
||||
<li class="highlight yellow"><strong>Сообщение:</strong><br />Нет комментариев.</li>
|
||||
<li class="highlight yellow"><strong>{#COMMENT_NOT_COOMENTS_MES#}</strong><br />{#COMMENT_NOT_COOMENTS_MES_A#}</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -294,12 +294,12 @@
|
||||
<div class="tfoot">
|
||||
<div class="left" style="padding:15px;">
|
||||
<select id="mass_action_select">
|
||||
<option value="">Выберите действие...</option>
|
||||
<option value="set_status_1">Опубликовать</option>
|
||||
<option value="set_status_0">Скрыть</option>
|
||||
<option value="delete">Удалить выбранные</option>
|
||||
<option value="">{#COMMENT_ACTION_SELECT#}</option>
|
||||
<option value="set_status_1">{#COMMENT_ACTION_SELECT_PUB#}</option>
|
||||
<option value="set_status_0">{#COMMENT_ACTION_HIDE#}</option>
|
||||
<option value="delete">{#COMMENT_ACTION_DEL#}</option>
|
||||
</select>
|
||||
<input type="button" value="ПРИМЕНИТЬ" class="blueBtn" onclick="runMassAction()" style="margin-left:10px;" />
|
||||
<input type="button" value="{#COMMENT_BUTTON_APPLY#}" class="blueBtn" onclick="runMassAction()" style="margin-left:10px;" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -318,9 +318,9 @@ function runMassAction() {
|
||||
var select = document.getElementById('mass_action_select');
|
||||
var action = select.value;
|
||||
|
||||
// Красивое уведомление, если не выбрали действие
|
||||
// уведомление, если не выбрали действие
|
||||
if (!action) {
|
||||
jAlert('Выберите действие из списка!', 'Внимание');
|
||||
jAlert('{#COMMENT_ACT_DEL_SEL#}', '{#COMMENT_ACT_DEL_WAR#}');
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -330,9 +330,9 @@ function runMassAction() {
|
||||
if (checkboxes[i].checked) ids.push(checkboxes[i].value);
|
||||
}
|
||||
|
||||
// Красивое уведомление, если не выбрали чекбоксы
|
||||
// уведомление, если не выбрали чекбоксы
|
||||
if (ids.length === 0) {
|
||||
jAlert('Вы не выбрали ни одного комментария для обработки.', 'Ошибка');
|
||||
jAlert('{#COMMENT_ACT_DEL_SEL_A#}', '{#COMMENT_ACT_DEL_WAR_A#}');
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -346,8 +346,8 @@ function runMassAction() {
|
||||
url = 'index.php?do=modules&action=modedit&mod=comment&moduleaction=1&admin_action=' + action + '&ids=' + ids.join(',') + '&cp=' + cp;
|
||||
}
|
||||
|
||||
// Красивое подтверждение
|
||||
jConfirm('Выполнить выбранное действие для ' + ids.length + ' эл.?', 'Подтверждение', function(r) {
|
||||
// подтверждение
|
||||
jConfirm('{#COMMENT_ACT_DEL_SEL_B#} ' + ids.length + ' {#COMMENT_ACT_DEL_WAR_B#}', '{#COMMENT_ACT_DEL_WAR_C#}', function(r) {
|
||||
if(r) window.location.href = url;
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user