From 967c8f641cac19dd0aabdad61bc69bcd71e2f326 Mon Sep 17 00:00:00 2001 From: Chirayu Chiripal Date: Sat, 14 Jun 2014 11:39:04 +0530 Subject: [PATCH] fix: reset form button not resetting lock Signed-off-by: Chirayu Chiripal --- js/ajax.js | 55 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 15 deletions(-) diff --git a/js/ajax.js b/js/ajax.js index 11d7b1bbe1..cb41d2ed6d 100644 --- a/js/ajax.js +++ b/js/ajax.js @@ -165,6 +165,15 @@ var AJAX = { $('#lock_page_icon').html(''); } }, + /** + * resets the lock + * + * @return void + */ + resetLock: function() { + AJAX.lockedTargets = {}; + $('#lock_page_icon').html(''); + }, /** * Event handler for clicks on links and form submissions * @@ -183,7 +192,7 @@ var AJAX = { return true; } else if ($(this).hasClass('ajax') || $(this).hasClass('disableAjax')) { //reset the lockedTargets object, as specified AJAX operation has finished - AJAX.lockedTargets = {}; + AJAX.resetLock(); return true; } else if (href && href.match(/^#/)) { return true; @@ -211,9 +220,7 @@ var AJAX = { ) { return false; } - //reset - AJAX.lockedTargets = {}; - $('#lock_page_icon').html(''); + AJAX.resetLock(); if (AJAX.active === true) { // Cancel the old request if abortable, when the user requests @@ -560,6 +567,35 @@ AJAX.registerOnload('functions.js', function () { $(this).data('onsubmit', this.onsubmit).attr('onsubmit', ''); } }); + /** + * Attach event listener to events when user modify visible + * Input or Textarea fields to make changes in forms + */ + $('#page_content').on( + 'keyup change', + 'form.lock-page textarea, ' + + 'form.lock-page input[type="text"]', + AJAX.lockPageHandler + ); + /** + * Reset lock when lock-page form reset event is fired + * Note: reset does not bubble in all browser so attach to + * form directly. + */ + $('form.lock-page').on('reset', function(event){ + AJAX.resetLock(); + }); +}); + +/** + * Unbind all event handlers before tearing down a page + */ +AJAX.registerTeardown('functions.js', function () { + $('#page_content').off('keyup change', + 'form.lock-page textarea, ' + + 'form.lock-page input[type="text"]' + ); + $('form.lock-page').off('reset'); }); /** @@ -922,17 +958,6 @@ $(function () { $('a').live('click', AJAX.requestHandler); $('form').live('submit', AJAX.requestHandler); -/** - * Attach event listener to events when user modify visible - * Input or Textarea fields to make changes in forms - */ -$(document).on( - 'keyup change', - '#page_content form.lock-page textarea, ' + - '#page_content form.lock-page input[type="text"]', - AJAX.lockPageHandler -); - /** * Gracefully handle fatal server errors * (e.g: 500 - Internal server error)