کاربر:ExtraTools/ExtraToolsWithUpdate.js
از ویکیپدیا، دانشنامهٔ آزاد.
نکته: پس از ذخیرهسازی ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را خالی کنید. موزیلا / فایرفاکس / Safari: کلید Shift را نگهدارید و روی دکمهٔ Reload کلیک کنید، یا کلیدهای Ctrl-Shift-R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای Cmd-Shift-R)؛ اینترنت اکسپلورر: کلید Ctrl نگهدارید و روی دکمهٔ Refresh کلیک کنید، یا کلیدهای Ctrl-F5 را با هم فشار دهید؛ Konqueror: روی دکمهٔ Reload کلیک کنید و یا کلید F5 را فشار دهید؛ اُپرا: کاربران اُپرا ممکن است لازم باشد که بطور کامل حافظهٔ نهانی مرورگر را در منوی Tools→Preferences خالی کنند.
/********************************************************** Extra Edit Tools, ver 1.0.1 ************************************************************/ var Version = "1.0.1"; var autoUpdateHours = 24; var autoUpdateURL = 'http://fa.wikipedia.org/w/index.php?title=User:ExtraTools/Version&action=raw&maxage=0'; var CookieExpireSec = (30 * 24 * 60 * 60); //One month // Check cookie for last update check date var cookie = GetCookie('ExtraToolsUpdate'); var lastCheck = new Date(cookie); // Set the cookie if not already set var cookieExpire = new Date(); cookieExpire.setTime(cookieExpire.getTime() + CookieExpireSec * 3600 * 1000); if (isNaN(lastCheck.valueOf()) == true) { SetCookie('ExtraToolsUpdate', 'January 1, 1970', cookieExpire.toUTCString(), '/'); } // Get the hours since last update check var currentDate = new Date(); var diffHours = ((currentDate - lastCheck) / 1000) / 3600; if (diffHours > autoUpdateHours) { //doAutoUpdate(); if (typeof(addOnloadHook) == 'function') { addOnloadHook(doAutoUpdate); } else { window.onload = doAutoUpdate; } } function doAutoUpdate(){ /*********************************************** Acquired from EN WP User:Cacycle/wikEd.js ************************************************/ // Save current update check date to cookie SetCookie('ExtraToolsUpdate', currentDate.toUTCString(), cookieExpire.toUTCString(), '/'); // Make the AJAX request var ajax = AjaxInitObject(); if (ajax == null) { return; } /************ ajax.open('GET', autoUpdateURL, true); ajax.send(null); // AJAX response handler function ajax.onreadystatechange = function() { if (ajax.readyState != 4) { return; } // Get the response var html = ajax.responseText; // Get current version number from string var ver = Version.match(/(\d+)\.(\d+)\.(\d+)(\w?)/); if (ver == null) { return; } var currentVersion = ((Number(ver[1]) * 1000 + Number(ver[2])) * 100 + Number(ver[3])) * 10; // Get new version number from string var ver = html.match(/(\d+)\.(\d+)\.(\d+)(\w?)/); if (ver == null) { return; } var newVersion = ((Number(ver[1]) * 1000 + Number(ver[2])) * 100 + Number(ver[3])) * 10; // Compare the versions if (currentVersion >= newVersion) { return; } // Here we are! An update is there... // Update by reloading the page with cache bypassing // (equivalent to Shift-Reload or Shift-F5 or Ctrl-F5) // BUT DOES NOT WORK IN OPERA if (window.opera){ //..?? } else { window.location.reload(true); } *********************/ } function AjaxInitObject() { var ajax; // current browsers try { ajax = new XMLHttpRequest(); } catch (e) { // IE 6 try { ajax = new ActiveXObject('Microsoft.XMLHTTP'); } catch (e) { // IE 5.5 try { ajax = new ActiveXObject('Msxml2.XMLHTTP'); } catch (e) { } // No AJAX support } } return(ajax); } function SetCookie(name, value, expires, path, domain, secure) { var cookie = name + '=' + encodeURIComponent(value); if (expires != null) { // generate a date 1 hour ago to delete the cookie if (expires == -1) { var cookieExpire = new Date(); expires = cookieExpire.setTime(cookieExpire.getTime() - 3600 * 1000); //WHY A MINUS? expires = cookieExpire.toUTCString(); } cookie += '; expires=' + expires } if (path != null) { cookie += '; path=' + path; } if (domain != null) { cookie += '; domain=' + domain; } if (secure != null) { cookie += '; secure'; } document.cookie = cookie; } function GetCookie(name) { var cookie = ' ' + document.cookie; var search = ' ' + name + '='; var setStr = ''; var offset = 0; var end = 0; offset = cookie.indexOf(search); if (offset != -1) { offset += search.length; end = cookie.indexOf(';', offset) if (end == -1) { end = cookie.length; } setStr = cookie.substring(offset, end); setStr = setStr.replace(/\\+/g, ' '); setStr = decodeURIComponent(setStr); } return(setStr); }

