1/** 2 * Add a click handler to the 3 * element with the `plugin_stale` class 4 */ 5 6(function IIFE(){ 7 const queryParameterKey = "stale"; 8 jQuery('.plugin_stale') 9 .show() 10 .click(function (e) { 11 e.preventDefault(); 12 // post the data 13 jQuery.post( 14 DOKU_BASE + 'lib/exe/ajax.php', 15 { 16 call: 'plugin_stale' 17 }, 18 // Display feedback 19 // https://api.jqueryui.com/dialog/ 20 function (result) { 21 const actualUrl = new URL(window.location.href); 22 actualUrl.searchParams.set(queryParameterKey,result.message); 23 window.location.assign(actualUrl.toString()); 24 } 25 ); 26 }); 27 jQuery(function(){ 28 29 const actualUrl = new URL(window.location.href); 30 if(actualUrl.searchParams.has(queryParameterKey)){ 31 32 const sec = 10; 33 const message = actualUrl.searchParams.get(queryParameterKey); 34 let dialogElement = jQuery(document.createElement('div')); 35 dialogElement.html(`<h3>Stale</h3><p>${message}</p><p>The page was reloaded.</p><p>Note: This window will close automatically after ${sec} second if you don't click or press any key.</p>`); 36 37 /** 38 * 39 * @param {any | JQuery} jElement 40 */ 41 let remove = function (jElement) { 42 if (jElement.parent().length > 0) { 43 jElement.dialog('close'); 44 jElement.remove(); 45 jQuery(document.activeElement).blur(); 46 } 47 }; 48 49 dialogElement.dialog({ 50 dialogClass: "stale-dialog", 51 closeOnEscape: true, 52 modal: true, 53 open: function () { 54 // close it after 2 seconds (toast) 55 setTimeout(function () { 56 remove(dialogElement) 57 }, sec*1000); 58 } 59 }); 60 61 // Close it if the user click or press any key 62 jQuery(document).on("click", function () { 63 remove(dialogElement) 64 }); 65 jQuery(document).on("keypress", function () { 66 remove(dialogElement) 67 }); 68 69 } 70 }) 71})(); 72 73 74