Use group displayNames in users list
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
This commit is contained in:
parent
cb2fbdd214
commit
00122fa027
|
@ -329,6 +329,17 @@ class Manager extends PublicEmitter implements IGroupManager {
|
||||||
}, array_keys($this->getUserGroups($user)));
|
}, array_keys($this->getUserGroups($user)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get an array of groupid and displayName for a user
|
||||||
|
* @param IUser $user
|
||||||
|
* @return array ['displayName' => displayname]
|
||||||
|
*/
|
||||||
|
public function getUserGroupNames(IUser $user) {
|
||||||
|
return array_map(function($group) {
|
||||||
|
return array('displayName' => $group->getDisplayName());
|
||||||
|
}, $this->getUserGroups($user));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get a list of all display names in a group
|
* get a list of all display names in a group
|
||||||
* @param string $gid
|
* @param string $gid
|
||||||
|
|
|
@ -123,7 +123,7 @@ class SubAdmin extends PublicEmitter {
|
||||||
while($row = $result->fetch()) {
|
while($row = $result->fetch()) {
|
||||||
$group = $this->groupManager->get($row['gid']);
|
$group = $this->groupManager->get($row['gid']);
|
||||||
if(!is_null($group)) {
|
if(!is_null($group)) {
|
||||||
$groups[] = $group;
|
$groups[$group->getGID()] = $group;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$result->closeCursor();
|
$result->closeCursor();
|
||||||
|
@ -131,6 +131,17 @@ class SubAdmin extends PublicEmitter {
|
||||||
return $groups;
|
return $groups;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get an array of groupid and displayName for a user
|
||||||
|
* @param IUser $user
|
||||||
|
* @return array ['displayName' => displayname]
|
||||||
|
*/
|
||||||
|
public function getSubAdminsGroupsName(IUser $user) {
|
||||||
|
return array_map(function($group) {
|
||||||
|
return array('displayName' => $group->getDisplayName());
|
||||||
|
}, $this->getSubAdminsGroups($user));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get SubAdmins of a group
|
* get SubAdmins of a group
|
||||||
* @param IGroup $group the group
|
* @param IGroup $group the group
|
||||||
|
|
|
@ -223,10 +223,7 @@ class UsersController extends Controller {
|
||||||
$restorePossible = true;
|
$restorePossible = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
$subAdminGroups = $this->groupManager->getSubAdmin()->getSubAdminsGroups($user);
|
$subAdminGroups = $this->groupManager->getSubAdmin()->getSubAdminsGroupsName($user);
|
||||||
foreach ($subAdminGroups as $key => $subAdminGroup) {
|
|
||||||
$subAdminGroups[$key] = $subAdminGroup->getGID();
|
|
||||||
}
|
|
||||||
|
|
||||||
$displayName = $user->getEMailAddress();
|
$displayName = $user->getEMailAddress();
|
||||||
if (is_null($displayName)) {
|
if (is_null($displayName)) {
|
||||||
|
@ -243,7 +240,7 @@ class UsersController extends Controller {
|
||||||
return [
|
return [
|
||||||
'name' => $user->getUID(),
|
'name' => $user->getUID(),
|
||||||
'displayname' => $user->getDisplayName(),
|
'displayname' => $user->getDisplayName(),
|
||||||
'groups' => empty($userGroups) ? $this->groupManager->getUserGroupIds($user) : $userGroups,
|
'groups' => empty($userGroups) ? $this->groupManager->getUserGroupNames($user) : $userGroups,
|
||||||
'subadmin' => $subAdminGroups,
|
'subadmin' => $subAdminGroups,
|
||||||
'quota' => $user->getQuota(),
|
'quota' => $user->getQuota(),
|
||||||
'quota_bytes' => Util::computerFileSize($user->getQuota()),
|
'quota_bytes' => Util::computerFileSize($user->getQuota()),
|
||||||
|
@ -344,7 +341,7 @@ class UsersController extends Controller {
|
||||||
foreach ($batch as $user) {
|
foreach ($batch as $user) {
|
||||||
// Only add the groups, this user is a subadmin of
|
// Only add the groups, this user is a subadmin of
|
||||||
$userGroups = array_values(array_intersect(
|
$userGroups = array_values(array_intersect(
|
||||||
$this->groupManager->getUserGroupIds($user),
|
$this->groupManager->getUserGroupNames($user),
|
||||||
$subAdminOfGroups
|
$subAdminOfGroups
|
||||||
));
|
));
|
||||||
if (($gid !== '_disabledUsers' && $user->isEnabled()) ||
|
if (($gid !== '_disabledUsers' && $user->isEnabled()) ||
|
||||||
|
@ -484,7 +481,7 @@ class UsersController extends Controller {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// fetch users groups
|
// fetch users groups
|
||||||
$userGroups = $this->groupManager->getUserGroupIds($user);
|
$userGroups = $this->groupManager->getUserGroupNames($user);
|
||||||
|
|
||||||
return new DataResponse(
|
return new DataResponse(
|
||||||
$this->formatUserForIndex($user, $userGroups),
|
$this->formatUserForIndex($user, $userGroups),
|
||||||
|
|
|
@ -142,7 +142,7 @@ GroupList = {
|
||||||
function (result) {
|
function (result) {
|
||||||
if (result.groupname) {
|
if (result.groupname) {
|
||||||
var addedGroup = result.groupname;
|
var addedGroup = result.groupname;
|
||||||
UserList.availableGroups = $.unique($.merge(UserList.availableGroups, [addedGroup]));
|
UserList.availableGroups[result.id] = {displayName: result.groupName};
|
||||||
GroupList.addGroup(groupid, result.groupname);
|
GroupList.addGroup(groupid, result.groupname);
|
||||||
}
|
}
|
||||||
GroupList.toggleAddGroup();
|
GroupList.toggleAddGroup();
|
||||||
|
|
|
@ -52,8 +52,8 @@ var UserList = {
|
||||||
* {
|
* {
|
||||||
* 'name': 'username',
|
* 'name': 'username',
|
||||||
* 'displayname': 'Users display name',
|
* 'displayname': 'Users display name',
|
||||||
* 'groups': ['group1', 'group2'],
|
* 'groups': {group1: {displayName: 'Group 1'}, group2: {displayName: 'Group 2'}}
|
||||||
* 'subadmin': ['group4', 'group5'],
|
* 'subadmin': {group5: {displayName: 'Group 5'}, group6: {displayName: 'Group 6'}}
|
||||||
* 'quota': '10 GB',
|
* 'quota': '10 GB',
|
||||||
* 'quota_bytes': '10737418240',
|
* 'quota_bytes': '10737418240',
|
||||||
* 'storageLocation': '/srv/www/owncloud/data/username',
|
* 'storageLocation': '/srv/www/owncloud/data/username',
|
||||||
|
@ -455,10 +455,10 @@ var UserList = {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (add && OC.isUserAdmin() && UserList.availableGroups.indexOf(group) === -1) {
|
if (add && OC.isUserAdmin() && _.isUndefined(UserList.availableGroups[group])) {
|
||||||
GroupList.createGroup(group);
|
GroupList.createGroup(group);
|
||||||
if (UserList.availableGroups.indexOf(group) === -1) {
|
if (_.isUndefined(UserList.availableGroups[group])) {
|
||||||
UserList.availableGroups.push(group);
|
UserList.availableGroups[group] = {displayName: group};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -473,8 +473,8 @@ var UserList = {
|
||||||
},
|
},
|
||||||
success: function () {
|
success: function () {
|
||||||
GroupList.update();
|
GroupList.update();
|
||||||
if (add && UserList.availableGroups.indexOf(group) === -1) {
|
if (add && _.isUndefined(UserList.availableGroups[group])) {
|
||||||
UserList.availableGroups.push(group);
|
UserList.availableGroups[group] = {displayName: group};
|
||||||
}
|
}
|
||||||
|
|
||||||
if (add) {
|
if (add) {
|
||||||
|
@ -647,11 +647,12 @@ var UserList = {
|
||||||
* Creates a temporary jquery.multiselect selector on the given group field
|
* Creates a temporary jquery.multiselect selector on the given group field
|
||||||
*/
|
*/
|
||||||
_triggerGroupEdit: function ($td, isSubadminSelect) {
|
_triggerGroupEdit: function ($td, isSubadminSelect) {
|
||||||
|
var self = this;
|
||||||
var $groupsListContainer = $td.find('.groupsListContainer');
|
var $groupsListContainer = $td.find('.groupsListContainer');
|
||||||
var placeholder = $groupsListContainer.attr('data-placeholder') || t('settings', 'no group');
|
var placeholder = $groupsListContainer.data('placeholder') || t('settings', 'no group');
|
||||||
var user = UserList.getUID($td);
|
var user = UserList.getUID($td);
|
||||||
var checked = $td.data('groups') || [];
|
var checked = $td.data('groups') || {};
|
||||||
var extraGroups = [].concat(checked);
|
var extraGroups = Object.assign({}, checked);
|
||||||
|
|
||||||
$td.find('.multiselectoptions').remove();
|
$td.find('.multiselectoptions').remove();
|
||||||
|
|
||||||
|
@ -663,22 +664,21 @@ var UserList = {
|
||||||
$groupsSelect = $('<select multiple="multiple" class="subadminsselect multiselect button" title="' + placeholder + '"></select>')
|
$groupsSelect = $('<select multiple="multiple" class="subadminsselect multiselect button" title="' + placeholder + '"></select>')
|
||||||
}
|
}
|
||||||
|
|
||||||
function createItem (group) {
|
function createItem (gid, group) {
|
||||||
if (isSubadminSelect && group === 'admin') {
|
if (isSubadminSelect && group.displayName === 'admin') {
|
||||||
// can't become subadmin of "admin" group
|
// can't become subadmin of "admin" group
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$groupsSelect.append($('<option value="' + escapeHTML(group) + '">' + escapeHTML(group) + '</option>'));
|
$groupsSelect.append($('<option value="' + escapeHTML(gid) + '">' + escapeHTML(group.displayName) + '</option>'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$.each(this.availableGroups, function (i, group) {
|
$.each(this.availableGroups, function (gid, group) {
|
||||||
// some new groups might be selected but not in the available groups list yet
|
// some new groups might be selected but not in the available groups list yet
|
||||||
var extraIndex = extraGroups.indexOf(group);
|
if (extraGroups[gid] !== undefined) {
|
||||||
if (extraIndex >= 0) {
|
|
||||||
// remove extra group as it was found
|
// remove extra group as it was found
|
||||||
extraGroups.splice(extraIndex, 1);
|
delete extraGroups[gid];
|
||||||
}
|
}
|
||||||
createItem(group);
|
createItem(gid, group);
|
||||||
});
|
});
|
||||||
$.each(extraGroups, function (i, group) {
|
$.each(extraGroups, function (i, group) {
|
||||||
createItem(group);
|
createItem(group);
|
||||||
|
@ -686,10 +686,13 @@ var UserList = {
|
||||||
|
|
||||||
$td.append($groupsSelect);
|
$td.append($groupsSelect);
|
||||||
|
|
||||||
|
var checkedIds = Object.keys(checked).map(function(group, gid) {
|
||||||
|
return checked[group].displayName;
|
||||||
|
});
|
||||||
if (isSubadminSelect) {
|
if (isSubadminSelect) {
|
||||||
UserList.applySubadminSelect($groupsSelect, user, checked);
|
UserList.applySubadminSelect($groupsSelect, user, checkedIds);
|
||||||
} else {
|
} else {
|
||||||
UserList.applyGroupSelect($groupsSelect, user, checked);
|
UserList.applyGroupSelect($groupsSelect, user, checkedIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
$groupsListContainer.addClass('hidden');
|
$groupsListContainer.addClass('hidden');
|
||||||
|
@ -699,7 +702,15 @@ var UserList = {
|
||||||
$td.find('.multiselect:not(.groupsListContainer)').parent().remove();
|
$td.find('.multiselect:not(.groupsListContainer)').parent().remove();
|
||||||
$td.find('.multiselectoptions').remove();
|
$td.find('.multiselectoptions').remove();
|
||||||
$groupsListContainer.removeClass('hidden');
|
$groupsListContainer.removeClass('hidden');
|
||||||
UserList._updateGroupListLabel($td, e.checked);
|
// Pull all checked groups from this.availableGroups
|
||||||
|
var checked = Object.keys(self.availableGroups).reduce(function (previous, key) {
|
||||||
|
if(e.checked.indexOf(key) >= 0) {
|
||||||
|
return Object.assign(previous, {[key]:self.availableGroups[key]});
|
||||||
|
} else {
|
||||||
|
return previous;
|
||||||
|
}
|
||||||
|
}, {});
|
||||||
|
UserList._updateGroupListLabel($td, checked);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -707,9 +718,12 @@ var UserList = {
|
||||||
* Updates the groups list td with the given groups selection
|
* Updates the groups list td with the given groups selection
|
||||||
*/
|
*/
|
||||||
_updateGroupListLabel: function ($td, groups) {
|
_updateGroupListLabel: function ($td, groups) {
|
||||||
var placeholder = $td.find('.groupsListContainer').attr('data-placeholder');
|
var placeholder = $td.find('.groupsListContainer').data('placeholder');
|
||||||
var $groupsEl = $td.find('.groupsList');
|
var $groupsEl = $td.find('.groupsList');
|
||||||
$groupsEl.text(groups.join(', ') || placeholder || t('settings', 'no group'));
|
var grouptext = Object.keys(groups).map(function(group, gid) {
|
||||||
|
return groups[group].displayName;
|
||||||
|
});
|
||||||
|
$groupsEl.text(grouptext.join(', ') || placeholder || t('settings', 'no group'));
|
||||||
$td.data('groups', groups);
|
$td.data('groups', groups);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -1029,7 +1043,7 @@ $(document).ready(function () {
|
||||||
OC.Search.clear();
|
OC.Search.clear();
|
||||||
});
|
});
|
||||||
|
|
||||||
UserList._updateGroupListLabel($('#newuser .groups'), []);
|
UserList._updateGroupListLabel($('#newuser .groups'), {});
|
||||||
var _submitNewUserForm = function (event) {
|
var _submitNewUserForm = function (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
if (OC.PasswordConfirmation.requiresPasswordConfirmation()) {
|
if (OC.PasswordConfirmation.requiresPasswordConfirmation()) {
|
||||||
|
@ -1057,7 +1071,7 @@ $(document).ready(function () {
|
||||||
}
|
}
|
||||||
|
|
||||||
promise.then(function () {
|
promise.then(function () {
|
||||||
var groups = $('#newuser .groups').data('groups') || [];
|
var groups = $('#newuser .groups').data('groups') || {};
|
||||||
$.post(
|
$.post(
|
||||||
OC.generateUrl('/settings/users/users'),
|
OC.generateUrl('/settings/users/users'),
|
||||||
{
|
{
|
||||||
|
@ -1070,8 +1084,8 @@ $(document).ready(function () {
|
||||||
if (result.groups) {
|
if (result.groups) {
|
||||||
for (var i in result.groups) {
|
for (var i in result.groups) {
|
||||||
var gid = result.groups[i];
|
var gid = result.groups[i];
|
||||||
if (UserList.availableGroups.indexOf(gid) === -1) {
|
if (_.isUndefined(UserList.availableGroups[gid])) {
|
||||||
UserList.availableGroups.push(gid);
|
UserList.availableGroups[gid] = {displayName: gid};
|
||||||
}
|
}
|
||||||
var $li = GroupList.getGroupLI(gid);
|
var $li = GroupList.getGroupLI(gid);
|
||||||
var userCount = GroupList.getUserCount($li);
|
var userCount = GroupList.getUserCount($li);
|
||||||
|
|
|
@ -21,10 +21,10 @@ style('settings', 'settings');
|
||||||
$userlistParams = array();
|
$userlistParams = array();
|
||||||
$allGroups=array();
|
$allGroups=array();
|
||||||
foreach($_["adminGroup"] as $group) {
|
foreach($_["adminGroup"] as $group) {
|
||||||
$allGroups[] = $group['name'];
|
$allGroups[$group['id']] = array('displayName' => $group['name']);
|
||||||
}
|
}
|
||||||
foreach($_["groups"] as $group) {
|
foreach($_["groups"] as $group) {
|
||||||
$allGroups[] = $group['name'];
|
$allGroups[$group['id']] = array('displayName' => $group['name']);
|
||||||
}
|
}
|
||||||
$userlistParams['subadmingroups'] = $allGroups;
|
$userlistParams['subadmingroups'] = $allGroups;
|
||||||
$userlistParams['allGroups'] = json_encode($allGroups);
|
$userlistParams['allGroups'] = json_encode($allGroups);
|
||||||
|
|
Loading…
Reference in New Issue