看板初始化提交

This commit is contained in:
zephyr
2026-06-01 21:23:12 -07:00
commit 54a842f4ab
2104 changed files with 241695 additions and 0 deletions
+100
View File
@@ -0,0 +1,100 @@
<div class="dropdown">
<a href="#" class="dropdown-menu dropdown-menu-link-icon"><strong><?= '#'.$user['id'] ?> <i class="fa fa-caret-down"></i></strong></a>
<ul>
<li>
<?= $this->url->icon('user', t('View profile'), 'UserViewController', 'show', array('user_id' => $user['id'])) ?>
</li>
<?php if ($user['is_active'] == 1 && $this->user->hasAccess('UserModificationController', 'show')): ?>
<li>
<?= $this->modal->medium('edit', t('Edit'), 'UserModificationController', 'show', array('user_id' => $user['id'])) ?>
</li>
<li>
<?= $this->modal->medium('smile-o', t('Avatar'), 'AvatarFileController', 'show', array('user_id' => $user['id'])) ?>
</li>
<?php endif ?>
<?php if ($user['is_ldap_user'] == 0 && $this->user->hasAccess('UserCredentialController', 'changePassword')): ?>
<li>
<?= $this->modal->medium('key', t('Change password'), 'UserCredentialController', 'changePassword', array('user_id' => $user['id'])) ?>
</li>
<?php endif ?>
<?php if ($this->user->isCurrentUser($user['id']) && $this->user->hasAccess('TwoFactorController', 'index')): ?>
<li>
<?= $this->modal->medium('shield', t('Two factor authentication'), 'TwoFactorController', 'index', array('user_id' => $user['id'])) ?>
</li>
<?php elseif ($this->user->hasAccess('TwoFactorController', 'disable') && $user['twofactor_activated'] == 1): ?>
<li>
<?= $this->modal->medium('shield', t('Two factor authentication'), 'TwoFactorController', 'disable', array('user_id' => $user['id'])) ?>
</li>
<?php endif ?>
<?php if ($this->user->hasAccess('UserViewController', 'share')): ?>
<li>
<?= $this->modal->medium('share-alt', t('Public access'), 'UserViewController', 'share', array('user_id' => $user['id'])) ?>
</li>
<?php endif ?>
<?php if ($this->user->hasAccess('UserViewController', 'notifications')): ?>
<li>
<?= $this->modal->medium('bell-o', t('Notifications'), 'UserViewController', 'notifications', array('user_id' => $user['id'])) ?>
</li>
<?php endif ?>
<?php if ($this->user->hasAccess('UserViewController', 'external')): ?>
<li>
<?= $this->modal->medium('user-circle-o', t('External accounts'), 'UserViewController', 'external', array('user_id' => $user['id'])) ?>
</li>
<?php endif ?>
<?php if ($this->user->hasAccess('UserViewController', 'integrations')): ?>
<li>
<?= $this->modal->medium('rocket', t('Integrations'), 'UserViewController', 'integrations', array('user_id' => $user['id'])) ?>
</li>
<?php endif ?>
<?php if ($this->user->hasAccess('UserApiAccessController', 'show')): ?>
<li>
<?= $this->modal->medium('cloud', t('API Access'), 'UserApiAccessController', 'show', array('user_id' => $user['id'])) ?>
</li>
<?php endif ?>
<?php if ($this->user->isAdmin()): ?>
<li>
<?= $this->url->icon('dashboard', t('User dashboard'), 'DashboardController', 'show', array('user_id' => $user['id'])) ?>
</li>
<?php endif ?>
<?php if ($this->user->isAdmin() || $this->user->isCurrentUser($user['id'])): ?>
<?php if ($this->user->hasAccess('UserViewController', 'timesheet')): ?>
<li>
<?= $this->modal->medium('clock-o',t('Time tracking'), 'UserViewController', 'timesheet', array('user_id' => $user['id'])) ?>
</li>
<?php endif ?>
<?php if ($this->user->hasAccess('UserViewController', 'lastLogin')): ?>
<li>
<?= $this->modal->medium('id-badge', t('Last logins'), 'UserViewController', 'lastLogin', array('user_id' => $user['id'])) ?>
</li>
<?php endif ?>
<?php if ($this->user->hasAccess('UserViewController', 'sessions') && REMEMBER_ME_AUTH): ?>
<li>
<?= $this->modal->medium('database', t('Persistent connections'), 'UserViewController', 'sessions', array('user_id' => $user['id'])) ?>
</li>
<?php endif ?>
<?php if ($this->user->hasAccess('UserViewController', 'passwordReset')): ?>
<li>
<?= $this->modal->medium('legal', t('Password reset history'), 'UserViewController', 'passwordReset', array('user_id' => $user['id'])) ?>
</li>
<?php endif ?>
<?php endif ?>
<?php if ($user['is_active'] == 1 && $this->user->hasAccess('UserStatusController', 'disable') && ! $this->user->isCurrentUser($user['id'])): ?>
<li>
<?= $this->modal->confirm('times', t('Disable'), 'UserStatusController', 'confirmDisable', array('user_id' => $user['id'])) ?>
</li>
<?php endif ?>
<?php if ($user['is_active'] == 0 && $this->user->hasAccess('UserStatusController', 'enable') && ! $this->user->isCurrentUser($user['id'])): ?>
<li>
<?= $this->modal->confirm('check-square-o', t('Enable'), 'UserStatusController', 'confirmEnable', array('user_id' => $user['id'])) ?>
</li>
<?php endif ?>
<?php if ($this->user->hasAccess('UserStatusController', 'remove') && ! $this->user->isCurrentUser($user['id'])): ?>
<li>
<?= $this->modal->confirm('trash-o', t('Remove'), 'UserStatusController', 'confirmRemove', array('user_id' => $user['id'])) ?>
</li>
<?php endif ?>
</ul>
</div>
+13
View File
@@ -0,0 +1,13 @@
<div class="table-list-header">
<div class="table-list-header-count">
<?php if ($paginator->getTotal() > 1): ?>
<?= t('%d users', $paginator->getTotal()) ?>
<?php else: ?>
<?= t('%d user', $paginator->getTotal()) ?>
<?php endif ?>
</div>
<div class="table-list-header-menu">
<?= $this->render('user_list/sort_menu', array('paginator' => $paginator)) ?>
</div>
</div>
+51
View File
@@ -0,0 +1,51 @@
<div class="page-header">
<?php if ($this->user->hasAccess('UserCreationController', 'show')): ?>
<ul>
<li>
<?= $this->modal->medium('plus', t('New user'), 'UserCreationController', 'show') ?>
</li>
<li>
<?= $this->modal->medium('paper-plane', t('Invite people'), 'UserInviteController', 'show') ?>
</li>
<li>
<?= $this->modal->medium('upload', t('Import'), 'UserImportController', 'show') ?>
</li>
<li>
<?= $this->url->icon('users', t('View all groups'), 'GroupListController', 'index') ?>
</li>
</ul>
<?php endif ?>
</div>
<div class="margin-bottom">
<form method="get" action="<?= $this->url->dir() ?>" class="search">
<?= $this->form->hidden('controller', array('controller' => 'UserListController')) ?>
<?= $this->form->hidden('action', array('action' => 'search')) ?>
<?= $this->form->text('search', $values, array(), array('placeholder="'.t('Search').'"', 'aria-label="'.t('Search').'"')) ?>
</form>
</div>
<?php if ($paginator->isEmpty()): ?>
<p class="alert"><?= t('No users found.') ?></p>
<?php elseif (! $paginator->isEmpty()): ?>
<div class="table-list">
<?= $this->render('user_list/header', array('paginator' => $paginator)) ?>
<?php foreach ($paginator->getCollection() as $user): ?>
<div class="table-list-row table-border-left">
<?= $this->render('user_list/user_title', array(
'user' => $user,
)) ?>
<?= $this->render('user_list/user_details', array(
'user' => $user,
)) ?>
<?= $this->render('user_list/user_icons', array(
'user' => $user,
)) ?>
</div>
<?php endforeach ?>
</div>
<?= $paginator ?>
<?php endif ?>
+29
View File
@@ -0,0 +1,29 @@
<div class="dropdown">
<a href="#" class="dropdown-menu dropdown-menu-link-icon"><strong><?= t('Sort') ?> <i class="fa fa-caret-down"></i></strong></a>
<ul>
<li>
<?= $paginator->order(t('User ID'), \Kanboard\Model\UserModel::TABLE.'.id') ?>
</li>
<li>
<?= $paginator->order(t('Username'), \Kanboard\Model\UserModel::TABLE.'.username') ?>
</li>
<li>
<?= $paginator->order(t('Name'), \Kanboard\Model\UserModel::TABLE.'.name') ?>
</li>
<li>
<?= $paginator->order(t('Email'), \Kanboard\Model\UserModel::TABLE.'.email') ?>
</li>
<li>
<?= $paginator->order(t('Account type'), \Kanboard\Model\UserModel::TABLE.'.is_ldap_user') ?>
</li>
<li>
<?= $paginator->order(t('Role'), \Kanboard\Model\UserModel::TABLE.'.role') ?>
</li>
<li>
<?= $paginator->order(t('Two Factor'), \Kanboard\Model\UserModel::TABLE.'.twofactor_activated') ?>
</li>
<li>
<?= $paginator->order(t('Status'), \Kanboard\Model\UserModel::TABLE.'.is_active') ?>
</li>
</ul>
</div>
+26
View File
@@ -0,0 +1,26 @@
<div class="table-list-details table-list-details-with-icons">
<span class="table-list-category">
<?= $this->user->getRoleName($user['role']) ?>
</span>
<?php if (! empty($user['name'])): ?>
<span><?= $this->text->e($user['username']) ?></span>
<?php endif ?>
<?php if (! empty($user['email'])): ?>
<span><a href="mailto:<?= $this->text->e($user['email']) ?>"><?= $this->text->e($user['email']) ?></a></span>
<?php endif ?>
<?php if (SHOW_GROUP_MEMBERSHIPS_IN_USERLIST): ?>
<?php $users_groups = $this->user->getUsersGroupNames($user['id']); ?>
<?php $groups_list_tooltip = t('%s is a member of the following group(s): %s', $user['name'] ?: $user['username'], implode(', ', $users_groups['full_list'])); ?>
<?php if ($users_groups['has_groups']): ?>
<span title="<?= $groups_list_tooltip ?>" role="img" aria-label="<?= $groups_list_tooltip ?>">
<i class="fa fa-fw fa-group" aria-hidden="true"></i><?= $this->text->implode(', ', $users_groups['limited_list']) ?>
<?php if ($users_groups['shown'] != $users_groups['total']): ?>
&nbsp;<?= t('%d/%d group(s) shown', $users_groups['shown'], $users_groups['total']) ?>
<?php endif ?>
</span>
<?php endif ?>
<?php endif ?>
</div>
+59
View File
@@ -0,0 +1,59 @@
<div class="table-list-icons">
<?php if ($user['notifications_enabled'] == 1): ?>
<span title="<?= t('Notifications are activated') ?>">
<i class="fa fa-bell-o" role="img" aria-label="<?= t('Notifications are activated') ?>"></i>
</span>
<?php endif ?>
<?php if ($user['notifications_enabled'] == 0): ?>
<span title="<?= t('Notifications are disabled') ?>">
<i class="fa fa-bell-slash-o" role="img" aria-label="<?= t('Notifications are disabled') ?>"></i>
</span>
<?php endif ?>
<?php if ($user['twofactor_activated'] == 1): ?>
<span title="<?= t('Two factor authentication enabled') ?>">
<i class="fa fa-shield" role="img" aria-label="<?= t('Two factor authentication enabled') ?>"></i>
</span>
<?php endif ?>
<?php if ($user['is_ldap_user'] == 1): ?>
<span title="<?= t('Remote user') ?>">
<i class="fa fa-cloud" role="img" aria-label="<?= t('Remote user') ?>"></i>
</span>
<?php endif ?>
<?php if ($user['lock_expiration_date'] != 0): ?>
<?php $aria_label = t('Account locked until:') . ' ' . $this->dt->datetime($user['lock_expiration_date']); ?>
<span title="<?= $aria_label ?>">
<i class="fa fa-lock" role="img" aria-label="<?= $aria_label ?>"></i>
</span>
<?php endif ?>
<?php if ($user['role'] == 'app-admin'): ?>
<?php $aria_label = $this->user->getRoleName($user['role']); ?>
<span title="<?= $aria_label ?>">
<i class="fa fa-star" role="img" aria-label="<?= $aria_label ?>"></i>
</span>
<?php endif ?>
<?php if ($user['role'] == 'app-manager'): ?>
<?php $aria_label = $this->user->getRoleName($user['role']); ?>
<span title="<?= $aria_label ?>">
<i class="fa fa-star-half-o" role="img" aria-label="<?= $aria_label ?>"></i>
</span>
<?php endif ?>
<?php if ($user['role'] == 'app-user'): ?>
<?php $aria_label = $this->user->getRoleName($user['role']); ?>
<span title="<?= $aria_label ?>">
<i class="fa fa-star-o" role="img" aria-label="<?= $aria_label ?>"></i>
</span>
<?php endif ?>
<?php if ($user['is_active'] == 0): ?>
<span title="<?= t('User disabled') ?>">
<i class="fa fa-ban" role="img" aria-label="<?= t('User disabled') ?>"></i>
</span>
<?php endif ?>
</div>
+14
View File
@@ -0,0 +1,14 @@
<div>
<?= $this->render('user_list/dropdown', array('user' => $user)) ?>
<span class="table-list-title <?= $user['is_active'] == 0 ? 'status-closed' : '' ?>">
<?= $this->avatar->small(
$user['id'],
$user['username'],
$user['name'],
$user['email'],
$user['avatar_path'],
'avatar-inline'
) ?>
<?= $this->url->link($this->text->e($user['name'] ?: $user['username']), 'UserViewController', 'show', array('user_id' => $user['id'])) ?>
</span>
</div>