diff --git a/build-plugin.sh b/build-plugin.sh index bcbf832..2f1a530 100755 --- a/build-plugin.sh +++ b/build-plugin.sh @@ -2,7 +2,7 @@ set -eu PLUGIN="u-navigator" -VERSION="2026.06.23.r041" +VERSION="2026.06.23.r042" PKG_DIR="packages" WORK_DIR=".plugin-build" PKG_NAME="${PLUGIN}-${VERSION}.tgz" diff --git a/packages/u-navigator-2026.06.23.r041.tgz b/packages/u-navigator-2026.06.23.r041.tgz deleted file mode 100644 index 4be5f6b..0000000 Binary files a/packages/u-navigator-2026.06.23.r041.tgz and /dev/null differ diff --git a/packages/u-navigator-2026.06.23.r042.tgz b/packages/u-navigator-2026.06.23.r042.tgz new file mode 100644 index 0000000..06295b0 Binary files /dev/null and b/packages/u-navigator-2026.06.23.r042.tgz differ diff --git a/plugin-root/usr/local/emhttp/plugins/u-navigator/api/job.php b/plugin-root/usr/local/emhttp/plugins/u-navigator/api/job.php index 685cf9b..b328ea0 100644 --- a/plugin-root/usr/local/emhttp/plugins/u-navigator/api/job.php +++ b/plugin-root/usr/local/emhttp/plugins/u-navigator/api/job.php @@ -6,7 +6,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') { } $action = $_GET['action'] ?? ''; -if (!in_array($action, ['move', 'copy', 'size', 'permissions'], true)) { +if (!in_array($action, ['move', 'copy', 'delete', 'size', 'permissions'], true)) { unav_error(404, 'Unknown job action'); } @@ -18,6 +18,8 @@ if (in_array($action, ['move', 'copy'], true)) { unav_assert_writable(); $destination = unav_destination_path($data['destination'] ?? null); unav_guard_destination($source['path'], $destination['path']); +} elseif ($action === 'delete') { + unav_assert_writable(); } elseif ($action === 'permissions') { unav_assert_writable(); $permissions = unav_permission_options($data); diff --git a/plugin-root/usr/local/emhttp/plugins/u-navigator/api/job_worker.php b/plugin-root/usr/local/emhttp/plugins/u-navigator/api/job_worker.php index 59cd125..17b13fe 100644 --- a/plugin-root/usr/local/emhttp/plugins/u-navigator/api/job_worker.php +++ b/plugin-root/usr/local/emhttp/plugins/u-navigator/api/job_worker.php @@ -16,6 +16,8 @@ function unav_run_job(string $id): void { } elseif ($job['type'] === 'copy') { unav_worker_guard($job['source'], $job['destination']); unav_worker_copy($job['source'], $job['destination'], $job); + } elseif ($job['type'] === 'delete') { + unav_worker_delete_job($job['source'], $job); } elseif ($job['type'] === 'size') { $result = unav_worker_size($job['source'], $job); $job['result'] = $result; @@ -90,6 +92,12 @@ function unav_worker_move(string $source, string $destination, array &$job): voi unav_worker_delete($source); } +function unav_worker_delete_job(string $source, array &$job): void { + $sourceReal = unav_worker_guard_source($source); + unav_worker_update($job, 'running', 15, 'Deleting'); + unav_worker_delete($sourceReal); +} + function unav_worker_size(string $source, array &$job): array { $sourceReal = unav_worker_guard_source($source); unav_worker_update($job, 'running', 10, 'Calculating size'); diff --git a/server/public/app.js b/server/public/app.js index fc659e7..6761892 100644 --- a/server/public/app.js +++ b/server/public/app.js @@ -272,6 +272,7 @@ function renderExplorer(body, win) { +