Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/birthday announcement #259

Merged
merged 8 commits into from
Sep 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
runs-on: self-hosted
steps:
- name: "Checkout"
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: "Drop vendor"
run: rm -fr vendor
Expand Down
4 changes: 2 additions & 2 deletions app/lang/cs/team.cs.neon
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,9 @@ street: Ulice
city: Město
zipCode: PSČ
hasNamedayToday: %name% slaví dnes svátek
hasBirthdayToday: %name% slaví dnes %year% narozeniny
hasBirthdayToday: %name% slaví dnes %year%. narozeniny
hasNamedayTommorow: %name% slaví zítra svátek
hasBirthdayTommorow: %name% slaví zítra %year% narozeniny
hasBirthdayTommorow: %name% slaví zítra %year%. narozeniny
currentlyOnline: Právě online
lastLogin: Poslední přihlášení
nobodyIsOnline: Nikdo není online
Expand Down
2 changes: 1 addition & 1 deletion app/module/admin/presenter/api/AdminSecuredPresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
*/
class AdminSecuredPresenter extends BasePresenter
{
/** @inject */
#[\Nette\DI\Attributes\Inject]
public AdminManager $adminManager;

protected function startup(): void
Expand Down
2 changes: 1 addition & 1 deletion app/module/admin/presenter/api/MigratePresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
*/
class MigratePresenter extends AdminSecuredPresenter
{
/** @inject */
#[\Nette\DI\Attributes\Inject]
public MigrationManager $migrationManager;

public function actionDefault(): void
Expand Down
4 changes: 2 additions & 2 deletions app/module/attendance/presenter/api/StatusPresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@
*/
class StatusPresenter extends SecuredPresenter
{
/** @inject */
#[\Nette\DI\Attributes\Inject]
public StatusManager $statusManager;

/** @inject */
#[\Nette\DI\Attributes\Inject]
public StatusSetManager $statusSetManager;

public function actionStatus(?int $resourceId, ?int $subResourceId): void
Expand Down
4 changes: 2 additions & 2 deletions app/module/authentication/presenter/api/DefaultPresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@
*/
class DefaultPresenter extends BasePresenter
{
/** @inject */
#[\Nette\DI\Attributes\Inject]
public UserManager $userManager;

/** @inject */
#[\Nette\DI\Attributes\Inject]
public MultiaccountManager $maManager;

public function actionIn($username, $password): void
Expand Down
2 changes: 1 addition & 1 deletion app/module/authentication/presenter/api/IsPresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
*/
class IsPresenter extends BasePresenter
{
/** @inject */
#[\Nette\DI\Attributes\Inject]
public TeamManager $teamManager;

public function actionDefault(): void
Expand Down
4 changes: 2 additions & 2 deletions app/module/authorization/presenter/api/DefaultPresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@
*/
class DefaultPresenter extends BasePresenter
{
/** @inject */
#[\Nette\DI\Attributes\Inject]
public AuthorizationManager $AuthorizationManager;

/** @inject */
#[\Nette\DI\Attributes\Inject]
public UserManager $userManager;

public function actionDefault($resourceId): void
Expand Down
2 changes: 1 addition & 1 deletion app/module/autotest/presenter/front/DefaultPresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class DefaultPresenter extends BasePresenter
{
public const PHP_CMD_PARAM = "php_cmd";

/** @inject */
#[\Nette\DI\Attributes\Inject]
public TestsManager $testsManager;

public function startup(): void
Expand Down
5 changes: 5 additions & 0 deletions app/module/core/component/Navbar.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
use Nette\Http\Request;
use Nette\Security\User;
use Nette\Utils\DateTime;
use Tymy\Module\Core\Helper\ArrayHelper;
use Tymy\Module\Core\Helper\StringHelper;
use Tymy\Module\Core\Presenter\Front\SecuredPresenter;
use Tymy\Module\Debt\Manager\DebtManager;
Expand Down Expand Up @@ -58,6 +59,10 @@ private function initDebts(): void
private function initPlayers(): void
{
$users = $this->userManager->getList();
$this->template->birthdayToday = ArrayHelper::filter($users, "hasBirthdayToday", true);
$this->template->birthdayTommorow = ArrayHelper::filter($users, "hasBirthdayTommorow", true);
$this->template->namedayToday = ArrayHelper::filter($users, "hasNamedayToday", true);
$this->template->namedayTommorow = ArrayHelper::filter($users, "hasNamedayTommorow", true);
$this->template->counts = $this->userManager->getCounts($users);
$this->template->playersWarnings = $this->tymyUser->getWarnings();
$this->template->inits = $this->user->isAllowed((string) $this->user->getId(), "SYS:SEE_INITS") ? $this->template->counts["INIT"] : 0;
Expand Down
16 changes: 15 additions & 1 deletion app/module/core/component/templates/blocks/team.latte
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,14 @@
{if ($playersWarnings + $inits) > 0}
<span class="badge badge-pill {if $playersWarnings > 0}badge-danger{else}badge-primary{/if} badge-new">{$playersWarnings + $inits}</span>
{/if}
<a class="nav-link" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><i class="fa fa-users" aria-hidden="true"></i> {_team.team,1}</a>
<a class="nav-link" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false" {if $birthdayToday || $birthdayTommorow || $namedayToday || $namedayTommorow}title="Někdo slaví"{/if}>
{if $birthdayToday || $birthdayTommorow || $namedayToday || $namedayTommorow}
<i class="fas fa-birthday-cake {if $birthdayToday || $namedayToday}text-warning{else}text-info{/if}"></i>
{else}
<i class="fa fa-users" aria-hidden="true"></i>
{/if}
{_team.team,1}
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
<a class="dropdown-item" href="{plink :Team:Player: $me->getWebName()}">{$me->getDisplayName()} <span class="badge badge-danger" n:if="$me->getWarnings()">{$me->getWarnings()}</span></a>
<div class="dropdown-divider"></div>
Expand All @@ -15,5 +22,12 @@
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="{plink :Team:Default:jerseys}"><i class="fas fa-tshirt" aria-hidden="true"></i> {_team.jerseyList}</a>
<a n:if="$user->isAllowed((string) $user->getId(), 'SYS:USR_CREATE')" class="dropdown-item" href="{plink :Team:Default:invitation}"><i class="fa-solid fa-envelope-open-text"></i> {_team.invitation, 2}</a>
{if $birthdayToday || $birthdayTommorow || $namedayToday || $namedayTommorow}
<div class="dropdown-divider"></div>
<a n:foreach="$birthdayToday as $birthdayTodayUser" class="dropdown-item" href="{plink :Team:Player: $birthdayTodayUser->getWebName()}" title="{_team.hasBirthdayToday, [name: $birthdayTodayUser->getDisplayName(), year: $birthdayTodayUser->getYearsOld()]}"><i class="fas fa-birthday-cake text-warning"></i> {$birthdayTodayUser->getDisplayName()}</a>
<a n:foreach="$birthdayTommorow as $birthdayTommorowUser" class="dropdown-item" href="{plink :Team:Player: $birthdayTommorowUser->getWebName()}" title="{_team.hasBirthdayTommorow, [name: $birthdayTommorowUser->getDisplayName(), year: $birthdayTommorowUser->getYearsOld()]}"><i class="fas fa-birthday-cake text-info"></i> {$birthdayTommorowUser->getDisplayName()}</a>
<a n:foreach="$namedayToday as $namedayTodayUser" class="dropdown-item" href="{plink :Team:Player: $namedayTodayUser->getWebName()}" title="{_team.hasNamedayToday, [name: $namedayTodayUser->getDisplayName()]}"><i class="fas fa-birthday-cake text-warning"></i> {$namedayTodayUser->getDisplayName()}</a>
<a n:foreach="$namedayTommorow as $namedayTommorowUser" class="dropdown-item" href="{plink :Team:Player: $namedayTommorowUser->getWebName()}" title="{_team.hasNamedayTommorow, [name: $namedayTommorowUser->getDisplayName()]}"><i class="fas fa-birthday-cake text-info"></i> {$namedayTommorowUser->getDisplayName()}</a>
{/if}
</div>
</li>
8 changes: 4 additions & 4 deletions app/module/core/presenter/RootPresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,16 @@ abstract class RootPresenter extends Presenter

protected Team $team;

/** @inject */
#[\Nette\DI\Attributes\Inject]
public Translator $translator;

/** @inject */
#[\Nette\DI\Attributes\Inject]
public TeamManager $teamManager;

/** @inject */
#[\Nette\DI\Attributes\Inject]
public UserManager $userManager;

/** @inject */
#[\Nette\DI\Attributes\Inject]
public Storage $cacheStorage;
protected Cache $teamCache;
protected ?User $tymyUser;
Expand Down
6 changes: 3 additions & 3 deletions app/module/core/presenter/api/BasePresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,15 @@
*/
class BasePresenter extends RootPresenter
{
/** @inject */
#[\Nette\DI\Attributes\Inject]
public Responder $responder;
private Explorer $mainDatabase;
protected ?ActiveRow $resourceRow = null;
protected ?ActiveRow $subResourceRow = null;
protected BaseManager $manager;
/** @inject */
#[\Nette\DI\Attributes\Inject]
public HttpRequest $httpRequest;
/** @inject */
#[\Nette\DI\Attributes\Inject]
public HttpResponse $httpResponse;

/** @var mixed */
Expand Down
18 changes: 11 additions & 7 deletions app/module/core/presenter/front/DefaultPresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
namespace Tymy\Module\Core\Presenter\Front;

use Nette\Bridges\ApplicationLatte\Template;
use Nette\DI\Attributes\Inject;
use Tymy\Module\Core\Helper\ArrayHelper;
use Tymy\Module\Debt\Manager\DebtManager;
use Tymy\Module\Discussion\Manager\DiscussionManager;
use Tymy\Module\Event\Manager\EventManager;
Expand All @@ -12,27 +14,29 @@
use Tymy\Module\News\Manager\NewsManager;
use Tymy\Module\User\Manager\UserManager;

use function bdump;

class DefaultPresenter extends SecuredPresenter
{
/** @inject */
#[Inject]
public EventManager $eventManager;

/** @inject */
#[Inject]
public UserManager $userManager;

/** @inject */
#[Inject]
public DebtManager $debtManager;

/** @inject */
#[Inject]
public NewsManager $newsManager;

/** @inject */
#[Inject]
public DiscussionManager $discussionManager;

/** @inject */
#[Inject]
public EventTypeManager $eventTypeManager;

/** @inject */
#[Inject]
public MultiaccountManager $multiaccountManager;

public function beforeRender(): void
Expand Down
16 changes: 8 additions & 8 deletions app/module/core/presenter/front/SecuredPresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,28 +27,28 @@ class SecuredPresenter extends BasePresenter
{
protected $levelCaptions;

/** @inject */
#[\Nette\DI\Attributes\Inject]
public PollManager $pollManager;

/** @inject */
#[\Nette\DI\Attributes\Inject]
public DiscussionManager $discussionManager;

/** @inject */
#[\Nette\DI\Attributes\Inject]
public EventManager $eventManager;

/** @inject */
#[\Nette\DI\Attributes\Inject]
public EventTypeManager $eventTypeManager;

/** @inject */
#[\Nette\DI\Attributes\Inject]
public DebtManager $debtManager;

/** @inject */
#[\Nette\DI\Attributes\Inject]
public UserManager $userManager;

/** @inject */
#[\Nette\DI\Attributes\Inject]
public TeamManager $teamManager;

/** @inject */
#[\Nette\DI\Attributes\Inject]
public MultiaccountManager $multiaccountManager;
public array $accessibleSettings = [];

Expand Down
96 changes: 8 additions & 88 deletions app/module/core/presenter/templates/Default/default.latte
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
<script src="{$publicPath}/resources/fullcalendar/locale/{$locale}.js?ver={$appver}"></script>
<script>
$(document).ready(function () {
var defaultView = (localStorage.getItem("fcDefaultView") != null ? localStorage.getItem("fcDefaultView") : "month");
var defaultView = (localStorage.getItem("fcDefaultView") != null ? localStorage.getItem("fcDefaultView") : "month");
var defaultStartDate = (localStorage.getItem("fcDefaultStartDate") != null ? moment(localStorage.getItem("fcDefaultStartDate")) : moment());
$('#calendar').fullCalendar({
defaultView: defaultView,
defaultView: defaultView,
locale: locale,
contentHeight: 350,
fixedWeekCount: false,
Expand Down Expand Up @@ -51,7 +51,7 @@
}
}
});
$('#calendar').fullCalendar('gotoDate', defaultStartDate);
$('#calendar').fullCalendar('gotoDate', defaultStartDate);
$('#calendar DIV.fc-header-toolbar').addClass("card-header");
$('#calendar DIV.fc-button-group').addClass("btn-group");
$('#calendar DIV.fc-header-toolbar BUTTON').each(function () {
Expand All @@ -66,104 +66,24 @@

<div class="container-fluid container-md homepage">
<div class="row mt-2" n:if="!empty($notices)">
<div class="col">
<div class="alert alert-success alert-dismissible fade show" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<strong class="text-secondary ml-4">{_common.alerts.newsOnTymy}</strong>
<div n:foreach="$notices as $notice"><div class="mt-2"><small>{$notice->getCreated()|date:'j.n.Y'} - </small><strong>{$notice->getCaption()|noescape}</strong></div>{$notice->getDescription()|noescape}</div>
<small class="text-secondary ml-4">{_common.alerts.newsOnTymyFooter} <a href="https://www.tymy.cz/news" target="blank">www.tymy.cz</a></small>
</div>
</div>
{include './parts/notices.latte'}
</div>

<div class="row">
<div class="col-md-5 my-3">
<div class="card sh-box" id='calendar'></div>
<a class="btn btn-sm btn-light btn-light-bordered my-1 d-block" href="{plink :Event:Default:}">{_event.goToEvents} ...</a>
{include './parts/mini-calendar.latte'}
</div>
<div class="col-md-7 my-3">
<div class="card sh-box discussion-box">
<div class="card-header">
<div class="row">
<div class="col"><h4 class="card-title">{_discussion.discussion, 2}</h4></div>
<div class="col col-md-auto text-right">
<button class="btn btn-sm btn-light btn-light-bordered refresh" title="{_common.refresh}" onclick="refresh()" data-href="{link navbar:refresh!}"><i class="fa fa-sync" aria-hidden="true"></i></button>
</div>
</div>
</div>
<div class="card-body">
<div class="row my-2" n:foreach="$discussions as $item" title="{$item->getDescription()}">
<div class="col name" id="discussion-pane-{$item->getId()}">
<span n:class="badge,badge-pill,badge-danger,$item->getNewPosts() == 0 ? d-none">{$item->getNewPosts()}</span>
<a href="{plink :Discussion:Discussion: $item->getWebName()}">{$item->getCaption()}</a>
<span n:if="!$tymyUser->getHideDiscDesc()" class="col-sm-7 dis-description">{$item->getDescription()}</span>
</div>
</div>
</div>
</div>
{include './parts/discussions.latte'}
</div>
</div>

{* Display bar with current events *}
<div class="row">
<div class="col" n:inner-foreach="$currentEvents as $event">
<div class="alert alert-info alert-dismissible fade show" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
{_event.currently}: <a n:href=":Event:Detail: $event->getWebName()" class="alert-link">{$event->getCaption()}</a>
</div>
</div>
{include './parts/current-events.latte'}
</div>

{* Display bar with celebrations *}
<div class="row">
<div class="col" n:inner-foreach="$users as $usr">
{var $nameDay = $usr->getNameDayMonth() && $usr->getNameDayDay() ? date('m-d', strtotime(date('Y').'-'.$usr->getNameDayMonth().'-'.$usr->getNameDayDay())) : null}
{var $bDay = $usr->getBirthDate() ? date('m-d', strtotime($usr->getBirthDate())) : '0-0'}
{var $years = $usr->getBirthDate() ? date('Y') - date('Y', strtotime($usr->getBirthDate())) : '0'}
<div n:if="$usr->getNameDayMonth() > 0 && $usr->getNameDayDay() > 0 && $today==$nameDay" class="alert alert-warning alert-dismissible fade show" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>{$usr->getDisplayName()|namedayToday:$usr->getWebName()|noescape}</div>
<div n:if="$usr->getBirthDate() && $today==$bDay" class="alert alert-warning alert-dismissible fade show" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>{$usr->getDisplayName()|birthdayToday:$usr->getWebName(),$years|noescape}</div>
<div n:if="$usr->getNameDayMonth() > 0 && $usr->getNameDayDay() > 0 && $tommorow==$nameDay" class="alert alert-warning alert-dismissible fade show" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>{$usr->getDisplayName()|namedayTommorow:$usr->getWebName()|noescape}</div>
<div n:if="$usr->getBirthDate() && $tommorow==$bDay" class="alert alert-warning alert-dismissible fade show" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>{$usr->getDisplayName()|birthdayTommorow:$usr->getWebName(),$years|noescape}</div>
</div>
</div>

<div class="row">
<div class="col my-1">
<div class="card sh-box">
<div class="card-header">
<ul class="nav nav-tabs flex-column flex-sm-row card-header-tabs">
<li class="nav-item">
<a class="flex-sm-fill text-sm-center nav-link active" href="#live" data-toggle="tab" role="tab">{_team.currentlyOnline}</a>
</li>
<li class="nav-item">
<a class="flex-sm-fill text-sm-center nav-link" href="#lastLogin" data-toggle="tab" role="tab">{_team.lastLogin}</a>
</li>
</ul>
</div>
<div class="card-body">
<div class="tab-content">
<div class="tab-pane fade show active" id="live" role="tabpanel">
<figure class="figure text-center" style="width: 100px" n:foreach="$liveUsers as $live">
<a href="{plink :Team:Player: $live->getId()}" title="{$live->getCallName()}">
<img src="{$live->getPictureUrl()}" class="figure-img img-fluid rounded avatar" alt="{$live->getCallName()}" />
<figcaption class="figure-caption">{$live->getCallName()}</figcaption>
</a>
</figure>
<h6 class="card-subtitle mb-2 text-muted" n:if="count($liveUsers) == 0">{_team.nobodyIsOnline}</h6>
</div>
<div class="tab-pane fade" id="lastLogin" role="tabpanel">
<figure class="figure text-center" style="width: 100px" n:foreach="$users as $usr">
{var $lastLogin = $usr->getLastLogin() ? ($usr->getLastLogin()|date:'j.n.Y H:i:s') : $neverLogin}
{var $caption = $usr->getLastLogin() ? ($usr->getLastLogin()|lastLogin) : $neverLogin}
<a href="{plink :Team:Player: $usr->getWebName()}" title="{$lastLogin}">
<img src="{$usr->getPictureUrl()}" class="figure-img img-fluid avatar" n:attr="alt => $usr->getFullName() ?: ''"/>
<figcaption class="figure-caption">{$usr->getDisplayName()}</figcaption>
<figcaption class="figure-caption" style="font-size: 70%; display: inline-block">{$caption}</figcaption>
</a>
</figure>
</div>
</div>
</div>
</div>
</div>
{include './parts/footer-tabs.latte'}
</div>
</div>
Loading