1 if(window.dw_locktimer) {
2   var locktimer = dw_locktimer;
3}
4
5 var ourLockTimerRefreshID;
6 var ourLockTimerIsSet = true;
7 var ourLockTimerWarningtimerID;
8 var ourLockTimerIntervalID;
9 var dwfckTextChanged = false;
10 var ourLockTimerINI = false;
11   /**
12    *    event handler
13    *    handles some mousepresses and all keystrokes from CKEditor window
14  */
15
16
17 function handlekeypress (e) {
18  if(e.data && e.data.keyCode == CKEDITOR.CTRL + 81) {
19      jQuery("#save_button").trigger("mousedown");
20  }
21   if(ourLockTimerIsSet) {
22         lockTimerRefresh();
23   }
24   window.dwfckTextChanged = true;
25 }
26
27
28 function unsetDokuWikiLockTimer() {
29
30    if(window.locktimer && !ourLockTimerINI) {
31        locktimer.old_reset = locktimer.reset;
32        locktimer.old_warning = locktimer.warning;
33        ourLockTimerINI=true;
34    }
35    else {
36        window.setTimeout("unsetDokuWikiLockTimer()", 600);
37
38    }
39
40  locktimer.reset = function(){
41        locktimer.clear();  // alert(locktimer.timeout);
42        window.clearTimeout(ourLockTimerWarningtimerID);
43        ourLockTimerWarningtimerID =  window.setTimeout(function () { locktimer.warning(); }, locktimer.timeout);
44   };
45
46   locktimer.warning = function(){
47        window.clearTimeout(ourLockTimerWarningtimerID);
48        if(ourLockTimerIsSet) {
49            alert(LANG.plugins.ckgedit.willexpire);
50        }
51        else {
52            alert(LANG.plugins.ckgedit.lock_msg);
53        }
54     };
55
56
57    locktimer.ourLockTimerReset = locktimer.reset;
58    locktimer.our_lasttime = new Date();
59    lockTimerRefresh();
60
61 }
62
63 function lockTimerRefresh(bak) {
64        var now = new Date();
65        if(!ourLockTimerINI)  unsetDokuWikiLockTimer();
66
67        if((now.getTime() - locktimer.our_lasttime.getTime() > 45*1000) || bak){
68           var dwform = GetE('dw__editform');
69            window.clearTimeout(ourLockTimerWarningtimerID);
70            var params = 'call=lock&id='+locktimer.pageid;
71            if(CKEDITOR.instances) {
72                dwform.elements.wikitext.value = CKEDITOR.instances.wiki__text.getData();
73                params += '&prefix='+encodeURIComponent(dwform.elements.prefix.value);
74                params += '&wikitext='+encodeURIComponent(dwform.elements.wikitext.value);
75                params += '&suffix='+encodeURIComponent(dwform.elements.suffix.value);
76                params += '&date='+encodeURIComponent(dwform.elements.date.value);
77            }
78            locktimer.our_lasttime = now;
79            jQuery.post(
80                DOKU_BASE + 'lib/exe/ajax.php',
81                params,
82                function (data) {
83                    try {
84                      var data = JSON.parse(data);
85                      data.draft = data.draft +  ' by ckgedit';
86                    }
87                     catch(err) {
88                    data = data.replace(/auto/,"")  + ' by ckgedit';
89                     }
90                    locktimer.response = data;
91                    locktimer.refreshed(data);
92                },
93                'html'
94            );
95       }
96
97 }
98 function resetDokuWikiLockTimer(delete_checkbox) {
99
100        var dom_checkbox = document.getElementById('ckgedit_timer');
101        var dom_label = document.getElementById('ckgedit_timer_label');
102        locktimer.clear();
103        if(ourLockTimerIsSet) {
104
105             ourLockTimerIsSet = false;
106             locktimer.reset = locktimer.old_reset;
107             locktimer.refresh();
108             return;
109        }
110
111     if(delete_checkbox) {
112       dom_checkbox.style.display = 'none';
113       dom_label.style.display = 'none';
114     }
115
116       ourLockTimerIsSet = true;
117       locktimer.reset = locktimer.ourLockTimerReset;
118       lockTimerRefresh();
119
120 }
121
122function renewLock(bak) {
123  if(ourLockTimerIsSet) {
124         lockTimerRefresh(true);
125   }
126   else {
127    locktimer.refresh();
128   }
129   locktimer.reset();
130
131
132    if(bak) {
133        var id = "$ID";
134        parse_wikitext('bakup');
135
136        var dwform = GetE('dw__editform');
137        if(dwform.elements.fck_wikitext.value == '__false__' ) return;
138         GetE('saved_wiki_html').innerHTML = CKEDITOR.instances.wiki__text.getData(); // ourFCKEditorNode.innerHTML;
139        if(($editor_backup) == 0 ) {
140           return;
141        }
142
143        var params = "rsave_id=" + encodeURIComponent("$meta_fn");
144        params += '&wikitext='+encodeURIComponent(dwform.elements.fck_wikitext.value);
145        params += '&call=refresh_save';
146        jQuery.post(
147               DOKU_BASE + 'lib/exe/ajax.php',
148                params,
149                function (data) {
150                    if(data == 'done') {
151                        show_backup_msg("$meta_id");
152                    }
153                    else {
154                      alert("error saving: " + id);
155                    }
156                },
157                'html'
158            );
159    }
160
161}
162function dwfckKeypressInstallHandler() {
163  if(window.addEventListener){
164      oDokuWiki_FCKEditorInstance.EditorDocument.addEventListener('keyup', handlekeypress , false) ;
165  }
166  else {
167     oDokuWiki_FCKEditorInstance.EditorDocument.attachEvent('onkeyup', handlekeypress ) ;
168  }
169}
170
171function disableDokuWikiLockTimer() {
172  resetDokuWikiLockTimer(false);
173  if(ourLockTimerIntervalID) {
174     window.clearInterval(ourLockTimerIntervalID);
175  }
176  if(ourLockTimerIsSet) {
177    ourLockTimerIntervalID = window.setInterval(function () { locktimer.refresh(); }, 30000);
178  }
179}
180
181//  Make sure that show buttons in top and/or bottom clear the fckl file
182 function get_showButtons() {
183	var inputs = document.getElementsByTagName('input');
184
185     for(var i=0; i<inputs.length; i++) {
186        if(inputs[i].type && inputs[i].type.match(/submit/i)) {
187			if(inputs[i].value.match(/Show/i) || (inputs[i].form &&  inputs[i].form.className.match(/btn_show/) ) )
188    			inputs[i].onmouseup = draft_delete;
189        }
190     }
191  }
192  setTimeout("get_showButtons()", 3000);