From 55f92d7e8cfe32e4040ebcd55612ad3dec244640 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 6 Feb 2011 10:03:34 +0100 Subject: moved locktimer class to its own file I also adjusted the coding style to match our other JS classes --- lib/scripts/edit.js | 101 ---------------------------------------------------- 1 file changed, 101 deletions(-) (limited to 'lib/scripts/edit.js') diff --git a/lib/scripts/edit.js b/lib/scripts/edit.js index 01262bcef..3276c9e06 100644 --- a/lib/scripts/edit.js +++ b/lib/scripts/edit.js @@ -341,104 +341,3 @@ function summaryCheck(){ } } - -/** - * Class managing the timer to display a warning on a expiring lock - */ -function locktimer_class(){ - this.sack = null; - this.timeout = 0; - this.timerID = null; - this.lasttime = null; - this.msg = ''; - this.pageid = ''; -}; -var locktimer = new locktimer_class(); - locktimer.init = function(timeout,msg,draft){ - // init values - locktimer.timeout = timeout*1000; - locktimer.msg = msg; - locktimer.draft = draft; - locktimer.lasttime = new Date(); - - if(!$('dw__editform')) return; - locktimer.pageid = $('dw__editform').elements.id.value; - if(!locktimer.pageid) return; - - // init ajax component - locktimer.sack = new sack(DOKU_BASE + 'lib/exe/ajax.php'); - locktimer.sack.AjaxFailedAlert = ''; - locktimer.sack.encodeURIString = false; - locktimer.sack.onCompletion = locktimer.refreshed; - - // register refresh event - addEvent($('dw__editform'),'keypress',function(){locktimer.refresh();}); - // start timer - locktimer.reset(); - }; - - /** - * (Re)start the warning timer - */ - locktimer.reset = function(){ - locktimer.clear(); - locktimer.timerID = window.setTimeout("locktimer.warning()", locktimer.timeout); - }; - - /** - * Display the warning about the expiring lock - */ - locktimer.warning = function(){ - locktimer.clear(); - alert(locktimer.msg); - }; - - /** - * Remove the current warning timer - */ - locktimer.clear = function(){ - if(locktimer.timerID !== null){ - window.clearTimeout(locktimer.timerID); - locktimer.timerID = null; - } - }; - - /** - * Refresh the lock via AJAX - * - * Called on keypresses in the edit area - */ - locktimer.refresh = function(){ - var now = new Date(); - // refresh every minute only - if(now.getTime() - locktimer.lasttime.getTime() > 30*1000){ //FIXME decide on time - var params = 'call=lock&id='+encodeURIComponent(locktimer.pageid); - var dwform = $('dw__editform'); - if(locktimer.draft && dwform.elements.wikitext){ - params += '&prefix='+encodeURIComponent(dwform.elements.prefix.value); - params += '&wikitext='+encodeURIComponent(dwform.elements.wikitext.value); - params += '&suffix='+encodeURIComponent(dwform.elements.suffix.value); - if(dwform.elements.date){ - params += '&date='+encodeURIComponent(dwform.elements.date.value); - } - } - locktimer.sack.runAJAX(params); - locktimer.lasttime = now; - } - }; - - - /** - * Callback. Resets the warning timer - */ - locktimer.refreshed = function(){ - var data = this.response; - var error = data.charAt(0); - data = data.substring(1); - - $('draft__status').innerHTML=data; - if(error != '1') return; // locking failed - locktimer.reset(); - }; -// end of locktimer class functions - -- cgit v1.2.3 From bf14d727a44e746ad142636acbb19f59fb075b13 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 6 Feb 2011 10:42:28 +0100 Subject: keep drafts on preview FS#2116 --- lib/scripts/edit.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'lib/scripts/edit.js') diff --git a/lib/scripts/edit.js b/lib/scripts/edit.js index 3276c9e06..45c1fb111 100644 --- a/lib/scripts/edit.js +++ b/lib/scripts/edit.js @@ -268,6 +268,7 @@ var textChanged = false; */ function deleteDraft() { if (is_opera) return; + if (window.keepDraft) return; // remove a possibly saved draft using ajax var dwform = $('dw__editform'); @@ -318,8 +319,13 @@ addInitEvent(function (){ window.onunload = deleteDraft; // reset change memory var on submit - addEvent($('edbtn__save'), 'click', function(){ textChanged = false; }); - addEvent($('edbtn__preview'), 'click', function(){ textChanged = false; }); + addEvent($('edbtn__save'), 'click', function(){ + textChanged = false; + }); + addEvent($('edbtn__preview'), 'click', function(){ + textChanged = false; + window.keepDraft = true; // needed to keep draft on page unload + }); var summary = $('edit__summary'); addEvent(summary, 'change', summaryCheck); -- cgit v1.2.3 From 02097e2a6cbd4191438781890d484326aa60af19 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Sun, 17 Apr 2011 09:09:10 +0200 Subject: attach textChanged property to window attempt to fix FS#2196 --- lib/scripts/edit.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'lib/scripts/edit.js') diff --git a/lib/scripts/edit.js b/lib/scripts/edit.js index 45c1fb111..eaa3030e9 100644 --- a/lib/scripts/edit.js +++ b/lib/scripts/edit.js @@ -261,7 +261,7 @@ function currentHeadlineLevel(textboxId){ /** * global var used for not saved yet warning */ -var textChanged = false; +window.textChanged = false; /** * Delete the draft before leaving the page @@ -305,14 +305,14 @@ addInitEvent(function (){ } var checkfunc = function(){ - textChanged = true; //global var + window.textChanged = true; //global var summaryCheck(); }; addEvent(editform, 'change', checkfunc); addEvent(editform, 'keydown', checkfunc); window.onbeforeunload = function(){ - if(textChanged) { + if(window.textChanged) { return LANG.notsavedyet; } }; @@ -320,17 +320,17 @@ addInitEvent(function (){ // reset change memory var on submit addEvent($('edbtn__save'), 'click', function(){ - textChanged = false; + window.textChanged = false; }); addEvent($('edbtn__preview'), 'click', function(){ - textChanged = false; + window.textChanged = false; window.keepDraft = true; // needed to keep draft on page unload }); var summary = $('edit__summary'); addEvent(summary, 'change', summaryCheck); addEvent(summary, 'keyup', summaryCheck); - if (textChanged) summaryCheck(); + if (window.textChanged) summaryCheck(); }); /** -- cgit v1.2.3 From 7d643c17962849f1c9953b0936b37e8d2175a9d6 Mon Sep 17 00:00:00 2001 From: Guy Brand Date: Sun, 17 Apr 2011 16:04:10 +0200 Subject: Trap onbeforeunload when event fired (attempt to fix FS#2196) --- lib/scripts/edit.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lib/scripts/edit.js') diff --git a/lib/scripts/edit.js b/lib/scripts/edit.js index eaa3030e9..e8a59deb9 100644 --- a/lib/scripts/edit.js +++ b/lib/scripts/edit.js @@ -320,9 +320,11 @@ addInitEvent(function (){ // reset change memory var on submit addEvent($('edbtn__save'), 'click', function(){ + window.onbeforeunload = ''; window.textChanged = false; }); addEvent($('edbtn__preview'), 'click', function(){ + window.onbeforeunload = ''; window.textChanged = false; window.keepDraft = true; // needed to keep draft on page unload }); -- cgit v1.2.3