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();
    }
});