Handle multiple avatar sizes

This commit is contained in:
Frederic Guillot 2016-03-19 13:45:41 -04:00
parent fe85d83621
commit 2e320ceead
9 changed files with 110 additions and 32 deletions

View File

@ -35,6 +35,17 @@ class UserSession extends Base
$this->sessionStorage->postAuthenticationValidated = false;
}
/**
* Get user properties
*
* @access public
* @return array
*/
public function getAll()
{
return $this->sessionStorage->user;
}
/**
* Get user application role
*

View File

@ -0,0 +1,64 @@
<?php
namespace Kanboard\Helper;
use Kanboard\Core\Base;
/**
* Avatar Helper
*
* @package helper
* @author Frederic Guillot
*/
class AvatarHelper extends Base
{
/**
* Render user avatar
*
* @access public
* @param string $user_id
* @param string $username
* @param string $name
* @param string $email
* @param string $css
* @param int $size
* @return string
*/
public function render($user_id, $username, $name, $email, $css = 'avatar-left', $size = 48)
{
if (empty($user_id) && empty($username)) {
$html = $this->avatarManager->renderDefault($size);
} else {
$html = $this->avatarManager->render($user_id, $username, $name, $email, $size);
}
return '<div class="avatar avatar-'.$size.' '.$css.'">'.$html.'</div>';
}
/**
* Render small user avatar
*
* @access public
* @param string $user_id
* @param string $username
* @param string $name
* @param string $email
* @return string
*/
public function small($user_id, $username, $name, $email, $css = '')
{
return $this->render($user_id, $username, $name, $email, $css, 20);
}
/**
* Get a small avatar for the current user
*
* @access public
* @return string
*/
public function currentUserSmall($css = '')
{
$user = $this->userSession->getAll();
return $this->small($user['id'], $user['username'], $user['name'], $user['email'], $css);
}
}

View File

@ -156,27 +156,6 @@ class UserHelper extends Base
*/
public function getFullname(array $user = array())
{
return $this->user->getFullname(empty($user) ? $this->sessionStorage->user : $user);
}
/**
* Display avatar
*
* @access public
* @param string $user_id
* @param string $username
* @param string $name
* @param string $email
* @return string
*/
public function avatar($user_id, $username, $name, $email)
{
if (empty($user_id) && empty($username)) {
$html = $this->avatarManager->renderDefault(48);
} else {
$html = $this->avatarManager->render($user_id, $username, $name, $email, 48);
}
return '<div class="avatar">'.$html.'</div>';
return $this->user->getFullname(empty($user) ? $this->userSession->getAll() : $user);
}
}

View File

@ -26,6 +26,7 @@ class HelperProvider implements ServiceProviderInterface
$container['helper']->register('text', '\Kanboard\Helper\TextHelper');
$container['helper']->register('url', '\Kanboard\Helper\UrlHelper');
$container['helper']->register('user', '\Kanboard\Helper\UserHelper');
$container['helper']->register('avatar', '\Kanboard\Helper\AvatarHelper');
$container['template'] = new Template($container['helper']);

View File

@ -1,6 +1,6 @@
<div class="comment <?= isset($preview) ? 'comment-preview' : '' ?>" id="comment-<?= $comment['id'] ?>">
<?= $this->user->avatar($comment['user_id'], $comment['username'], $comment['name'], $comment['email']) ?>
<?= $this->avatar->render($comment['user_id'], $comment['username'], $comment['name'], $comment['email']) ?>
<div class="comment-title">
<?php if (! empty($comment['username'])): ?>

View File

@ -17,7 +17,7 @@
&nbsp;<?= $this->dt->datetime($event['date_creation']) ?>
</p>
<div class="activity-content">
<?= $this->user->avatar(
<?= $this->avatar->render(
$event['creator_id'],
$event['author_username'],
$event['author_name'],

View File

@ -58,7 +58,7 @@
<?php endif ?>
<div class="dropdown">
<a href="#" class="dropdown-menu dropdown-menu-link-icon"><i class="fa fa-user fa-fw"></i><i class="fa fa-caret-down"></i></a>
<a href="#" class="dropdown-menu dropdown-menu-link-icon"><?= $this->avatar->currentUserSmall('avatar-inline') ?><i class="fa fa-caret-down"></i></a>
<ul>
<li class="no-hover"><strong><?= $this->text->e($this->user->getFullname()) ?></strong></li>
<li>

File diff suppressed because one or more lines are too long

View File

@ -1,17 +1,40 @@
.avatar {
.avatar img {
vertical-align: bottom;
}
.avatar-left {
float: left;
margin-right: 10px;
}
.avatar img,
.avatar div {
.avatar-inline {
display: inline-block;
margin-right: 3px;
}
.avatar-48 img,
.avatar-48 div {
border-radius: 30px;
}
.avatar-48 .avatar-letter {
line-height: 48px;
width: 48px;
font-size: 25px;
}
.avatar-20 img,
.avatar-20 div {
border-radius: 10px;
}
.avatar-20 .avatar-letter {
line-height: 20px;
width: 20px;
font-size: 11px;
}
.avatar-letter {
color: #fff;
line-height: 48px;
width: 48px;
font-size: 25px;
text-align: center;
}