diff --git a/contao/templates/frontend/member_events.html.twig b/contao/templates/frontend/member_events.html.twig index 4a8e264..8f74a44 100644 --- a/contao/templates/frontend/member_events.html.twig +++ b/contao/templates/frontend/member_events.html.twig @@ -28,14 +28,14 @@ Bearbeiten {% endif %} -
+
-
+ @@ -56,6 +56,8 @@
{% endif %} + +

Vergangene Veranstaltungen

{% if pastEvents is empty %}

Keine vergangenen Veranstaltungen gefunden.

@@ -83,14 +85,14 @@ Bearbeiten {% endif %} -
+
-
+ diff --git a/public/assets/member-events-confirm.js b/public/assets/member-events-confirm.js new file mode 100644 index 0000000..d974bc7 --- /dev/null +++ b/public/assets/member-events-confirm.js @@ -0,0 +1,28 @@ +(function () { + var decodeHtmlEntities = function (value) { + var textarea = document.createElement('textarea'); + textarea.innerHTML = String(value || ''); + + return textarea.value; + }; + + var handleSubmit = function (event) { + var target = event.target; + + if (!(target instanceof HTMLFormElement)) { + return; + } + + var message = decodeHtmlEntities(target.getAttribute('data-confirm-message') || ''); + + if (!message) { + return; + } + + if (!window.confirm(message)) { + event.preventDefault(); + } + }; + + document.addEventListener('submit', handleSubmit, true); +})(); diff --git a/src/Controller/Frontend/MemberEventsController.php b/src/Controller/Frontend/MemberEventsController.php index ca48444..9c70921 100644 --- a/src/Controller/Frontend/MemberEventsController.php +++ b/src/Controller/Frontend/MemberEventsController.php @@ -65,7 +65,14 @@ class MemberEventsController extends AbstractFrontendModuleController if ('toggle_published' === $action) { $this->eventRepository->togglePublished($eventId); } elseif ('duplicate' === $action) { - $this->eventRepository->duplicate($eventId); + $newEventId = $this->eventRepository->duplicate($eventId); + + if ($newEventId > 0 && $editPage instanceof PageModel) { + return new RedirectResponse($this->generateContentUrl($editPage, [ + 'event' => (string) $newEventId, + 'ref' => base64_encode($backUrl), + ])); + } } elseif ('delete' === $action) { $this->eventRepository->delete($eventId); } diff --git a/src/Service/EventRepository.php b/src/Service/EventRepository.php index 01bbb7c..02dcfcc 100644 --- a/src/Service/EventRepository.php +++ b/src/Service/EventRepository.php @@ -84,7 +84,8 @@ class EventRepository unset($row['id']); if (array_key_exists('title', $row)) { - $row['title'] = trim((string) $row['title'].' (Kopie)'); + $normalizedTitle = html_entity_decode((string) $row['title'], ENT_QUOTES | ENT_HTML5, 'UTF-8'); + $row['title'] = trim($normalizedTitle.' (Kopie)'); } if (array_key_exists('alias', $row)) {