Improved: Editor should confirm user before leaving the page (ROL-2136)
Added custom code to add confimation box for text area which adds an event handler to beforeunload event if the text area is changed.
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/EntryEditor.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/EntryEditor.jsp
index 05548ce..66e773e 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/EntryEditor.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/EntryEditor.jsp
@@ -124,6 +124,22 @@
             textAreaElement.focus();
         }
     }
+    // Added event listener to confirm once the editor content is changed
+    jQuery("#edit_content").one("change", function() {
+        var confirmFunction = function(event) {
+            // Chrome requires returnValue to be set and original event is found as originalEvent
+            // see https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload#Example
+            if (event.originalEvent)
+                event.originalEvent.returnValue = "Are you sure you want to leave?";
+            return "Are you sure you want to leave?";
+        }
+        jQuery(window).on("beforeunload", confirmFunction);
+
+        // Remove it if it is form submit
+        $(this.form).on('submit', function() {
+            jQuery(window).off("beforeunload", confirmFunction);
+        });
+    });
 
     </s:if>
     <s:else>
@@ -146,6 +162,22 @@
                 height: 400
             }
         );
+        // Added event listener to confirm once the editor content is changed
+        $('#edit_content').on('summernote.change', function(we, contents, $editable) {
+            var confirmFunction = function(event) {
+                // Chrome requires returnValue to be set and original event is found as originalEvent
+                // see https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload#Example
+                if (event.originalEvent)
+                    event.originalEvent.returnValue = "Are you sure you want to leave?";
+                return "Are you sure you want to leave?";
+            }
+            jQuery(window).on("beforeunload", confirmFunction);
+
+            // Remove it if it is form submit
+            $(this.form).on('submit', function() {
+                jQuery(window).off("beforeunload", confirmFunction);
+            });
+        });
     });
 
     function insertMediaFile(toInsert) {