source: documentation/trunk/packages/dokuwiki-2011-05-25a/lib/scripts/locktimer.js@ 25027

Last change on this file since 25027 was 25027, checked in by jmt12, 12 years ago

Adding the packages directory, and within it a configured version of dokuwiki all ready to run

File size: 2.9 KB
Line 
1/**
2 * Class managing the timer to display a warning on a expiring lock
3 */
4var locktimer = {
5 sack: null,
6 timeout: 0,
7 timerID: null,
8 lasttime: null,
9 msg: '',
10 pageid: '',
11
12 init: function(timeout,msg,draft,edid){
13 var edit = $(edid);
14 if(!edit) return;
15 if(edit.readOnly) return;
16
17 // init values
18 locktimer.timeout = timeout*1000;
19 locktimer.msg = msg;
20 locktimer.draft = draft;
21 locktimer.lasttime = new Date();
22
23 if(!$('dw__editform')) return;
24 locktimer.pageid = $('dw__editform').elements.id.value;
25 if(!locktimer.pageid) return;
26
27 // init ajax component
28 locktimer.sack = new sack(DOKU_BASE + 'lib/exe/ajax.php');
29 locktimer.sack.AjaxFailedAlert = '';
30 locktimer.sack.encodeURIString = false;
31 locktimer.sack.onCompletion = locktimer.refreshed;
32
33 // register refresh event
34 addEvent($('dw__editform'),'keypress',function(){locktimer.refresh();});
35 // start timer
36 locktimer.reset();
37 },
38
39 /**
40 * (Re)start the warning timer
41 */
42 reset: function(){
43 locktimer.clear();
44 locktimer.timerID = window.setTimeout("locktimer.warning()", locktimer.timeout);
45 },
46
47 /**
48 * Display the warning about the expiring lock
49 */
50 warning: function(){
51 locktimer.clear();
52 alert(locktimer.msg);
53 },
54
55 /**
56 * Remove the current warning timer
57 */
58 clear: function(){
59 if(locktimer.timerID !== null){
60 window.clearTimeout(locktimer.timerID);
61 locktimer.timerID = null;
62 }
63 },
64
65 /**
66 * Refresh the lock via AJAX
67 *
68 * Called on keypresses in the edit area
69 */
70 refresh: function(){
71 var now = new Date();
72 // refresh every minute only
73 if(now.getTime() - locktimer.lasttime.getTime() > 30*1000){
74 var params = 'call=lock&id='+encodeURIComponent(locktimer.pageid);
75 var dwform = $('dw__editform');
76 if(locktimer.draft && dwform.elements.wikitext){
77 params += '&prefix='+encodeURIComponent(dwform.elements.prefix.value);
78 params += '&wikitext='+encodeURIComponent(dwform.elements.wikitext.value);
79 params += '&suffix='+encodeURIComponent(dwform.elements.suffix.value);
80 if(dwform.elements.date){
81 params += '&date='+encodeURIComponent(dwform.elements.date.value);
82 }
83 }
84 locktimer.sack.runAJAX(params);
85 locktimer.lasttime = now;
86 }
87 },
88
89 /**
90 * Callback. Resets the warning timer
91 */
92 refreshed: function(){
93 var data = this.response;
94 var error = data.charAt(0);
95 data = data.substring(1);
96
97 $('draft__status').innerHTML=data;
98 if(error != '1') return; // locking failed
99 locktimer.reset();
100 }
101};
102
Note: See TracBrowser for help on using the repository browser.