diff options
author | Anika Henke <anika@selfthinker.org> | 2010-06-27 12:41:51 +0100 |
---|---|---|
committer | Anika Henke <anika@selfthinker.org> | 2010-06-27 12:41:51 +0100 |
commit | 4691241902c0cfa175d06bb454e9147e25b9b21a (patch) | |
tree | 8de76d065cd745b5ea4b79ee4e4e234d57fc083d /lib/scripts/edit.js | |
parent | a8574918a3bd65683f0a2de4a3f26dd0ec2c410f (diff) | |
parent | de3427dbc88f1a060e6557d79da3a9bafb9a6039 (diff) | |
download | rpg-4691241902c0cfa175d06bb454e9147e25b9b21a.tar.gz rpg-4691241902c0cfa175d06bb454e9147e25b9b21a.tar.bz2 |
Merge branch 'master' of github.com:splitbrain/dokuwiki
Diffstat (limited to 'lib/scripts/edit.js')
-rw-r--r-- | lib/scripts/edit.js | 59 |
1 files changed, 23 insertions, 36 deletions
diff --git a/lib/scripts/edit.js b/lib/scripts/edit.js index e66154f83..5178dba4c 100644 --- a/lib/scripts/edit.js +++ b/lib/scripts/edit.js @@ -258,35 +258,30 @@ function currentHeadlineLevel(textboxId){ var textChanged = false; /** - * Check for changes before leaving the page + * Delete the draft before leaving the page */ -function changeCheck(){ - if(textChanged){ - var ok = confirm(LANG.notsavedyet); - if(ok){ - // remove a possibly saved draft using ajax - var dwform = $('dw__editform'); - if(dwform){ - var params = 'call=draftdel'; - params += '&id='+encodeURIComponent(dwform.elements.id.value); - - var sackobj = new sack(DOKU_BASE + 'lib/exe/ajax.php'); - sackobj.AjaxFailedAlert = ''; - sackobj.encodeURIString = false; - sackobj.runAJAX(params); - // we send this request blind without waiting for - // and handling the returned data - } +function deleteDraft() { + if (is_opera) return; + + // remove a possibly saved draft using ajax + var dwform = $('dw__editform'); + if(dwform){ + var params = 'call=draftdel'; + params += '&id='+encodeURIComponent(dwform.elements.id.value); + + var sackobj = new sack(DOKU_BASE + 'lib/exe/ajax.php'); + // this needs to be synchronous and GET to not be aborted upon page unload + sackobj.asynchronous = false; + sackobj.method = 'GET'; + sackobj.AjaxFailedAlert = ''; + sackobj.encodeURIString = false; + sackobj.runAJAX(params); } - return ok; - }else{ - return true; - } } /** - * Add changeCheck to all Links and Forms (except those with a - * JSnocheck class), add handlers to monitor changes + * Activate "not saved" dialog, add draft deletion to page unload, + * add handlers to monitor changes * * Sets focus to the editbox as well */ @@ -309,20 +304,12 @@ addInitEvent(function (){ 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){ - 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){ - addEvent(forms[i], 'submit', changeCheck); + window.onbeforeunload = function(){ + if(textChanged) { + return LANG.notsavedyet; } } + window.onunload = deleteDraft; // reset change memory var on submit addEvent($('edbtn__save'), 'click', function(){ textChanged = false; }); |