diff options
| author | Finn Schneider <schneider@data-quest.de> | 2025-11-21 15:01:02 +0000 |
|---|---|---|
| committer | Rasmus Fuhse <fuhse@data-quest.de> | 2025-11-21 15:01:02 +0000 |
| commit | 5d3dd250101b48a61deda6e8eae572b8f3f8e806 (patch) | |
| tree | be2a5048322b9dc5ed2cc58286cd8aea7fa910af | |
| parent | 053e800928c5d69d565b08d3b87ec25ff9ec6408 (diff) | |
Resolve "Wiki: Aktionen zum z.B. Löschen von Seiten werden nicht angeboten"
Closes #5688
Merge request studip/studip!4521
| -rw-r--r-- | app/controllers/course/wiki.php | 32 | ||||
| -rw-r--r-- | 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 @@ <tfoot> <tr> <td colspan="6"> - <select name="action" id="bulk_action" aria-label="<?= _('Aktion auswählen') ?>" required> + <select name="action" id="bulk_action" aria-label="<?= _('Aktion auswählen') ?>" required + onchange="$('#bulk_button').attr('data-confirm', + this.value === 'delete_pages' ? '<?= _('Wollen Sie Ihre Auswahl wirklich löschen?') ?>' : null)"> <option value="">- <?= _('Aktion auswählen') ?></option> <option value="page_setting"><?= _('Seiteneinstellungen') ?></option> + <option value="delete_pages"><?= _('Löschen') ?></option> </select> - <?= \Studip\Button::create(_('Ausführen'), 'render_form') ?> + <?= \Studip\Button::create(_('Ausführen'), 'render_form', ['id' => 'bulk_button']) ?> </td> </tr> </tfoot> |
