aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorFinn Schneider <schneider@data-quest.de>2025-11-21 15:01:02 +0000
committerRasmus Fuhse <fuhse@data-quest.de>2025-11-21 15:01:02 +0000
commit5d3dd250101b48a61deda6e8eae572b8f3f8e806 (patch)
treebe2a5048322b9dc5ed2cc58286cd8aea7fa910af /app
parent053e800928c5d69d565b08d3b87ec25ff9ec6408 (diff)
Resolve "Wiki: Aktionen zum z.B. Löschen von Seiten werden nicht angeboten"
Closes #5688 Merge request studip/studip!4521
Diffstat (limited to 'app')
-rw-r--r--app/controllers/course/wiki.php32
-rw-r--r--app/views/course/wiki/allpages.php7
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>