Tickets - как полностью удалять загруженные файлы?
Есть форма добавления тикета с встроенной возможностью добавления изображений.
Сейчас действует схема: "Удалить/Восстановить", при которой легко можно восстановить помеченный на удаление файл.
Как реализовать возможность немедленного полного удаления (уничтожения) загруженного файла?
То есть не нужны никакие восстановления, нужно сразу же удалить файл.
Вариант с display:none для .deleted (помеченных для удаления) не подходит, т.к. при повторной загрузке уже удалённого изображения выдаётся ошибка о том, что такой файл уже существует.
Нужно же сразу после нажатия на «Удалить» чтобы файл уничтожался на сервере и в базе, без возможности восстановления.
Мои мысли:
Насколько я понимаю, в файле assets/components/tickets/js/web/files.js отправляется ajax-запрос к процессору ticket/file/delete:
Что мне нужно сделать, чтобы заработало полное уничтожение загруженного файла? Помогите набросать план действий (только без редактирования оригинальных файлов, чтобы исключить затирание при обновлении)!
Сейчас действует схема: "Удалить/Восстановить", при которой легко можно восстановить помеченный на удаление файл.
Как реализовать возможность немедленного полного удаления (уничтожения) загруженного файла?
То есть не нужны никакие восстановления, нужно сразу же удалить файл.
Вариант с display:none для .deleted (помеченных для удаления) не подходит, т.к. при повторной загрузке уже удалённого изображения выдаётся ошибка о том, что такой файл уже существует.
Нужно же сразу после нажатия на «Удалить» чтобы файл уничтожался на сервере и в базе, без возможности восстановления.
Мои мысли:
Насколько я понимаю, в файле assets/components/tickets/js/web/files.js отправляется ajax-запрос к процессору ticket/file/delete:
$.post(TicketsConfig.actionUrl, {action: 'ticket/file/delete', id: id, form_key: form_key}, function(response) {
if (response.success) {
if ($parent.hasClass(deleted)) {
$parent.removeClass(deleted)
}
else {
$parent.addClass(deleted)
}
}
else {
Tickets.Message.error(response.message);
}
}, 'json');
Сам процессор похоже находится тут: core/components/tickets/processors/web/file/delete.class.phpЧто мне нужно сделать, чтобы заработало полное уничтожение загруженного файла? Помогите набросать план действий (только без редактирования оригинальных файлов, чтобы исключить затирание при обновлении)!
Поблагодарить автора
Отправить деньги
Комментарии: 4
О! Спасибо что ткнул носом в нужную строчку!
Похоже можно просто отправить свой ajax-запрос при нажатии на «Удалить» и воспользоваться
Похоже можно просто отправить свой ajax-запрос при нажатии на «Удалить» и воспользоваться
$item->remove();
Спасибо! Буду пробовать!
так это я могу изменить пост запрос и снесу любой файл из другого тикета?
У меня при нажатии на кнопку удаления отправляется пост запрос в ajax-файл, который проверяет:
1. Если это ajax-запрос
2. Если пользователь авторизован
3. Если этот файл действительно принадлежит текущему пользователю. Иначе он вернёт ошибку!
То есть вся логика с проверками проходит на php, он фильтрует поступившие данные.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.