diff --git a/modules/PodcastImport/Controllers/PodcastImportController.php b/modules/PodcastImport/Controllers/PodcastImportController.php index 2854827e..3a055040 100644 --- a/modules/PodcastImport/Controllers/PodcastImportController.php +++ b/modules/PodcastImport/Controllers/PodcastImportController.php @@ -145,11 +145,17 @@ class PodcastImportController extends BaseController $importTask = $importQueue[$taskId]; switch ($action) { case 'cancel': - $importTask->cancel(); + if ($importTask->status === TaskStatus::Running || $importTask->status === TaskStatus::Queued) { + $importTask->cancel(); + + return redirect()->back() + ->with('message', lang('PodcastImport.messages.canceled')); + } + return redirect()->back() - ->with('message', lang('PodcastImport.messages.canceled')); + ->with('error', lang('PodcastImport.messages.notRunning')); case 'retry': - if ($importTask->status === TaskStatus::Running) { + if ($importTask->status === TaskStatus::Running || $importTask->status === TaskStatus::Queued) { return redirect()->back() ->with('error', lang('PodcastImport.messages.alreadyRunning')); } diff --git a/modules/PodcastImport/Language/en/PodcastImport.php b/modules/PodcastImport/Language/en/PodcastImport.php index a89fe03b..e7503eef 100644 --- a/modules/PodcastImport/Language/en/PodcastImport.php +++ b/modules/PodcastImport/Language/en/PodcastImport.php @@ -50,6 +50,7 @@ return [ ], 'messages' => [ 'canceled' => 'Import task has been successfully canceled!', + 'notRunning' => 'Cannot cancel Import Task as it is not running.', 'alreadyRunning' => 'Import Task is already running. You may cancel it before retrying.', 'retried' => 'Import task has been queued, it will be retried shortly!', 'deleted' => 'Import task has been successfully deleted!', diff --git a/themes/cp_admin/import/_queue_table.php b/themes/cp_admin/import/_queue_table.php index fe51a3b1..e58fe560 100644 --- a/themes/cp_admin/import/_queue_table.php +++ b/themes/cp_admin/import/_queue_table.php @@ -98,31 +98,37 @@ use Modules\PodcastImport\Entities\TaskStatus; [ 'header' => lang('Common.list.actions'), 'cell' => function (PodcastImportTask $importTask) { + $menuItems = [ + [ + 'type' => 'separator', + ], + [ + 'type' => 'link', + 'title' => lang('PodcastImport.queue.actions.delete'), + 'uri' => route_to('podcast-imports-task-action', $importTask->id, 'delete'), + 'class' => 'font-semibold text-red-600', + ], + ]; + + if ($importTask->status === TaskStatus::Running || $importTask->status === TaskStatus::Queued) { + array_unshift($menuItems, [ + 'type' => 'link', + 'title' => lang('PodcastImport.queue.actions.cancel'), + 'uri' => route_to('podcast-imports-task-action', $importTask->id, 'cancel'), + ]); + } else { + array_unshift($menuItems, [ + 'type' => 'link', + 'title' => lang('PodcastImport.queue.actions.retry'), + 'uri' => route_to('podcast-imports-task-action', $importTask->id, 'retry'), + ], ); + } + return '
' . '' . - '' . + '' . '
'; }, ],