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:
// Check if the current user has admin rights
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="position: fixed; bottom: 10px; right: 10px; background: white; border: 1px solid black; padding: 10px;">'
        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>';


         $('body').append(formHtml);
         massBlockWindow.document.body.innerHTML = formHtml;


         $('#executeMassBlock').click(function() {
         massBlockWindow.document.getElementById('executeMassBlock').onclick = function() {
             var users = $('#usernamesToBlock').val().split(',');
             var users = massBlockWindow.document.getElementById('usernamesToBlock').value.split(',');
             var reason = $('#blockReason').val();
             var reason = massBlockWindow.document.getElementById('blockReason').value;
             var duration = $('#blockDuration').val();
             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);
     });
     });
}
}
152

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.