I have created a custom users view that extends the k-users-view
component, but somehow the Create new user
button has gone missing. Panel stuff is not my strong suit so I am not sure where to look for a solution. The Vue component for the users view? The dialogs for the view? Any help is greatly appreciated.
The site is on version 5.0.0-beta.6
<?php
use Kirby\Cms\App as Kirby;
use Kirby\Toolkit\Escape;
use Kirby\Cms\App;
use Kirby\Toolkit\A;
Kirby::plugin('my-plugin/users-view', [
'areas' => [
'users' => function () {
return [
'label' => 'Accounts',
'icon' => 'users',
'menu' => true,
'link' => 'users',
'views' => [
'users' => [
'pattern' => 'users',
'action' => function () {
$kirby = App::instance();
$role = $kirby->request()->get('role');
$roles = A::sort($kirby->roles()->toArray(fn($role) => [
'id' => $role->id(),
'title' => $role->title(),
]), 'title', 'asc');
return [
'component' => 'k-users-view',
'props' => [
'role' => function () use ($kirby, $roles, $role) {
if ($role) {
return $roles[$role] ?? null;
}
},
'roles' => array_values($roles),
'users' => function () use ($kirby, $role) {
$users = $kirby->users();
if (empty($role) === false) {
$users = $users->role($role);
}
// sort users alphabetically
$users = $users->sortBy('lastname', 'asc');
// paginate
$users = $users->paginate([
'limit' => 20,
'page' => $kirby->request()->get('page')
]);
return [
'data' => $users->values(fn($user) => [
'id' => $user->id(),
'image' => false,
'info' => Escape::html($user->email()) . ' [' . Escape::html($user->role()->title()) . ']',
'link' => $user->panel()->url(true),
'text' => mb_strtoupper(Escape::html($user->lastname())) . ', ' . Escape::html($user->firstname())
]),
'pagination' => $users->pagination()->toArray()
];
},
]
];
}
]
]
];
}
]
]);