Added unread messages as global var
This commit is contained in:
parent
865873c099
commit
7acd34ba74
|
@ -72,7 +72,6 @@ $includeFiles = [
|
|||
__DIR__ . '/../includes/pages/admin_shifts.php',
|
||||
__DIR__ . '/../includes/pages/admin_user.php',
|
||||
__DIR__ . '/../includes/pages/guest_login.php',
|
||||
__DIR__ . '/../includes/pages/user_messages.php',
|
||||
__DIR__ . '/../includes/pages/user_myshifts.php',
|
||||
__DIR__ . '/../includes/pages/user_settings.php',
|
||||
__DIR__ . '/../includes/pages/user_shifts.php',
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
<?php
|
||||
|
||||
use Engelsystem\Controllers\MessagesController;
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
function user_unread_messages()
|
||||
{
|
||||
$count = app()->make(MessagesController::class)
|
||||
->numberOfUnreadMessages();
|
||||
|
||||
return $count > 0 ? ' <span class="badge bg-danger">' . $count . '</span>' : '';
|
||||
}
|
|
@ -44,7 +44,12 @@
|
|||
{% endif %}
|
||||
|
||||
{% if is_user() and has_permission_to('user_messages') %}
|
||||
{{ _self.toolbar_item(menuUserMessages(), url('messages'), 'messages', 'envelope') }}
|
||||
{{ _self.toolbar_item(
|
||||
user_messages ? '<span class="badge bg-danger">' ~ user_messages ~ '</span>' : '',
|
||||
url('messages'),
|
||||
'messages',
|
||||
'envelope'
|
||||
) }}
|
||||
{% endif %}
|
||||
|
||||
{{ menuUserHints() }}
|
||||
|
|
|
@ -202,17 +202,6 @@ class MessagesController extends BaseController
|
|||
return $this->redirect->to('/messages/' . $otherUserId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the overall unread messages of the current user.
|
||||
*/
|
||||
public function numberOfUnreadMessages(): int
|
||||
{
|
||||
return $this->auth->user()
|
||||
->messagesReceived()
|
||||
->where('read', false)
|
||||
->count();
|
||||
}
|
||||
|
||||
/**
|
||||
* The number of unread messages per conversation of the current user.
|
||||
* @return Collection of unread message amounts. Each object with key=other user, value=amount of unread messages
|
||||
|
|
|
@ -36,11 +36,16 @@ class Globals extends TwigExtension implements GlobalsInterface
|
|||
{
|
||||
$user = $this->auth->user();
|
||||
$themes = config('themes');
|
||||
$userMessages = null;
|
||||
|
||||
if ($user === null) {
|
||||
$themeId = config('theme');
|
||||
} else {
|
||||
$themeId = $user->settings->theme;
|
||||
$userMessages = $user
|
||||
->messagesReceived()
|
||||
->where('read', false)
|
||||
->count();
|
||||
}
|
||||
|
||||
$query = $this->request->query->get('theme');
|
||||
|
@ -55,10 +60,11 @@ class Globals extends TwigExtension implements GlobalsInterface
|
|||
$theme = $themes[$themeId];
|
||||
|
||||
return [
|
||||
'user' => $user ?? [],
|
||||
'request' => $this->request,
|
||||
'themeId' => $themeId,
|
||||
'theme' => $theme,
|
||||
'user' => $user ?? [],
|
||||
'user_messages' => $userMessages,
|
||||
'request' => $this->request,
|
||||
'themeId' => $themeId,
|
||||
'theme' => $theme,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,7 +28,6 @@ class Legacy extends TwigExtension
|
|||
return [
|
||||
new TwigFunction('menu', 'make_navigation', $isSafeHtml),
|
||||
new TwigFunction('menuUserShiftState', 'User_shift_state_render', $isSafeHtml),
|
||||
new TwigFunction('menuUserMessages', 'user_unread_messages', $isSafeHtml),
|
||||
new TwigFunction('menuUserHints', 'header_render_hints', $isSafeHtml),
|
||||
new TwigFunction('menuUserSubmenu', 'make_user_submenu', $isSafeHtml),
|
||||
new TwigFunction('page', [$this, 'getPage']),
|
||||
|
|
|
@ -519,43 +519,6 @@ class MessagesControllerTest extends ControllerTest
|
|||
$this->assertEquals(0, count(Message::whereId($msg->id)->get()));
|
||||
}
|
||||
|
||||
/**
|
||||
* @testdox NumberOfUnreadMessages: withNoMessages -> returns0
|
||||
* @covers \Engelsystem\Controllers\MessagesController::numberOfUnreadMessages
|
||||
*/
|
||||
public function testNumberOfUnreadMessagesWithNoMessagesReturns0()
|
||||
{
|
||||
$this->assertEquals(0, $this->controller->numberOfUnreadMessages());
|
||||
}
|
||||
|
||||
/**
|
||||
* @testdox NumberOfUnreadMessages: withMessagesNotToMe -> messagesNotToMeAreIgnored
|
||||
* @covers \Engelsystem\Controllers\MessagesController::numberOfUnreadMessages
|
||||
*/
|
||||
public function testNumberOfUnreadMessagesWithMessagesNotToMeMessagesNotToMeAreIgnored()
|
||||
{
|
||||
$userC = User::factory(['name' => 'c'])->create();
|
||||
|
||||
$this->createMessage($this->userA, $this->userB, 'a>b', $this->now);
|
||||
$this->createMessage($this->userB, $userC, 'b>c', $this->now);
|
||||
$this->assertEquals(0, $this->controller->numberOfUnreadMessages());
|
||||
}
|
||||
|
||||
/**
|
||||
* @testdox NumberOfUnreadMessages: withMessages -> returnsSumOfUnreadMessagesSentToMe
|
||||
* @covers \Engelsystem\Controllers\MessagesController::numberOfUnreadMessages
|
||||
*/
|
||||
public function testNumberOfUnreadMessagesWithMessagesReturnsSumOfUnreadMessagesSentToMe()
|
||||
{
|
||||
$userC = User::factory(['name' => 'c'])->create();
|
||||
|
||||
$this->createMessage($this->userB, $this->userA, 'b>a1', $this->now);
|
||||
$this->createMessage($this->userB, $this->userA, 'b>a2', $this->now);
|
||||
$this->createMessage($userC, $this->userA, 'c>a', $this->now);
|
||||
|
||||
$this->assertEquals(3, $this->controller->numberOfUnreadMessages());
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup environment
|
||||
*/
|
||||
|
|
|
@ -75,7 +75,7 @@ abstract class ExtensionTest extends TestCase
|
|||
*/
|
||||
protected function assertGlobalsExists($name, $value, $globals)
|
||||
{
|
||||
if (isset($globals[$name])) {
|
||||
if (array_key_exists($name, $globals)) {
|
||||
$this->assertArraySubset([$name => $value], $globals);
|
||||
|
||||
return;
|
||||
|
|
|
@ -51,6 +51,7 @@ class GlobalsTest extends ExtensionTest
|
|||
// No user
|
||||
$globals = $extension->getGlobals();
|
||||
$this->assertGlobalsExists('user', [], $globals);
|
||||
$this->assertGlobalsExists('user_messages', null, $globals);
|
||||
$this->assertGlobalsExists('request', $request, $globals);
|
||||
$this->assertGlobalsExists('themeId', 23, $globals);
|
||||
$this->assertGlobalsExists('theme', $theme2, $globals);
|
||||
|
@ -58,6 +59,7 @@ class GlobalsTest extends ExtensionTest
|
|||
// User
|
||||
$globals = $extension->getGlobals();
|
||||
$this->assertGlobalsExists('user', $user, $globals);
|
||||
$this->assertGlobalsExists('user_messages', 0, $globals);
|
||||
$this->assertGlobalsExists('themeId', 42, $globals);
|
||||
$this->assertGlobalsExists('theme', $theme, $globals);
|
||||
|
||||
|
|
|
@ -22,7 +22,6 @@ class LegacyTest extends ExtensionTest
|
|||
|
||||
$this->assertExtensionExists('menu', 'make_navigation', $functions, $isSafeHtml);
|
||||
$this->assertExtensionExists('menuUserShiftState', 'User_shift_state_render', $functions, $isSafeHtml);
|
||||
$this->assertExtensionExists('menuUserMessages', 'user_unread_messages', $functions, $isSafeHtml);
|
||||
$this->assertExtensionExists('menuUserHints', 'header_render_hints', $functions, $isSafeHtml);
|
||||
$this->assertExtensionExists('menuUserSubmenu', 'make_user_submenu', $functions, $isSafeHtml);
|
||||
$this->assertExtensionExists('page', [$extension, 'getPage'], $functions);
|
||||
|
|
Loading…
Reference in New Issue