User:WikiBayer/userspacedeletehelperml.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
const usdhtranslations = {
de: {
boxtitle: "Benutzer-Informationen",
header1:"'Unterseiten und Diskussionsseiten",
blocklog: "Sperrlogbuch"
},
en: {
boxtitle: "User information",
header1: "Subpages and discussion pages",
blocklog: "Block logbook"
},
cs: {
boxtitle: "Informace pro uživatele",
header1: "Podstránky a diskusní stránky",
blocklog: "Blokový deník"
},
uk: {
boxtitle: "Інформація про користувача",
header1: "'Підсторінки та сторінки обговорення",
blocklog: "Журнал блокування"
},
fr: {
boxtitle : " Informations sur l'utilisateur",
header1 :" 'sous-pages et pages de discussion",
blocklog : "Journal de blocage"
}
};
function isUserNamespaceAndDeleteAction() {
var namespace = mw.config.get('wgNamespaceNumber');
var action = mw.config.get('wgAction');
return (namespace === 2 || namespace === 3) && action === 'delete';
}
function createUserInfoBox() {
var userName = mw.config.get('wgTitle').split('/')[0];
// Create the main box element
var userInfoBox = $('<div>').attr('id', 'user-info-box').css({
'border': '1px solid #ccc',
'padding': '10px',
'margin': '10px 0',
'background-color': '#f9f9f9'
});
userInfoBox.append($('<h2>').text(usdhtranslations[currentLanguage].boxtitle));
var subPagesSection = $('<div>').attr('id', 'subpages-section');
subPagesSection.append($('<h3>').text(usdhtranslations[currentLanguage].header1));
userInfoBox.append(subPagesSection);
var blockLogSection = $('<div>').attr('id', 'blocklog-section');
blockLogSection.append($('<h3>').text(usdhtranslations[currentLanguage].bloglog));
userInfoBox.append(blockLogSection);
$('#mw-content-text').prepend(userInfoBox);
fetchSubPagesAndDiscussionPages(userName, subPagesSection);
fetchBlockLog(userName, blockLogSection);
}
function fetchSubPagesAndDiscussionPages(userName, container) {
var api = new mw.Api();
api.get({
action: 'query',
list: 'allpages',
apprefix: userName + '/',
apnamespace: mw.config.get('wgNamespaceNumber'),
aplimit: 'max'
}).done(function(data) {
var pages = data.query.allpages;
var list = $('<ul>');
pages.forEach(function(page) {
list.append($('<li>').append($('<a>').attr('href', mw.util.getUrl(page.title)).text(page.title)));
});
container.append(list);
});
}
function fetchBlockLog(userName, container) {
var api = new mw.Api();
api.get({
action: 'query',
list: 'logevents',
letype: 'block',
letitle: 'User:' + userName,
lelimit: 'max'
}).done(function(data) {
var logEvents = data.query.logevents;
var list = $('<ul>');
logEvents.forEach(function(event) {
var logEntry = event.timestamp + ' - ' + event.comment;
list.append($('<li>').text(logEntry));
});
container.append(list);
});
}
$(function() {
if (isUserNamespaceAndDeleteAction()) {
createUserInfoBox();
}
});