From 80997d21e0aee9b8f27153000742ecd781f429f8 Mon Sep 17 00:00:00 2001 From: Michal Rezler Date: Sat, 26 Mar 2011 12:46:37 +0100 Subject: locktimer.js is jQueryfied --- lib/scripts/locktimer.js | 122 ++++++++++++++++++++++++++++------------------- 1 file changed, 72 insertions(+), 50 deletions(-) (limited to 'lib/scripts/locktimer.js') diff --git a/lib/scripts/locktimer.js b/lib/scripts/locktimer.js index f5ba1c60d..6681438d7 100644 --- a/lib/scripts/locktimer.js +++ b/lib/scripts/locktimer.js @@ -1,99 +1,121 @@ /** * Class managing the timer to display a warning on a expiring lock */ -var locktimer = { - sack: null, - timeout: 0, - timerID: null, - lasttime: null, - msg: '', - pageid: '', - init: function(timeout,msg,draft){ +// must be global variables, they are called from outside too +var initLocktimer, expWarning; + +(function ($) { + var reset, clear, refresh, refreshed; + + var locktimer = { + timeout: 0, + timerID: null, + lasttime: null, + msg: '', + pageid: '', + }; + + initLocktimer = 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($('#dw__editform').length == 0) return; + locktimer.pageid = $('#dw__editform input[name=id]').val(); + if(!locktimer.pageid) return; - if($('wiki__text').readOnly) 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; + if($('#wiki__text').attr('readonly')) return; // register refresh event - addEvent($('dw__editform'),'keypress',function(){locktimer.refresh();}); + $('#dw__editform').keypress( + function() { + refresh(); + } + ); + // start timer - locktimer.reset(); - }, + reset(); + }; /** * (Re)start the warning timer */ - reset: function(){ - locktimer.clear(); - locktimer.timerID = window.setTimeout("locktimer.warning()", locktimer.timeout); - }, + reset = function(){ + clear(); + locktimer.timerID = window.setTimeout("expWarning()", locktimer.timeout); + }; /** * Display the warning about the expiring lock */ - warning: function(){ - locktimer.clear(); + expWarning = function(){ + clear(); alert(locktimer.msg); - }, + }; /** * Remove the current warning timer */ - clear: function(){ + 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 */ - refresh: function(){ + refresh = function(){ + var now = new Date(); - // refresh every minute only + var params = {}; + + // refresh every minute only if(now.getTime() - locktimer.lasttime.getTime() > 30*1000){ - 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); + + params['call'] = 'lock'; + params['id'] = locktimer.pageid; + + if(locktimer.draft && $('#dw__editform textarea[name=wikitext]').length > 0){ + params['prefix'] = $('#dw__editform input[name=prefix]').val(); + params['wikitext'] = $('#dw__editform textarea[name=wikitext]').val(); + params['suffix'] = $('#dw__editform input[name=suffix]').val(); + + if($('#dw__editform input[name=date]').length > 0){ + params['date'] = $('#dw__editform input[name=id]').val(); } } - locktimer.sack.runAJAX(params); + + $.post( + DOKU_BASE + 'lib/exe/ajax.php', + params, + function (data) { + refreshed(data); + }, + 'html' + ); + locktimer.lasttime = now; } - }, + }; /** * Callback. Resets the warning timer */ - refreshed: function(){ - var data = this.response; + refreshed = function(data){ var error = data.charAt(0); - data = data.substring(1); - - $('draft__status').innerHTML=data; + data = data.substring(1); + + $('#draft__status').html(data); if(error != '1') return; // locking failed - locktimer.reset(); - } -}; - + reset(); + }; + +}(jQuery)); -- cgit v1.2.3 From 2ed49e2ac1bc9ed8a9d514d3ea9515e455768152 Mon Sep 17 00:00:00 2001 From: Michal Rezler Date: Mon, 28 Mar 2011 23:09:13 +0200 Subject: JS API is corrected to the original state --- lib/scripts/locktimer.js | 131 +++++++++++++++++++++-------------------------- 1 file changed, 58 insertions(+), 73 deletions(-) (limited to 'lib/scripts/locktimer.js') diff --git a/lib/scripts/locktimer.js b/lib/scripts/locktimer.js index 6681438d7..ad3e7ff62 100644 --- a/lib/scripts/locktimer.js +++ b/lib/scripts/locktimer.js @@ -1,121 +1,106 @@ /** - * Class managing the timer to display a warning on a expiring lock - */ - -// must be global variables, they are called from outside too -var initLocktimer, expWarning; - -(function ($) { - var reset, clear, refresh, refreshed; - - var locktimer = { - timeout: 0, - timerID: null, - lasttime: null, - msg: '', - pageid: '', - }; - - initLocktimer = function(timeout, msg, draft){ +* Class managing the timer to display a warning on a expiring lock +*/ +var locktimer = { + sack: null, + timeout: 0, + timerID: null, + lasttime: null, + msg: '', + pageid: '', + init: function(timeout,msg,draft){ // init values - locktimer.timeout = timeout*1000; - locktimer.msg = msg; - locktimer.draft = draft; - locktimer.lasttime = new Date(); + this.timeout = timeout*1000; + this.msg = msg; + this.draft = draft; + this.lasttime = new Date(); - if($('#dw__editform').length == 0) return; - locktimer.pageid = $('#dw__editform input[name=id]').val(); + if(jQuery('#dw__editform').length == 0) return; + this.pageid = jQuery('#dw__editform input[name=id]').val(); + if(!this.pageid) return; - if(!locktimer.pageid) return; - if($('#wiki__text').attr('readonly')) return; + if(jQuery('#wiki__text').attr('readonly')) return; // register refresh event - $('#dw__editform').keypress( + jQuery('#dw__editform').keypress( function() { - refresh(); + locktimer.refresh(); } ); - // start timer - reset(); - }; + this.reset(); + }, /** * (Re)start the warning timer */ - reset = function(){ - clear(); - locktimer.timerID = window.setTimeout("expWarning()", locktimer.timeout); - }; + reset: function(){ + this.clear(); + this.timerID = window.setTimeout("locktimer.warning()", this.timeout); + }, /** * Display the warning about the expiring lock */ - expWarning = function(){ - clear(); - alert(locktimer.msg); - }; + warning: function(){ + this.clear(); + alert(this.msg); + }, /** * Remove the current warning timer */ - clear = function(){ - if(locktimer.timerID !== null){ - window.clearTimeout(locktimer.timerID); - locktimer.timerID = null; + clear: function(){ + if(this.timerID !== null){ + window.clearTimeout(this.timerID); + this.timerID = null; } - }; + }, /** * Refresh the lock via AJAX * * Called on keypresses in the edit area */ - refresh = function(){ - + refresh: function(){ var now = new Date(); - var params = {}; - - // refresh every minute only - if(now.getTime() - locktimer.lasttime.getTime() > 30*1000){ - + var params = {}; + // refresh every minute only + if(now.getTime() - this.lasttime.getTime() > 30*1000){ params['call'] = 'lock'; params['id'] = locktimer.pageid; - - if(locktimer.draft && $('#dw__editform textarea[name=wikitext]').length > 0){ - params['prefix'] = $('#dw__editform input[name=prefix]').val(); - params['wikitext'] = $('#dw__editform textarea[name=wikitext]').val(); - params['suffix'] = $('#dw__editform input[name=suffix]').val(); - - if($('#dw__editform input[name=date]').length > 0){ - params['date'] = $('#dw__editform input[name=id]').val(); + + if(locktimer.draft && jQuery('#dw__editform textarea[name=wikitext]').length > 0){ + params['prefix'] = jQuery('#dw__editform input[name=prefix]').val(); + params['wikitext'] = jQuery('#dw__editform textarea[name=wikitext]').val(); + params['suffix'] = jQuery('#dw__editform input[name=suffix]').val(); + if(jQuery('#dw__editform input[name=date]').length > 0) { + params['date'] = jQuery('#dw__editform input[name=id]').val(); } } - $.post( + jQuery.post( DOKU_BASE + 'lib/exe/ajax.php', params, - function (data) { - refreshed(data); + function (data) { + locktimer.refreshed(data); }, 'html' ); - - locktimer.lasttime = now; + this.lasttime = now; } - }; + }, /** * Callback. Resets the warning timer */ - refreshed = function(data){ + refreshed: function(data){ var error = data.charAt(0); - data = data.substring(1); - - $('#draft__status').html(data); + data = data.substring(1); + + jQuery('#draft__status').html(data); if(error != '1') return; // locking failed - reset(); - }; - -}(jQuery)); + this.reset(); + } +}; \ No newline at end of file -- cgit v1.2.3 From 99e7bfd4c733d81cd01dd2d97e10bb4dda62df66 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Fri, 19 Aug 2011 11:35:58 +0200 Subject: jqueryized locktimer --- lib/scripts/locktimer.js | 72 +++++++++++++++++++++++------------------------- 1 file changed, 34 insertions(+), 38 deletions(-) (limited to 'lib/scripts/locktimer.js') diff --git a/lib/scripts/locktimer.js b/lib/scripts/locktimer.js index 60508a8e7..b83840557 100644 --- a/lib/scripts/locktimer.js +++ b/lib/scripts/locktimer.js @@ -1,64 +1,62 @@ /** -* Class managing the timer to display a warning on a expiring lock -*/ -var locktimer = { - sack: null, + * Class managing the timer to display a warning on a expiring lock + */ +var dw_locktimer = { timeout: 0, + draft: false, timerID: null, lasttime: null, msg: '', pageid: '', - init: function(timeout,msg,draft,edid){ - var edit = $(edid); - if(!edit) return; - if(edit.readOnly) return; + /** + * Initialize the lock timer + * + * @param int timeout Lenght of timeout in seconds + * @param bool draft save drafts + */ + init: function(timeout,draft){ //FIXME which elements to pass here? + var $edit = jQuery('#wiki__text'); + if(!$edit.length) return; + if($edit.attr('readonly')) return; // init values - this.timeout = timeout*1000; - this.msg = msg; - this.draft = draft; - this.lasttime = new Date(); + dw_locktimer.timeout = timeout*1000; + dw_locktimer.draft = draft; + dw_locktimer.lasttime = new Date(); - if(jQuery('#dw__editform').length == 0) return; - this.pageid = jQuery('#dw__editform input[name=id]').val(); - if(!this.pageid) return; - - if(jQuery('#wiki__text').attr('readonly')) return; + dw_locktimer.pageid = jQuery('#dw__editform input[name=id]').val(); + if(!dw_locktimer.pageid) return; // register refresh event - jQuery('#dw__editform').keypress( - function() { - locktimer.refresh(); - } - ); + jQuery('#wiki__text').keypress(dw_locktimer.refresh); // start timer - this.reset(); + dw_locktimer.reset(); }, /** * (Re)start the warning timer */ reset: function(){ - this.clear(); - this.timerID = window.setTimeout("locktimer.warning()", this.timeout); + dw_locktimer.clear(); + dw_locktimer.timerID = window.setTimeout(dw_locktimer.warning, dw_locktimer.timeout); }, /** * Display the warning about the expiring lock */ warning: function(){ - this.clear(); - alert(this.msg); + dw_locktimer.clear(); + alert(LANG.willexpire.replace(/\\n/,"\n")); }, /** * Remove the current warning timer */ clear: function(){ - if(this.timerID !== null){ - window.clearTimeout(this.timerID); - this.timerID = null; + if(dw_locktimer.timerID !== null){ + window.clearTimeout(dw_locktimer.timerID); + dw_locktimer.timerID = null; } }, @@ -71,11 +69,11 @@ var locktimer = { var now = new Date(); var params = {}; // refresh every minute only - if(now.getTime() - this.lasttime.getTime() > 30*1000){ + if(now.getTime() - dw_locktimer.lasttime.getTime() > 30*1000){ params['call'] = 'lock'; - params['id'] = locktimer.pageid; + params['id'] = dw_locktimer.pageid; - if(locktimer.draft && jQuery('#dw__editform textarea[name=wikitext]').length > 0){ + if(dw_locktimer.draft && jQuery('#dw__editform textarea[name=wikitext]').length > 0){ params['prefix'] = jQuery('#dw__editform input[name=prefix]').val(); params['wikitext'] = jQuery('#dw__editform textarea[name=wikitext]').val(); params['suffix'] = jQuery('#dw__editform input[name=suffix]').val(); @@ -87,12 +85,10 @@ var locktimer = { jQuery.post( DOKU_BASE + 'lib/exe/ajax.php', params, - function (data) { - locktimer.refreshed(data); - }, + dw_locktimer.refreshed, 'html' ); - this.lasttime = now; + dw_locktimer.lasttime = now; } }, @@ -105,6 +101,6 @@ var locktimer = { jQuery('#draft__status').html(data); if(error != '1') return; // locking failed - this.reset(); + dw_locktimer.reset(); } }; -- cgit v1.2.3 From cafc90889ce6f5ce7c4007147b2fee974d80401a Mon Sep 17 00:00:00 2001 From: Adrian Lang Date: Mon, 22 Aug 2011 13:16:33 +0200 Subject: JSLINT locktimer, fix date passing in draftsave Since 80997d21e0aee9b8f27153000742ecd781f429f8 the date passed to the draft save backend is indeed the page id, not the date. --- lib/scripts/locktimer.js | 56 ++++++++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 26 deletions(-) (limited to 'lib/scripts/locktimer.js') diff --git a/lib/scripts/locktimer.js b/lib/scripts/locktimer.js index b83840557..857002abf 100644 --- a/lib/scripts/locktimer.js +++ b/lib/scripts/locktimer.js @@ -17,8 +17,9 @@ var dw_locktimer = { */ init: function(timeout,draft){ //FIXME which elements to pass here? var $edit = jQuery('#wiki__text'); - if(!$edit.length) return; - if($edit.attr('readonly')) return; + if($edit.length === 0 || $edit.attr('readonly')) { + return; + } // init values dw_locktimer.timeout = timeout*1000; @@ -26,10 +27,12 @@ var dw_locktimer = { dw_locktimer.lasttime = new Date(); dw_locktimer.pageid = jQuery('#dw__editform input[name=id]').val(); - if(!dw_locktimer.pageid) return; + if(!dw_locktimer.pageid) { + return; + } // register refresh event - jQuery('#wiki__text').keypress(dw_locktimer.refresh); + $edit.keypress(dw_locktimer.refresh); // start timer dw_locktimer.reset(); }, @@ -66,30 +69,29 @@ var dw_locktimer = { * Called on keypresses in the edit area */ refresh: function(){ - var now = new Date(); - var params = {}; - // refresh every minute only - if(now.getTime() - dw_locktimer.lasttime.getTime() > 30*1000){ - params['call'] = 'lock'; - params['id'] = dw_locktimer.pageid; + var now = new Date(), + params = 'call=lock&id=' + dw_locktimer.pageid + '&'; - if(dw_locktimer.draft && jQuery('#dw__editform textarea[name=wikitext]').length > 0){ - params['prefix'] = jQuery('#dw__editform input[name=prefix]').val(); - params['wikitext'] = jQuery('#dw__editform textarea[name=wikitext]').val(); - params['suffix'] = jQuery('#dw__editform input[name=suffix]').val(); - if(jQuery('#dw__editform input[name=date]').length > 0) { - params['date'] = jQuery('#dw__editform input[name=id]').val(); - } - } + // refresh every minute only + if(now.getTime() - dw_locktimer.lasttime.getTime() <= 30*1000) { + return; + } - jQuery.post( - DOKU_BASE + 'lib/exe/ajax.php', - params, - dw_locktimer.refreshed, - 'html' - ); - dw_locktimer.lasttime = now; + // POST everything necessary for draft saving + if(dw_locktimer.draft && jQuery('#dw__editform textarea[name=wikitext]').length > 0){ + params += jQuery('#dw__editform').find('input[name=prefix], ' + + 'textarea[name=wikitext], ' + + 'input[name=suffix], ' + + 'input[name=date]').serialize(); } + + jQuery.post( + DOKU_BASE + 'lib/exe/ajax.php', + params, + dw_locktimer.refreshed, + 'html' + ); + dw_locktimer.lasttime = now; }, /** @@ -100,7 +102,9 @@ var dw_locktimer = { data = data.substring(1); jQuery('#draft__status').html(data); - if(error != '1') return; // locking failed + if(error != '1') { + return; // locking failed + } dw_locktimer.reset(); } }; -- cgit v1.2.3 From 7827dd2afcb37599610894016f2e1e6150e561b7 Mon Sep 17 00:00:00 2001 From: Adrian Lang Date: Fri, 16 Sep 2011 12:27:43 +0200 Subject: Increase locktimer compatibility --- lib/scripts/locktimer.js | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'lib/scripts/locktimer.js') diff --git a/lib/scripts/locktimer.js b/lib/scripts/locktimer.js index 857002abf..96f963c08 100644 --- a/lib/scripts/locktimer.js +++ b/lib/scripts/locktimer.js @@ -6,17 +6,33 @@ var dw_locktimer = { draft: false, timerID: null, lasttime: null, - msg: '', + msg: LANG.willexpire, pageid: '', /** * Initialize the lock timer * - * @param int timeout Lenght of timeout in seconds - * @param bool draft save drafts + * @param int timeout Length of timeout in seconds + * @param string msg Deprecated; The expiry message + * @param bool draft Whether to save drafts + * @param string edid Optional; ID of an edit object which has to be present */ - init: function(timeout,draft){ //FIXME which elements to pass here? - var $edit = jQuery('#wiki__text'); + init: function(timeout,msg,draft,edid){ + var $edit; + + switch (arguments.length) { + case 4: + DEPRECATED('Setting the locktimer expiry message is deprecated'); + dw_locktimer.msg = msg; + break; + case 3: + edid = draft; + case 2: + draft = msg; + } + edid = edid || 'wiki__text'; + + $edit = jQuery('#' + edid); if($edit.length === 0 || $edit.attr('readonly')) { return; } @@ -50,7 +66,7 @@ var dw_locktimer = { */ warning: function(){ dw_locktimer.clear(); - alert(LANG.willexpire.replace(/\\n/,"\n")); + alert(fixtxt(dw_locktimer.msg)); }, /** -- cgit v1.2.3