From 26ee1edf9c1750df399baebcb70afb49778b4a92 Mon Sep 17 00:00:00 2001 From: Adrian Lang Date: Thu, 25 Mar 2010 15:01:25 +0100 Subject: Rewrite JavaScript change check --- lib/scripts/edit.js | 59 +++++++++++++++++++++++------------------------------ 1 file changed, 26 insertions(+), 33 deletions(-) (limited to 'lib/scripts') diff --git a/lib/scripts/edit.js b/lib/scripts/edit.js index b756e9488..eeca27353 100644 --- a/lib/scripts/edit.js +++ b/lib/scripts/edit.js @@ -260,9 +260,9 @@ var textChanged = false; /** * Check for changes before leaving the page */ -function changeCheck(msg){ +function changeCheck(){ if(textChanged){ - var ok = confirm(msg); + var ok = confirm(LANG.notsavedyet); if(ok){ // remove a possibly saved draft using ajax var dwform = $('dw__editform'); @@ -289,57 +289,50 @@ function changeCheck(msg){ * JSnocheck class), add handlers to monitor changes * * Sets focus to the editbox as well - * - * @fixme this is old and crappy code. needs to be redone */ -function initChangeCheck(msg){ - var edit_text = document.getElementById('wiki__text'); - if(!edit_text) return; - if(edit_text.readOnly) return; - if(!$('dw__editform')) return; +addInitEvent(function (){ + var editform = $('dw__editform'); + if (!editform) return; + + var edit_text = $('wiki__text'); + if(edit_text) { + if(edit_text.readOnly) return; + + // set focus + edit_text.focus(); + } + + var checkfunc = function(){ + textChanged = true; //global var + summaryCheck(); + }; + addEvent(editform, 'change', checkfunc); + addEvent(editform, 'keydown', checkfunc); // add change check for links var links = document.getElementsByTagName('a'); for(var i=0; i < links.length; i++){ if(links[i].className.indexOf('JSnocheck') == -1){ - links[i].onclick = function(){ - var rc = changeCheck(msg); - if(window.event) window.event.returnValue = rc; - return rc; - }; + addEvent(links[i], 'click', changeCheck); } } // add change check for forms var forms = document.forms; for(i=0; i < forms.length; i++){ if(forms[i].className.indexOf('JSnocheck') == -1){ - forms[i].onsubmit = function(){ - var rc = changeCheck(msg); - if(window.event) window.event.returnValue = rc; - return rc; - }; + addEvent(forms[i], 'submit', changeCheck); } } // reset change memory var on submit - var btn_save = document.getElementById('edbtn__save'); - btn_save.onclick = function(){ textChanged = false; }; - var btn_prev = document.getElementById('edbtn__preview'); - btn_prev.onclick = function(){ textChanged = false; }; + addEvent($('edbtn__save'), 'click', function(){ textChanged = false; }); + addEvent($('edbtn__preview'), 'click', function(){ textChanged = false; }); - // add change memory setter - edit_text.onchange = function(){ - textChanged = true; //global var - summaryCheck(); - }; - var summary = document.getElementById('edit__summary'); + var summary = $('edit__summary'); addEvent(summary, 'change', summaryCheck); addEvent(summary, 'keyup', summaryCheck); if (textChanged) summaryCheck(); - - // set focus - edit_text.focus(); -} +}); /** * Checks if a summary was entered - if not the style is changed -- cgit v1.2.3