Maak jij deze zomer 2025 Het Perfecte WikiKids-kiekje? Iedereen kan meedoen!
Gebruiker:Rots61/Gadget-LogTheCounter.js
Naar navigatie springen
Naar zoeken springen
Let op! Nadat je de veranderingen hebt opgeslagen, moet je de cache van je browser nog legen om ze daadwerkelijk te zien.
Mozilla (incl. Firefox) | ctrl-shift-r |
IE | ctrl-f5 |
Opera | f5 |
Safari | cmd-r |
Konqueror | f5 |
/* jshint sub:true maxerr:100000 */
// [[User:Rots61/Gadget-LogTheCounter.js]] gemaakt door [[User:Rots61]]
/*
var api = new mw.Api();
api.saveOption('userjs-ltc', 'x').then( x =>console.log(x));
*/
function saveitlogthecounter() {
if (Array.isArray(allPages)) {
allPages = JSON.stringify(allPages);
}
function addZero(number) {
return number < 10 ? "0" + number : number;
}
date = new Date();
date = date.getFullYear() + "" + addZero((date.getMonth() + 1)) + "" + addZero(date.getDate());
api.get({
action: 'query',
prop: 'info',
intoken: 'edit',
titles: 'kaslv', //Pagina moet niet bestaan.
}).done(
function (data) {
edit_token = data.query.pages['-1'].edittoken;
}).done(function (data) {
api.post({
'action': 'edit',
'title': "Wikikids:Statistieken/Logs/" + date,
'text': allPages,
'summary': "Pagina opgeslagen met LogTheCounter.",
'bot': true,
'token': edit_token,
}).done(
function (data) {
if (data.edit.result == "Success") {
mw.notify("Hele pagina opgeslagen!", { autoHide: false });
deleteDataOnServer();
} else {
mw.notify("Opslaan mislukt, stuur Rots61 aub direct een berichtje.", { autoHide: false });
}
console.log(data.edit);
document.getElementsByTagName("h1")[0].textContent = "Opslaan gelukt!";
});
document.getElementById('infopaginaLogTheCounter').innerHTML = '<a href="/Wikikids:Statistieken/Logs/' + date + '/info" title="' + date + '">Pagina</a>';
document.getElementById('addinfotoinfopagelogthecounter').innerHTML = JSON.stringify(informatieLogTheCounter);
});
api.get({
action: 'query',
prop: 'info',
intoken: 'edit',
titles: 'kaslv', //Pagina moet niet bestaan.
}).done(
function (data) {
edit_token = data.query.pages['-1'].edittoken;
}).done(function (data) {
api.post({
'action': 'edit',
'title': "Wikikids:Statistieken/Logs/" + date + "/info",
'text': JSON.stringify(informatieLogTheCounter),
'summary': "Pagina opgeslagen met LogTheCounter.",
'bot': true,
'token': edit_token,
}).done(
function (data) {
if (data.edit.result == "Success") {
mw.notify("Pagina opgeslagen!", { autoHide: false });
} else {
mw.notify("Opslaan mislukt 2, stuur Rots61 aub direct een berichtje.", { autoHide: false });
}
console.log(data.edit);
});
});
}
function deleteDataOnServer() {
var settings = {
"url": "https://wikikids.martvanweeghel.nl/rots61/delete",
"method": "POST",
"timeout": 0,
"headers": {
"Host": "wikikids.martvanweeghel.nl",
"Content-Type": "application/json"
},
"data": JSON.stringify({
"message": 'oke'
}),
};
$.ajax(settings).done(function (response) {
mw.notify("Reseten statistieken gelukt", { autoHide: false });
}).catch(function (error) {
mw.notify('Resetten mislukt, stuur Rots61 aub direct een berichtje.', {autoHide: false});
console.log(error);
});
var settings2 = {
"url": "https://wikikids.dekenos.nl/pages/delete",
"method": "POST",
"timeout": 0,
"headers": {
"Host": "wikikids.martvanweeghel.nl",
"Content-Type": "application/json"
},
"data": JSON.stringify({
"message": 'oke'
}),
};
$.ajax(settings2).done(function (response) {
mw.notify("Reseten statistieken2 gelukt", { autoHide: false });
window.onbeforeunload = null;
}).catch(function (error) {
mw.notify('Resetten mislukt, stuur Rots61 aub direct een berichtje.', {autoHide: false});
console.log(error);
});
}
function getPagesLogTheCounter() {
var pages = [];
var request = new XMLHttpRequest();
request.open('GET', 'https://wikikids.martvanweeghel.nl/pages', false);
request.send(null);
if (request.status === 200) {
pages = JSON.parse(request.responseText);
}
// Sorteer de pagina's op het aantal bezoekers (hoog naar laag) (page.normalVisitors + page.mainPageVisitors)
pages.sort(function (a, b) {
return b.normalVisitors + b.mainPageVisitors - a.normalVisitors - a.mainPageVisitors;
});
return pages;
}
if (mw.config.get('wgNamespaceNumber') === -1 && mw.config.get('wgTitle') === "LogTheCounter") {
document.title = 'Opslaan WikiStatistieken';
document.getElementById('bodyContent').innerHTML = 'Op deze pagina kun je de Statistieken van WikiKids reseten, dit doen we elke zaterdag (\'s middags: ). Als je op deze onderstaande knop drukt, moet je ongeveer ~5 wachten. Door op de knop te drukken doe je 2 bewerkingen. Zodra de acties zijn uitgevoerd, wordt je doorgestuurd naar de hoofdpagina. <br><span id="logthecounterx5"></span><button id="logthecounterbutton" onclick="goforitLogTheCounter();" disabled>Activeer deze functie</button><br>';
document.getElementById('firstHeading').innerHTML = 'Special:LogTheCounter';
if (!mw.user.options.exists('userjs-ltc')) {
document.getElementById('logthecounterx5').innerHTML = 'Je kunt dit alleen maar doen tussen 13:00 en 19:00 op zaterdag, voordat de statistieken opgeslagen zijn.';
} else {
tx = mw.user.options.get('userjs-ltc').slice(3,6);
document.getElementById('logthecounterbutton').disabled = false;
}
}
let now = new Date();
if (now.getUTCDay() !== 6) return;
if (now.getUTCHours() < 12) return;
if (now.getUTCHours() > 18) return;
let date = now.getFullYear() + "" + addZero((now.getMonth() + 1)) + "" + addZero(now.getDate());
new mw.Api().get( {
action: "query",
titles: [ "WikiKids:Statistieken/Logs/" + date ],
} ).then( function( ret ) {
$.each( ret.query.pages, function() {
if ( this.missing !== "" ) {
} else {
ltc_showMessage();
}
} );
}, function( error ) {
ltc_showMessage();
} );
var allPages;
var informatieLogTheCounter = {"Starttime":'9999-99-99T13:27:00.170Z', "Endtime":new Date().toISOString()};
var tx;
function goforitLogTheCounter(){
window.onbeforeunload = function() {
return true;
};
allPages = getPagesLogTheCounter();
let now = new Date();
let onejan = new Date(now.getFullYear(), 0, 1);
let week = Math.ceil((((now.getTime() - onejan.getTime()) / 86400000) + onejan.getDay() + 1) / 7);
informatieLogTheCounter["Types"] = 'Mobiel';
informatieLogTheCounter["Jaar-Week"] = now.getFullYear() + '' + week;
informatieLogTheCounter["Totalpages"] = 0;
informatieLogTheCounter['Totalviews'] = 0;
for (var x = 0; x < allPages.length; x++) {
deleteit('t','title', x);
if (informatieLogTheCounter['Starttime'] > allPages[x]['updatedAt']) {
informatieLogTheCounter['Starttime'] = allPages[x]['updatedAt'];
}
if ((allPages[x]['normalVisitors'] + allPages[x]['mainPageVisitors']) <= 5) {
delete allPages[x]['updatedAt'];
} else {
deleteit('uA','updatedAt', x);
}
if (allPages[x]['mainPageVisitors'] === 0) {
delete allPages[x]['mainPageVisitors'];
} else {
if (!(allPages[x].t.includes('Zoeken:') || allPages[x].t.includes('X:'))) {
informatieLogTheCounter['Totalviews'] += allPages[x]['mainPageVisitors'];
}
deleteit('mPV', 'mainPageVisitors', x);
}
if (allPages[x]['normalVisitors'] === 0) {
delete allPages[x]['normalVisitors'];
} else {
if (!(allPages[x].t.includes('Zoeken:') || allPages[x].t.includes('X:'))) {
informatieLogTheCounter['Totalviews'] += allPages[x]['normalVisitors'];
}
deleteit('nV','normalVisitors', x);
}
if (!(allPages[x].t.includes('Zoeken:') || allPages[x].t.includes('X:'))) {
informatieLogTheCounter["Totalpages"] += 1;
}
}
console.log(allPages);
saveitlogthecounter();
}
function deleteit(new_key, old_key, x){
Object.defineProperty(allPages[x], new_key,
Object.getOwnPropertyDescriptor(allPages[x], old_key));
delete allPages[x][old_key];
}
function ltc_showMessage() {
try {
document.getElementById('logthecounterbutton').disabled = false;
document.getElementById('logthecounterx5').innerHTML = '';
} catch (err) {
}
document.getElementById('siteNotice').innerHTML = '<a style="background:yellow" href="https://wikikids.nl/Speciaal:LogTheCounter">De statistieken kunnen opgeslagen worden. Klik hier om dat te doen.</a>';
}