You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

192 lines
6.1 KiB

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