משתמש:גאון הירדן/חסימה לעריכה.js
מראה
לתשומת ליבך: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
mw.loader.using(['mediawiki.api']).then(function () {
var userEndPage = "user:"+mw.config.get('wgUserName')+"/סוף.js";
var url = '/w/api.php?';
var currentDate = Date.now();
function blockPage (time){
$.post(
mw.util.wikiScript('api'),
{
"action": "edit",
"format": "json",
"title": userEndPage,
"text": time,
"contentmodel": "javascript",
"token": mw.user.tokens.get('csrfToken'),
"utf8": 1
}, function(data){
if (data && data.edit){
mw.notify("נשמר בהצלחה");
logOut();
}
if (error && error.code){
mw.notify("שגיאה: " + error.code);
}
});
}
function getTimeFromPage(){
var params = {
"action": "parse",
"format": "json",
"page": userEndPage,
"prop": "wikitext",
"utf8": 1
}
fetch(`${url}${new URLSearchParams(params)}`)
.then((res) => res.json())
.then((res) => {
var time = res.parse.wikitext["*"];
calculateIt(time) ;
}).catch((error) => {
return false;
});
}
function calculateIt(timeToBlocking){
if (currentDate <= timeToBlocking) {
var timeEnd = timer(timeToBlocking);
alert(" בקשת להחסם עד ל " + new Date(+timeToBlocking).toLocaleString() + "\n\nתוכל לשוב ולערוך בעוד: " + timeEnd + "\n\nלהתראות!");
logOut();
}
}
function openMyDialog(){
var time ='<input type="datetime-local" id="myDate" >';
var dialog = $("<div>").append(time).dialog({title: "עד מתי ברצונך להיחסם?",
open: function() {
},
close: function() {
dialog.remove();
},
buttons: [{
text: "חסום אותי",
id: "startbtn",
click: function() {
var time = Date.parse($('#myDate').val());
if (currentDate > time) {
alert("בחרת בזמן עבר.")
return;
}
blockPage (time);
dialog.dialog("close");
}
}]
});
}
function logOut(){
$.post(
mw.util.wikiScript('api'),
{
"action": "logout",
"format": "json",
"token": mw.user.tokens.get('csrfToken'),
"utf8": 1
});
}
function timer(timeToBlock){
var countDownDate = timeToBlock;
var now = new Date().getTime();
var distance = countDownDate - now;
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
var d = " ימים, " , h = " שעות, " , m = " דקות, " , s = " שניות " ;
var timeend = days + d + hours + h
+ minutes + m + seconds + s ;
return timeend;
}
$('#pt-watchlist').after(
$("<li>").append(
$('<a>')
.click(function(){
openMyDialog()
})
.text("חסימה עצמית")
)
);
getTimeFromPage();
});