From 10e4ae629c93ea760eaa6db3587912311f42c778 Mon Sep 17 00:00:00 2001 From: psychobunny Date: Thu, 23 Jul 2020 18:34:07 -0400 Subject: [PATCH] feat: highlight privs row if group is added / navigating from group page --- public/less/admin/manage/privileges.less | 14 +++++ public/src/admin/manage/group.js | 2 +- public/src/admin/manage/privileges.js | 66 +++++++++++++++++------- 3 files changed, 61 insertions(+), 21 deletions(-) diff --git a/public/less/admin/manage/privileges.less b/public/less/admin/manage/privileges.less index a912a4115ad8..336d1ab3ef25 100644 --- a/public/less/admin/manage/privileges.less +++ b/public/less/admin/manage/privileges.less @@ -4,4 +4,18 @@ overflow-y: auto; overflow-x: hidden; } +} + +.page-admin-privileges { + @keyframes fadeOut { + 0% {background-color: @brand-primary;} + 100% {background-color: white;} + } + + [data-group-name].selected { + animation-name: fadeOut; + animation-duration: 5s; + animation-fill-mode: both; + animation-timing-function: ease-out; + } } \ No newline at end of file diff --git a/public/src/admin/manage/group.js b/public/src/admin/manage/group.js index 5313e8755ed3..f1d0852194ef 100644 --- a/public/src/admin/manage/group.js +++ b/public/src/admin/manage/group.js @@ -93,7 +93,7 @@ define('admin/manage/group', [ var cid = $(this).attr('data-cid'); if (cid) { - var url = 'admin/manage/privileges/' + cid; + var url = 'admin/manage/privileges/' + cid + '?group=' + ajaxify.data.group.name; if (app.flags && app.flags._unsaved === true) { translator.translate('[[global:unsaved-changes]]', function (text) { bootbox.confirm(text, function (navigate) { diff --git a/public/src/admin/manage/privileges.js b/public/src/admin/manage/privileges.js index 41518dfebe17..703c8f5b137d 100644 --- a/public/src/admin/manage/privileges.js +++ b/public/src/admin/manage/privileges.js @@ -6,7 +6,7 @@ define('admin/manage/privileges', [ 'benchpress', 'categorySelector', ], function (autocomplete, translator, Benchpress, categorySelector) { - var Privileges = {}; + var Privileges = {}; var cid; @@ -21,6 +21,8 @@ define('admin/manage/privileges', [ }); Privileges.setupPrivilegeTable(); + + highlightRow(); }; Privileges.setupPrivilegeTable = function () { @@ -79,7 +81,7 @@ define('admin/manage/privileges', [ Privileges.exposeAssumedPrivileges(); }; - Privileges.refreshPrivilegeTable = function () { + Privileges.refreshPrivilegeTable = function (groupToHighlight) { socket.emit('admin.categories.getPrivilegeSettings', cid, function (err, privileges) { if (err) { return app.alertError(err.message); @@ -92,6 +94,10 @@ define('admin/manage/privileges', [ translator.translate(html, function (html) { $('.privilege-table-container').html(html); Privileges.exposeAssumedPrivileges(); + + if (groupToHighlight) { + $('[data-group-name="' + groupToHighlight + '"]').addClass('selected'); + } }); }); }); @@ -182,24 +188,7 @@ define('admin/manage/privileges', [ inputEl.focus(); autocomplete.group(inputEl, function (ev, ui) { - var defaultPrivileges; - if (ajaxify.data.url === '/admin/manage/privileges/admin') { - defaultPrivileges = ['groups:admin:dashboard']; - } else { - defaultPrivileges = cid ? ['groups:find', 'groups:read', 'groups:topics:read'] : ['groups:chat']; - } - - socket.emit('admin.categories.setPrivilege', { - cid: isNaN(cid) ? 0 : cid, - privilege: defaultPrivileges, - set: true, - member: ui.item.group.name, - }, function (err) { - if (err) { - return app.alertError(err.message); - } - - Privileges.refreshPrivilegeTable(); + addGroupToCategory(ui.item.group.name, function () { modal.modal('hide'); }); }); @@ -235,5 +224,42 @@ define('admin/manage/privileges', [ }); }; + function highlightRow() { + var params = utils.params(); + if (params.group) { + var el = $('[data-group-name="' + params.group + '"]'); + if (el.length) { + return el.addClass('selected'); + } + + addGroupToCategory(params.group); + } + } + + function addGroupToCategory(group, cb) { + var defaultPrivileges; + if (ajaxify.data.url === '/admin/manage/privileges/admin') { + defaultPrivileges = ['groups:admin:dashboard']; + } else { + defaultPrivileges = cid ? ['groups:find', 'groups:read', 'groups:topics:read'] : ['groups:chat']; + } + + socket.emit('admin.categories.setPrivilege', { + cid: isNaN(cid) ? 0 : cid, + privilege: defaultPrivileges, + set: true, + member: group, + }, function (err) { + if (err) { + return app.alertError(err.message); + } + + Privileges.refreshPrivilegeTable(group); + if (typeof cb === 'function') { + cb(); + } + }); + } + return Privileges; });