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);