User:Euphoria/massBlock.js: Difference between revisions
From Test Wiki
Custom block duration and popup interface.
(massBlock) |
(Custom block duration and popup interface.) |
||
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 to create the blocking interface in a new window | ||
function createBlockingInterface() { | function createBlockingInterface() { | ||
var formHtml = '<div id="massBlockForm" style=" | var windowFeatures = 'menubar=no,location=no,resizable=yes,scrollbars=yes,status=no,width=400,height=400'; | ||
var massBlockWindow = window.open('', 'MassBlockWindow', windowFeatures); | |||
var formHtml = '<div id="massBlockForm" style="background: white; border: 1px solid black; padding: 10px;">' | |||
+ '<h3>Mass Block</h3>' | + '<h3>Mass Block</h3>' | ||
+ 'Usernames (comma-separated):<br><textarea id="usernamesToBlock" rows="2" cols="20"></textarea><br>' | + 'Usernames (comma-separated):<br><textarea id="usernamesToBlock" rows="2" cols="20"></textarea><br>' | ||
+ 'Block reason:<br><input type="text" id="blockReason"><br>' | + 'Block reason:<br><input type="text" id="blockReason"><br>' | ||
+ 'Block duration:<br>' | + 'Block duration:<br>' | ||
+ '<select id="blockDuration">' | + '<select id="blockDuration" onchange="checkCustomDuration(this.value)">' | ||
+ '<option value="6 hours">6 hours</option>' | + '<option value="6 hours">6 hours</option>' | ||
+ '<option value="24 hours">24 hours</option>' | + '<option value="24 hours">24 hours</option>' | ||
Line 21: | Line 23: | ||
+ '<option value="5 years">5 years</option>' | + '<option value="5 years">5 years</option>' | ||
+ '<option value="indefinite">indefinite</option>' | + '<option value="indefinite">indefinite</option>' | ||
+ '<option value="custom">Custom</option>' | |||
+ '</select><br>' | + '</select><br>' | ||
+ '<input type="text" id="customDuration" style="display:none;" placeholder="Enter duration"><br>' | |||
+ '<button id="executeMassBlock">Block Users</button>' | + '<button id="executeMassBlock">Block Users</button>' | ||
+ '</div>'; | + '</div>'; | ||
massBlockWindow.document.body.innerHTML = formHtml; | |||
massBlockWindow.document.getElementById('executeMassBlock').onclick = function() { | |||
var users = | var users = massBlockWindow.document.getElementById('usernamesToBlock').value.split(','); | ||
var reason = | var reason = massBlockWindow.document.getElementById('blockReason').value; | ||
var duration = | var duration = massBlockWindow.document.getElementById('blockDuration').value; | ||
if (duration === 'custom') { | |||
duration = massBlockWindow.document.getElementById('customDuration').value; | |||
} | |||
users.forEach(function(user) { | users.forEach(function(user) { | ||
blockUser(user.trim(), reason, duration); | blockUser(user.trim(), reason, duration); | ||
}); | }); | ||
}); | }; | ||
massBlockWindow.checkCustomDuration = function(value) { | |||
if (value === 'custom') { | |||
massBlockWindow.document.getElementById('customDuration').style.display = 'block'; | |||
} else { | |||
massBlockWindow.document.getElementById('customDuration').style.display = 'none'; | |||
} | |||
}; | |||
} | } | ||
Line 57: | Line 72: | ||
// Load the interface | // Load the interface | ||
$(document).ready(function() { | $(document).ready(function() { | ||
createBlockingInterface(); | // Add a button or link to open the blocking interface | ||
var openInterfaceButton = $('<button>').text('Open Mass Block Interface'); | |||
openInterfaceButton.click(createBlockingInterface); | |||
$('body').append(openInterfaceButton); | |||
}); | }); | ||
} | } |