User:Euphoria/massBlock.js: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
if (mw.config.get('wgUserGroups').includes('sysop')) { |
if (mw.config.get('wgUserGroups').includes('sysop')) { |
||
// Function to create the blocking interface |
|||
function createBlockingInterface() { |
function createBlockingInterface() { |
||
var formHtml = '<div id="massBlockForm" style="background: white; border: 1px solid black; padding: 10px;">' |
var formHtml = '<div id="massBlockForm" style="background: white; border: 1px solid black; padding: 10px;">' |
||
Line 21: | Line 22: | ||
+ '</div>'; |
+ '</div>'; |
||
// |
// Check if the form already exists to avoid duplicates |
||
$('# |
if ($('#massBlockForm').length === 0) { |
||
$('body').append(formHtml); |
|||
} |
|||
$('#executeMassBlock').click(function() { |
$('#executeMassBlock').click(function() { |
||
Line 34: | Line 37: | ||
} |
} |
||
// Function to block a user |
|||
function blockUser(username, reason, duration) { |
function blockUser(username, reason, duration) { |
||
var api = new mw.Api(); |
var api = new mw.Api(); |
||
Line 51: | Line 55: | ||
} |
} |
||
// Add link to the sidebar |
|||
$(document).ready(function() { |
$(document).ready(function() { |
||
var portletLink = mw.util.addPortletLink( |
|||
createBlockingInterface(); |
|||
'p-tb', // This is the ID of the toolbox section in the sidebar |
|||
'#', // We'll bind the click event to open the interface |
|||
'Mass Block', // The text of the link |
|||
't-massblock', // The ID of the new link |
|||
'Mass block users' // Tooltip text for the link |
|||
); |
|||
// Bind click event to the link |
|||
$(portletLink).click(function(e) { |
|||
e.preventDefault(); // Prevent the default action |
|||
createBlockingInterface(); // Call the function to create/open the blocking interface |
|||
}); |
|||
}); |
}); |
||
} |
} |
Revision as of 11:50, 28 December 2023
if (mw.config.get('wgUserGroups').includes('sysop')) {
// Function to create the blocking interface
function createBlockingInterface() {
var formHtml = '<div id="massBlockForm" style="background: white; border: 1px solid black; padding: 10px;">'
+ '<h3>Mass Block</h3>'
+ 'Usernames (comma-separated):<br><textarea id="usernamesToBlock" rows="2" cols="20"></textarea><br>'
+ 'Block reason:<br><input type="text" id="blockReason"><br>'
+ 'Block duration:<br><select id="blockDuration">'
+ '<option value="6 hours">6 hours</option>'
+ '<option value="24 hours">24 hours</option>'
+ '<option value="31 hours">31 hours</option>'
+ '<option value="1 week">1 week</option>'
+ '<option value="2 weeks">2 weeks</option>'
+ '<option value="1 month">1 month</option>'
+ '<option value="3 months">3 months</option>'
+ '<option value="6 months">6 months</option>'
+ '<option value="1 year">1 year</option>'
+ '<option value="5 years">5 years</option>'
+ '<option value="indefinite">indefinite</option>'
+ '</select><br>'
+ '<button id="executeMassBlock">Block Users</button>'
+ '</div>';
// Check if the form already exists to avoid duplicates
if ($('#massBlockForm').length === 0) {
$('body').append(formHtml);
}
$('#executeMassBlock').click(function() {
var users = $('#usernamesToBlock').val().split(',');
var reason = $('#blockReason').val();
var duration = $('#blockDuration').val();
users.forEach(function(user) {
blockUser(user.trim(), reason, duration);
});
});
}
// Function to block a user
function blockUser(username, reason, duration) {
var api = new mw.Api();
api.postWithToken('csrf', {
action: 'block',
user: username,
expiry: duration,
reason: reason,
nocreate: true,
autoblock: true,
noemail: true
}).done(function(data) {
console.log('User blocked: ' + username);
}).fail(function(error) {
console.log('Error blocking user: ' + username);
});
}
// Add link to the sidebar
$(document).ready(function() {
var portletLink = mw.util.addPortletLink(
'p-tb', // This is the ID of the toolbox section in the sidebar
'#', // We'll bind the click event to open the interface
'Mass Block', // The text of the link
't-massblock', // The ID of the new link
'Mass block users' // Tooltip text for the link
);
// Bind click event to the link
$(portletLink).click(function(e) {
e.preventDefault(); // Prevent the default action
createBlockingInterface(); // Call the function to create/open the blocking interface
});
});
}