From cc7e6196c5e60666ae4b7ed716b54b29d809b105 Mon Sep 17 00:00:00 2001 From: kapito Date: Wed, 27 Apr 2016 09:46:12 +0100 Subject: [PATCH] Fix keyboard shortcuts such as Ctrl+S giving unnecessary warning --- wagtail/wagtailadmin/static_src/wagtailadmin/js/core.js | 9 ++++++++- .../static_src/wagtailadmin/js/page-editor.js | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/wagtail/wagtailadmin/static_src/wagtailadmin/js/core.js b/wagtail/wagtailadmin/static_src/wagtailadmin/js/core.js index 4691fa859..9c87d2244 100644 --- a/wagtail/wagtailadmin/static_src/wagtailadmin/js/core.js +++ b/wagtail/wagtailadmin/static_src/wagtailadmin/js/core.js @@ -52,6 +52,9 @@ function initTagField(id, autocompleteUrl) { * - alwaysDirty - When set to true the form will always be considered dirty, * prompting the user even when nothing has been changed. */ + +var canDirtyFormCheck = true; + function enableDirtyFormCheck(formSelector, options) { var $form = $(formSelector); var $ignoredButtons = $form.find( @@ -72,7 +75,11 @@ function enableDirtyFormCheck(formSelector, options) { } }); - if (!triggeredByIgnoredButton && (alwaysDirty || $form.serialize() != initialData)) { + if (!canDirtyFormCheck) { + triggeredByIgnoredButton = true; + } + + if (canDirtyFormCheck && !triggeredByIgnoredButton && (alwaysDirty || $form.serialize() != initialData)) { event.returnValue = confirmationMessage; return confirmationMessage; } diff --git a/wagtail/wagtailadmin/static_src/wagtailadmin/js/page-editor.js b/wagtail/wagtailadmin/static_src/wagtailadmin/js/page-editor.js index 5ee29529b..79508d364 100644 --- a/wagtail/wagtailadmin/static_src/wagtailadmin/js/page-editor.js +++ b/wagtail/wagtailadmin/static_src/wagtailadmin/js/page-editor.js @@ -366,11 +366,13 @@ function initCollapsibleBlocks() { function initKeyboardShortcuts() { Mousetrap.bind(['mod+p'], function(e) { + canDirtyFormCheck = false; $('.action-preview').trigger('click'); return false; }); Mousetrap.bind(['mod+s'], function(e) { + canDirtyFormCheck = false; $('.action-save').trigger('click'); return false; });