MediaWiki:Citizen.js: Difference between revisions

MediaWiki interface page
(Blanked the page)
Tag: Blanking
No edit summary
Line 1: Line 1:
  +
function isUserLoggedIn() {
  +
return !mw.user.isAnon();
  +
}
  +
  +
function handleElement($element) {
  +
if ($element.attr('aria-disabled') === 'true') {
  +
$element.after(
  +
'<p>Please <a href="/wiki/Special:UserLogin">login</a> or <a href="/wiki/Special:UserSignup">sign up</a> to continue.</p>'
  +
);
  +
}
  +
}
  +
  +
function handleMutations(mutationsList) {
  +
mutationsList.forEach((mutation) => {
  +
if (mutation.type === 'childList') {
  +
mutation.addedNodes.forEach((node) => {
  +
if ($(node).hasClass('oo-ui-buttonElement-button')) {
  +
handleElement($(node));
  +
}
  +
});
  +
} else if (mutation.type === 'attributes' && mutation.attributeName === 'aria-disabled') {
  +
handleElement($(mutation.target));
  +
}
  +
});
  +
}
  +
  +
const observer = new MutationObserver(handleMutations);
  +
observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['aria-disabled'] });
  +
  +
$(document).ready(() => {
  +
$('.oo-ui-buttonElement-button').each((index, element) => {
  +
handleElement($(element));
  +
});
  +
});

Revision as of 01:09, 15 October 2023

function isUserLoggedIn() {
    return !mw.user.isAnon();
}

function handleElement($element) {
    if ($element.attr('aria-disabled') === 'true') {
        $element.after(
            '<p>Please <a href="/wiki/Special:UserLogin">login</a> or <a href="/wiki/Special:UserSignup">sign up</a> to continue.</p>'
        );
    }
}

function handleMutations(mutationsList) {
    mutationsList.forEach((mutation) => {
        if (mutation.type === 'childList') {
            mutation.addedNodes.forEach((node) => {
                if ($(node).hasClass('oo-ui-buttonElement-button')) {
                    handleElement($(node));
                }
            });
        } else if (mutation.type === 'attributes' && mutation.attributeName === 'aria-disabled') {
            handleElement($(mutation.target));
        }
    });
}

const observer = new MutationObserver(handleMutations);
observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['aria-disabled'] });

$(document).ready(() => {
    $('.oo-ui-buttonElement-button').each((index, element) => {
        handleElement($(element));
    });
});