No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
| − | function |
+ | $(document).ready(function() { |
| + | // Check if the user is not logged in |
||
| − | + | if (mw.user.isAnon()) { |
|
| − | } |
||
| + | var handleElements = function() { |
||
| + | // Select the elements with the specified class |
||
| ⚫ | |||
| + | // Iterate through the selected elements |
||
| − | function handleElement($element) { |
||
| + | elements.each(function() { |
||
| ⚫ | |||
| − | + | var $element = $(this); |
|
| ⚫ | |||
| ⚫ | |||
| − | console.log('User is logged in; no message added'); |
||
| ⚫ | |||
| − | } |
||
| + | // Check if aria-disabled is set to "true" |
||
| − | function handleMutations(mutationsList) { |
||
| ⚫ | |||
| − | mutationsList.forEach(function (mutation) { |
||
| + | // Create a new HTML snippet with MediaWiki links |
||
| − | if (mutation.type === 'childList') { |
||
| ⚫ | |||
| − | Array.prototype.forEach.call(mutation.addedNodes, function (node) { |
||
| + | |||
| ⚫ | |||
| − | + | // Check if the message is already present to avoid duplication |
|
| − | + | if (!$element.next().hasClass('login-message')) { |
|
| + | // Insert the message after the disabled button |
||
| + | $element.after(loginMessage); |
||
| ⚫ | |||
} |
} |
||
}); |
}); |
||
| ⚫ | |||
| − | } else if (mutation.type === 'attributes' && mutation.attributeName === 'aria-disabled') { |
||
| − | console.log('Handling attribute change'); |
||
| − | handleElement($(mutation.target)); |
||
| ⚫ | |||
| − | }); |
||
| − | } |
||
| + | // Initial check |
||
| + | handleElements(); |
||
| + | // Use delegated event handling to handle dynamically added elements |
||
| − | $(document).ready(function () { |
||
| + | $(document).on('DOMNodeInserted', function(event) { |
||
| − | console.log('Checking initial state'); |
||
| − | var |
+ | var target = $(event.target); |
| − | observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['aria-disabled'] }); |
||
| + | // Check if the target has the specified class |
||
| − | |||
| − | + | if (target.hasClass('oo-ui-buttonElement-button')) { |
|
| + | handleElements(); |
||
| − | console.log('Handling initial element'); |
||
| − | + | } |
|
| − | }); |
+ | }); |
| ⚫ | |||
}); |
}); |
||
Revision as of 01:18, 15 October 2023
$(document).ready(function() {
// Check if the user is not logged in
if (mw.user.isAnon()) {
var handleElements = function() {
// Select the elements with the specified class
var elements = $('.oo-ui-buttonElement-button');
// Iterate through the selected elements
elements.each(function() {
var $element = $(this);
// Check if aria-disabled is set to "true"
if ($element.attr('aria-disabled') === 'true') {
// Create a new HTML snippet with MediaWiki links
var loginMessage = '<p>Please <a href="/wiki/Special:UserLogin">login</a> or <a href="/wiki/Special:CreateAccount">sign up</a> to continue.</p>';
// Check if the message is already present to avoid duplication
if (!$element.next().hasClass('login-message')) {
// Insert the message after the disabled button
$element.after(loginMessage);
}
}
});
};
// Initial check
handleElements();
// Use delegated event handling to handle dynamically added elements
$(document).on('DOMNodeInserted', function(event) {
var target = $(event.target);
// Check if the target has the specified class
if (target.hasClass('oo-ui-buttonElement-button')) {
handleElements();
}
});
}
});