diff --git a/class/comment.php b/class/comment.php index b611d86..e60eb62 100644 --- a/class/comment.php +++ b/class/comment.php @@ -1238,12 +1238,33 @@ function commentAdminDelete($comment_id) if (empty($ids)) return; - // Читаем тип удаления из запроса (для одиночных кликов по иконкам) + // Путь к папке с файлами + $upload_dir = $_SERVER['DOCUMENT_ROOT'] . "/uploads/comments/"; + // Читаем тип удаления из запроса $delete_type = $_REQUEST['admin_action_type'] ?? 'auto'; foreach ($ids as $id) { if ($id <= 0) continue; + // --- БЛОК УДАЛЕНИЯ ФАЙЛОВ (НАЧАЛО) --- + // Получаем имена файлов перед любым действием в БД + $comment_files = $AVE_DB->Query("SELECT comment_file FROM " . PREFIX . "_module_comment_info WHERE Id = '$id' LIMIT 1")->GetCell(); + + if (!empty($comment_files)) { + $files_to_delete = explode(',', $comment_files); + foreach ($files_to_delete as $filename) { + $filename = trim($filename); + if (empty($filename)) continue; + + $full_path = $upload_dir . $filename; + $thumb_path = $upload_dir . "thumbs/" . $filename; // Удаляем и миниатюру, если есть + + if (file_exists($full_path)) @unlink($full_path); + if (file_exists($thumb_path)) @unlink($thumb_path); + } + } + // --- БЛОК УДАЛЕНИЯ ФАЙЛОВ (КОНЕЦ) --- + // Проверяем наличие детей $has_children = $AVE_DB->Query("SELECT COUNT(*) FROM " . PREFIX . "_module_comment_info WHERE parent_id = '$id'")->GetCell(); @@ -1262,7 +1283,6 @@ function commentAdminDelete($comment_id) } // Если детей нет или принудительно выбран 'full' — удаляем физически else { - // Собираем дерево (на случай если это Full Delete для родителя) $all_tree_ids = [$id]; $parents = [$id]; while (!empty($parents)) { @@ -1281,8 +1301,8 @@ function commentAdminDelete($comment_id) } } + // Редирект с сохранением фильтров $session_id = SESSION ?? ''; - // --- Сохраняем состояние фильтров --- $s_query = $_REQUEST['search_query'] ?? ''; $s_order = $_REQUEST['sort_order'] ?? 'new'; $f_type = $_REQUEST['filter_type'] ?? ''; @@ -1823,7 +1843,7 @@ $row = $AVE_DB->Query(" $clean_name = function_exists('prepare_fname') ? prepare_fname(pathinfo($fname, PATHINFO_FILENAME)) : 'file'; if (empty($clean_name)) $clean_name = 'file'; - $new_name = $clean_name . '_' . time() . '_' . rand(100,999) . '.' . $ext; + $new_name = $clean_name . '_' . time() . '.' . $ext; if (move_uploaded_file($tmp_name, $upload_dir . $new_name)) { $current_files[] = $new_name; diff --git a/templates/admin_edit.tpl b/templates/admin_edit.tpl index 5825fd1..7b1070a 100644 --- a/templates/admin_edit.tpl +++ b/templates/admin_edit.tpl @@ -12,6 +12,7 @@ $(document).ready(function(){ var maxFileSize = {/literal}{$row.comment_max_file_size|default:2048}{literal} * 1024; var allowedExts = {/literal}'{$row.comment_allowed_extensions|default:"jpg,jpeg,png,gif,webp"}'{literal}.split(','); var existingFilesCount = {/literal}{$row.file_list|@count|default:0}{literal}; + var dt = new DataTransfer(); var left = {/literal}{$comment_max_chars|default:1000}{literal}; $('#text_counter').text(left); @@ -48,7 +49,7 @@ $(document).ready(function(){ var $previewContainer = $('#new_images_preview'); var $uploadBox = $input.closest('.upload-info-box'); - $previewContainer.empty(); + //$previewContainer.empty(); var deletedCount = $('input[name="delete_files[]"]:checked').length; var currentTotal = existingFilesCount - deletedCount; @@ -77,6 +78,8 @@ $(document).ready(function(){ return false; } + var fileIndex = dt.items.length; + dt.items.add(file); // Если ошибок нет, читаем превью (FileReader) var reader = new FileReader(); reader.onload = function(e) { @@ -85,20 +88,23 @@ $(document).ready(function(){ ? '' : '
' + ext + '
'; - var html = ` -
-
×
- ${content} - ${file.name} -
`; + var html = ` +
+
×
+ ${content} + ${file.name} +
`; $previewContainer.append(html); }; reader.readAsDataURL(file); }); if (hasError) { - $input.val(''); + this.value = ""; + dt = new DataTransfer(); $previewContainer.empty(); + } else { + this.files = dt.files; } }); @@ -182,6 +188,15 @@ $(document).ready(function(){ $('input[name="comment_image[]"]').val(''); $('#new_images_preview').empty(); }; + window.removeSelectedFile = function(idx) { + var newDt = new DataTransfer(); + for (var i = 0; i < dt.files.length; i++) { + if (i !== idx) newDt.items.add(dt.files[i]); + } + dt = newDt; + $('input[name="comment_image[]"]')[0].files = dt.files; + $('#nf_' + idx).remove(); +}; }); {/literal} @@ -337,7 +352,7 @@ $(document).ready(function(){ {else}
{$fileExt}
{/if} - {$file|regex_replace:"/^[0-9]+_/":""} + {$file|regex_replace:"/_[0-9]+(?=\.[a-z0-9]+$)/i":""} {/foreach}