Advertisement
Guest User

Untitled

a guest
Jun 28th, 2016
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.66 KB | None | 0 0
  1. {% overextends "wagtailadmin/pages/edit.html" %}
  2. {% load i18n %}
  3. {% load wagtailadmin_tags %}
  4.  
  5. {# Put this in core/templateswagtailadmin/pages/edit.html. Assumes overextends. #}
  6.  
  7. {% block extra_js %}
  8. {% include "wagtailadmin/pages/_editor_js.html" %}
  9.  
  10. <script>
  11. (function($, window, document) {
  12.  
  13. window.lastClickedIgnoredTrigger = false;
  14.  
  15. function enableDirtyFormCheck(formSelector, options) {
  16. var defaultSelector = 'input[type="submit"], button[type="submit"]';
  17. var ignoredButtonsSelector = options.ignoredButtonsSelector ? options.ignoredButtonsSelector : defaultSelector;
  18.  
  19. var $form = $(formSelector);
  20. var $ignoredButtons = $form.find(ignoredButtonsSelector);
  21.  
  22. var confirmationMessage = options.confirmationMessage || ' ';
  23. var alwaysDirty = options.alwaysDirty || false;
  24. var initialData = $form.serialize();
  25.  
  26. $ignoredButtons.each(function(index) {
  27. var $el = $(this);
  28.  
  29. $el.on('click', function(e) {
  30. window.lastClickedIgnoredTrigger = this;
  31. })
  32. });
  33.  
  34. window.addEventListener('beforeunload', function(event) {
  35. // Ignore if the user clicked on an ignored element
  36. var triggeredByIgnoredButton = false;
  37. var $trigger = $(event.explicitOriginalTarget || document.activeElement);
  38.  
  39. $ignoredButtons.each(function() {
  40. if ($(this).is($trigger) || this === window.lastClickedIgnoredTrigger) {
  41. triggeredByIgnoredButton = true;
  42. }
  43. });
  44.  
  45. if (dirtyFormCheckIsActive && !triggeredByIgnoredButton && (alwaysDirty || $form.serialize() != initialData)) {
  46. event.returnValue = confirmationMessage;
  47. return confirmationMessage;
  48. }
  49. });
  50. }
  51.  
  52. $(function() {
  53. /* Make user confirm before leaving the editor if there are unsaved changes */
  54. {% trans "This page has unsaved changes." as confirmation_message %}
  55. enableDirtyFormCheck(
  56. '#page-edit-form',
  57. {
  58. confirmationMessage: '{{ confirmation_message|escapejs }}',
  59. {% if form.errors %}
  60. alwaysDirty: true,
  61. {% endif %}
  62. }
  63. );
  64. });
  65. })($, window, document);
  66. </script>
  67. {% endblock %}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement