User:Euphoria/massBlock.js: Difference between revisions
From Test Wiki
Content deleted Content added
Custom block duration and popup interface. |
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 in a new window |
|||
function createBlockingInterface() { |
function createBlockingInterface() { |
||
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;">' |
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 23: | Line 17: | ||
+ '<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; |
|||
$('#someWikipediaContainer').append(formHtml); |
|||
$('#executeMassBlock').click(function() { |
|||
var users = |
var users = $('#usernamesToBlock').val().split(','); |
||
var reason = |
var reason = $('#blockReason').val(); |
||
var duration = |
var duration = $('#blockDuration').val(); |
||
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'; |
|||
} |
|||
}; |
|||
} |
} |
||
// 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 70: | Line 51: | ||
} |
} |
||
// Load the interface |
|||
$(document).ready(function() { |
$(document).ready(function() { |
||
createBlockingInterface(); |
|||
| ⚫ | |||
var openInterfaceButton = $('<button>').text('Open Mass Block Interface'); |
|||
openInterfaceButton.click(createBlockingInterface); |
|||
$('body').append(openInterfaceButton); |
|||
}); |
}); |
||
} |
} |
||