From 9e647bb126f1c5b73584ee9a9c2b92d481f49c6d Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Thu, 29 Aug 2024 07:20:00 +0000
Subject: [PATCH] disable security handler when regularly saving a wiki page,
 fixes #4543

Closes #4543

Merge request studip/studip!3338
---
 resources/vue/components/WikiEditor.vue | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/resources/vue/components/WikiEditor.vue b/resources/vue/components/WikiEditor.vue
index 52290cde2d9..069b2ff750d 100644
--- a/resources/vue/components/WikiEditor.vue
+++ b/resources/vue/components/WikiEditor.vue
@@ -23,7 +23,10 @@
             </div>
 
             <div data-dialog-button="">
-                <button class="button" :title="isChanged ? $gettext('Den aktuellen Stand speichern.') : $gettext('Der aktuelle Stand wurde bereits gespeichert.')">
+                <button class="button"
+                        :title="isChanged ? $gettext('Den aktuellen Stand speichern.') : $gettext('Der aktuelle Stand wurde bereits gespeichert.')"
+                        @click="toggleSecurityHandler(false)"
+                >
                     {{ $gettext('Speichern') }}
                 </button>
                 <a :href="cancelUrl" class="button">
@@ -189,6 +192,13 @@ export default {
 
             return data;
         },
+        toggleSecurityHandler(state = true) {
+            if (state) {
+                window.addEventListener('beforeunload', this.securityHandler);
+            } else {
+                window.removeEventListener('beforeunload', this.securityHandler);
+            }
+        },
         securityHandler(event) {
             event.preventDefault();
 
@@ -233,11 +243,7 @@ export default {
     },
     watch: {
         isChanged(current) {
-            if (current) {
-                window.addEventListener('beforeunload', this.securityHandler);
-            } else {
-                window.removeEventListener('beforeunload', this.securityHandler);
-            }
+            this.toggleSecurityHandler(current);
         }
     }
 }
-- 
GitLab