From 61fe9594d7f554dd68ca9285060a8f810e1e4325 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Tue, 5 Jul 2016 10:28:57 -0400 Subject: [PATCH] ban integration frontend for ACP, #4807 --- public/language/en_GB/error.json | 3 +- public/less/admin/manage/users.less | 14 ++++++ public/src/admin/manage/users.js | 53 ++++++++++++++++------ src/views/admin/manage/users.tpl | 7 +-- src/views/admin/partials/temporary-ban.tpl | 13 ++++++ 5 files changed, 73 insertions(+), 17 deletions(-) create mode 100644 src/views/admin/partials/temporary-ban.tpl diff --git a/public/language/en_GB/error.json b/public/language/en_GB/error.json index 113337098f..dd0e7e8780 100644 --- a/public/language/en_GB/error.json +++ b/public/language/en_GB/error.json @@ -147,5 +147,6 @@ "no-session-found": "No login session found!", "not-in-room": "User not in room", "no-users-in-room": "No users in this room", - "cant-kick-self": "You can't kick yourself from the group" + "cant-kick-self": "You can't kick yourself from the group", + "no-users-selected": "No user(s) selected" } diff --git a/public/less/admin/manage/users.less b/public/less/admin/manage/users.less index bed33b77a1..604c944ad8 100644 --- a/public/less/admin/manage/users.less +++ b/public/less/admin/manage/users.less @@ -45,4 +45,18 @@ } } } +} + +.page-manage-users { + .ban-modal { + input[type="number"] { + width: 5rem; + text-align: center; + margin-left: 1rem; + } + + .form-inline, .form-group { + width: 100%; + } + } } \ No newline at end of file diff --git a/public/src/admin/manage/users.js b/public/src/admin/manage/users.js index 63b2d0fdd2..0458c3c174 100644 --- a/public/src/admin/manage/users.js +++ b/public/src/admin/manage/users.js @@ -47,25 +47,59 @@ define('admin/manage/users', ['admin/modules/selectable'], function(selectable) $('.ban-user').on('click', function() { var uids = getSelectedUids(); if (!uids.length) { - return false; + app.alertError('[[error:no-users-selected]]'); + return false; // specifically to keep the menu open } - bootbox.confirm('Do you really want to ban?', function(confirm) { + bootbox.confirm('Do you really want to ban ' + (uids.length > 1 ? 'these users' : 'this user') + ' permanently?', function(confirm) { if (confirm) { - socket.emit('user.banUsers', uids, done('User(s) banned!', '.ban', true)); + socket.emit('user.banUsers', { uids: uids }, done('User(s) banned!', '.ban', true)); } }); - return false; + }); + + $('.ban-user-temporary').on('click', function(e) { + var uids = getSelectedUids(); + if (!uids.length) { + app.alertError('[[error:no-users-selected]]'); + return false; // specifically to keep the menu open + } + + templates.parse('admin/partials/temporary-ban', {}, function(html) { + var modal = bootbox.dialog({ + className: 'ban-modal', + title: '[[user:ban_account]]', + message: html, + show: true, + buttons: { + close: { + label: '[[global:close]]', + className: 'btn-link' + }, + submit: { + label: 'Ban ' + uids.length + (uids.length > 1 ? ' users' : ' user'), + callback: function() { + var formData = $('.ban-modal form').serializeArray().reduce(function(data, cur) { + data[cur.name] = cur.value; + return data; + }, {}); + var until = Date.now() + formData.length * 1000*60*60 * (parseInt(formData.unit, 10) ? 24 : 1); + socket.emit('user.banUsers', { uids: uids, until: until }, done('User(s) banned!', '.ban', true)); + } + } + } + }); + }); }); $('.unban-user').on('click', function() { var uids = getSelectedUids(); if (!uids.length) { - return; + app.alertError('[[error:no-users-selected]]'); + return false; // specifically to keep the menu open } socket.emit('user.unbanUsers', uids, done('User(s) unbanned!', '.ban', false)); - return false; }); $('.reset-lockout').on('click', function() { @@ -75,7 +109,6 @@ define('admin/manage/users', ['admin/modules/selectable'], function(selectable) } socket.emit('admin.user.resetLockouts', uids, done('Lockout(s) reset!')); - return false; }); $('.reset-flags').on('click', function() { @@ -85,7 +118,6 @@ define('admin/manage/users', ['admin/modules/selectable'], function(selectable) } socket.emit('admin.user.resetFlags', uids, done('Flags(s) reset!')); - return false; }); $('.admin-user').on('click', function() { @@ -99,7 +131,6 @@ define('admin/manage/users', ['admin/modules/selectable'], function(selectable) } else { socket.emit('admin.user.makeAdmins', uids, done('User(s) are now administrators.', '.administrator', true)); } - return false; }); $('.remove-admin-user').on('click', function() { @@ -117,7 +148,6 @@ define('admin/manage/users', ['admin/modules/selectable'], function(selectable) } }); } - return false; }); $('.validate-email').on('click', function() { @@ -131,7 +161,6 @@ define('admin/manage/users', ['admin/modules/selectable'], function(selectable) socket.emit('admin.user.validateEmail', uids, done('Emails validated', '.notvalidated', false)); } }); - return false; }); $('.send-validation-email').on('click', function() { @@ -158,7 +187,6 @@ define('admin/manage/users', ['admin/modules/selectable'], function(selectable) socket.emit('admin.user.sendPasswordResetEmail', uids, done('Emails sent')); } }); - return false; }); $('.delete-user').on('click', function() { @@ -180,7 +208,6 @@ define('admin/manage/users', ['admin/modules/selectable'], function(selectable) }); } }); - return false; }); function handleUserCreate() { diff --git a/src/views/admin/manage/users.tpl b/src/views/admin/manage/users.tpl index 6af10174bb..10db5a5dd6 100644 --- a/src/views/admin/manage/users.tpl +++ b/src/views/admin/manage/users.tpl @@ -23,12 +23,13 @@
  • Send Validation Email
  • Send Password Reset Email
  • -
  • Ban User
  • -
  • Unban User
  • +
  • Ban User(s)
  • +
  • Ban User(s) Temporarily
  • +
  • Unban User(s)
  • Reset Lockout
  • Reset Flags
  • -
  • Delete User
  • +
  • Delete User(s)
  • diff --git a/src/views/admin/partials/temporary-ban.tpl b/src/views/admin/partials/temporary-ban.tpl new file mode 100644 index 0000000000..a3f032a3b6 --- /dev/null +++ b/src/views/admin/partials/temporary-ban.tpl @@ -0,0 +1,13 @@ +
    +
    + +
    + + + + +
    +

    + Enter the length of time for the ban. Note that a time of 0 will be a considered a permanent ban. +

    +
    \ No newline at end of file