From 5d3dd250101b48a61deda6e8eae572b8f3f8e806 Mon Sep 17 00:00:00 2001 From: Finn Schneider Date: Fri, 21 Nov 2025 15:01:02 +0000 Subject: =?UTF-8?q?Resolve=20"Wiki:=20Aktionen=20zum=20z.B.=20L=C3=B6schen?= =?UTF-8?q?=20von=20Seiten=20werden=20nicht=20angeboten"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #5688 Merge request studip/studip!4521 --- app/controllers/course/wiki.php | 32 ++++++++++++++++++++++++++++++++ app/views/course/wiki/allpages.php | 7 +++++-- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/app/controllers/course/wiki.php b/app/controllers/course/wiki.php index e479868..5baa933 100644 --- a/app/controllers/course/wiki.php +++ b/app/controllers/course/wiki.php @@ -384,6 +384,38 @@ class Course_WikiController extends AuthenticatedController } break; + case 'delete_pages': + CSRFProtection::verifyUnsafeRequest(); + + $success_pages = []; + $error_pages = []; + WikiPage::findEachMany( + function (WikiPage $page) use (&$success_pages, &$error_pages) { + if ($page->isDeletable()) { + $name = $page->name; + $success = $page->delete(); + if ($success) { + $success_pages[] = $name; + } else { + $error_pages[] = $name; + } + } + }, + Request::intArray('pages_id') + ); + + if (count($success_pages) > 0) { + PageLayout::postSuccess(_('Seite(n) erfolgreich gelöscht')); + } + if (count($error_pages) > 0) { + PageLayout::postError( + _('Fehler beim Löschen von Seite(n): '), + array_map('htmlReady', $error_pages) + ); + } + + $this->relocate('course/wiki/allpages'); + break; default: $this->relocate('course/wiki/allpages'); } diff --git a/app/views/course/wiki/allpages.php b/app/views/course/wiki/allpages.php index 0797e8c..6a477b8 100644 --- a/app/views/course/wiki/allpages.php +++ b/app/views/course/wiki/allpages.php @@ -67,11 +67,14 @@ - + - + 'bulk_button']) ?> -- cgit v1.0