Skip to content

Commit

Permalink
Replace the "www" shared training date list with a custom control/com…
Browse files Browse the repository at this point in the history
…ponent

Similar to what I've done in admin but this has fixed just one error 😅
  • Loading branch information
spaze committed Jul 12, 2023
1 parent 13e845f commit f0fc546
Show file tree
Hide file tree
Showing 11 changed files with 88 additions and 30 deletions.
34 changes: 34 additions & 0 deletions site/app/Training/DateList/UpcomingTrainingDatesList.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php
declare(strict_types = 1);

namespace MichalSpacekCz\Training\DateList;

use MichalSpacekCz\Application\UiControl;
use MichalSpacekCz\Training\Dates\UpcomingTrainingDates;
use MichalSpacekCz\Training\FreeSeats;

class UpcomingTrainingDatesList extends UiControl
{

public function __construct(
private readonly UpcomingTrainingDates $upcomingTrainingDates,
private readonly FreeSeats $freeSeats,
private readonly ?string $excludeTraining,
private readonly bool $showLastFreeSeats,
private readonly ?int $venueId = null,
) {
}


public function render(): void
{
$upcomingTrainings = $this->venueId ? $this->upcomingTrainingDates->getPublicUpcomingAtVenue($this->venueId) : $this->upcomingTrainingDates->getPublicUpcoming();
if ($this->excludeTraining) {
unset($upcomingTrainings[$this->excludeTraining]);
}
$this->template->lastFreeSeats = $this->showLastFreeSeats && $this->freeSeats->lastFreeSeatsAnyTraining($upcomingTrainings);
$this->template->upcomingTrainings = $upcomingTrainings;
$this->template->render(__DIR__ . '/upcomingTrainingDatesList.latte');
}

}
11 changes: 11 additions & 0 deletions site/app/Training/DateList/UpcomingTrainingDatesListFactory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php
declare(strict_types = 1);

namespace MichalSpacekCz\Training\DateList;

interface UpcomingTrainingDatesListFactory
{

public function create(?string $excludeTraining, bool $showLastFreeSeats, ?int $venueId = null): UpcomingTrainingDatesList;

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<ul class="vcalendar" id="training-dates">
{foreach $upcomingTrainings as $item}
<li class="vevent">
<a n:href=":Www:Trainings:training $item->getAction()" class="url"><strong class="summary description">{$item->getName()}</strong></a>
<a href="{plink :Www:Trainings:training $item->getAction()}" class="url"><strong class="summary description">{$item->getName()}</strong></a>
{icon calendar class => calendar}
<small n:foreach="$item->getDates() as $date" class="date">
<strong>
Expand Down
16 changes: 9 additions & 7 deletions site/app/Www/Presenters/HomepagePresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
use MichalSpacekCz\Interviews\Interviews;
use MichalSpacekCz\Talks\Talks;
use MichalSpacekCz\Training\CompanyTrainings;
use MichalSpacekCz\Training\Dates\UpcomingTrainingDates;
use MichalSpacekCz\Training\FreeSeats;
use MichalSpacekCz\Training\DateList\UpcomingTrainingDatesList;
use MichalSpacekCz\Training\DateList\UpcomingTrainingDatesListFactory;
use MichalSpacekCz\Training\Trainings;

class HomepagePresenter extends BasePresenter
Expand All @@ -18,28 +18,30 @@ public function __construct(
private readonly Articles $articles,
private readonly Interviews $interviews,
private readonly Talks $talks,
private readonly UpcomingTrainingDates $upcomingTrainingDates,
private readonly Trainings $trainings,
private readonly CompanyTrainings $companyTrainings,
private readonly FreeSeats $freeSeats,
private readonly UpcomingTrainingDatesListFactory $upcomingTrainingDatesListFactory,
) {
parent::__construct();
}


public function renderDefault(): void
{
$upcomingTrainings = $this->upcomingTrainingDates->getPublicUpcoming();
$this->template->pageHeader = 'Michal Špaček';
$this->template->articles = $this->articles->getAll(3);
$this->template->talks = $this->talks->getAll(5);
$this->template->favoriteTalks = $this->talks->getFavorites();
$this->template->upcomingTalks = $this->talks->getUpcoming();
$this->template->upcomingTrainings = $upcomingTrainings;
$this->template->companyTrainings = $this->companyTrainings->getWithoutPublicUpcoming();
$this->template->interviews = $this->interviews->getAll(5);
$this->template->lastFreeSeats = $this->freeSeats->lastFreeSeatsAnyTraining($upcomingTrainings);
$this->template->discontinued = $this->trainings->getAllDiscontinued();
}


protected function createComponentUpcomingDatesList(): UpcomingTrainingDatesList
{
return $this->upcomingTrainingDatesListFactory->create(null, true);
}

}
26 changes: 15 additions & 11 deletions site/app/Www/Presenters/TrainingsPresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@
use MichalSpacekCz\Formatter\TexyFormatter;
use MichalSpacekCz\Training\Applications;
use MichalSpacekCz\Training\CompanyTrainings;
use MichalSpacekCz\Training\DateList\UpcomingTrainingDatesList;
use MichalSpacekCz\Training\DateList\UpcomingTrainingDatesListFactory;
use MichalSpacekCz\Training\Dates\TrainingDate;
use MichalSpacekCz\Training\Dates\TrainingDates;
use MichalSpacekCz\Training\Dates\UpcomingTrainingDates;
use MichalSpacekCz\Training\Exceptions\TrainingApplicationDoesNotExistException;
use MichalSpacekCz\Training\Exceptions\TrainingDoesNotExistException;
use MichalSpacekCz\Training\Files\TrainingFiles;
Expand Down Expand Up @@ -40,7 +41,6 @@ public function __construct(
private readonly TexyFormatter $texyFormatter,
private readonly Applications $trainingApplications,
private readonly TrainingDates $trainingDates,
private readonly UpcomingTrainingDates $upcomingTrainingDates,
private readonly TrainingFiles $trainingFiles,
private readonly Trainings $trainings,
private readonly FreeSeats $freeSeats,
Expand All @@ -49,6 +49,7 @@ public function __construct(
private readonly Reviews $trainingReviews,
private readonly TrainingApplicationFormFactory $trainingApplicationFactory,
private readonly TrainingApplicationPreliminaryFormFactory $trainingApplicationPreliminaryFactory,
private readonly UpcomingTrainingDatesListFactory $upcomingTrainingDatesListFactory,
private readonly CompanyInfo $companyInfo,
private readonly IResponse $httpResponse,
) {
Expand All @@ -58,15 +59,18 @@ public function __construct(

public function renderDefault(): void
{
$upcomingTrainings = $this->upcomingTrainingDates->getPublicUpcoming();
$this->template->pageTitle = $this->translator->translate('messages.title.trainings');
$this->template->upcomingTrainings = $upcomingTrainings;
$this->template->companyTrainings = $this->companyTrainings->getWithoutPublicUpcoming();
$this->template->lastFreeSeats = $this->freeSeats->lastFreeSeatsAnyTraining($upcomingTrainings);
$this->template->discontinued = $this->trainings->getAllDiscontinued();
}


protected function createComponentUpcomingDatesList(): UpcomingTrainingDatesList
{
return $this->upcomingTrainingDatesListFactory->create(null, true);
}


public function actionTraining(string $name): void
{
$this->trainingAction = $name;
Expand Down Expand Up @@ -315,22 +319,22 @@ public function actionSuccess(string $name): void
$this->template->pageTitle = $this->texyFormatter->translate('messages.title.trainingapplication', [$this->training->name]);
$this->template->title = $this->training->name;
$this->template->description = $this->training->description;
$this->template->lastFreeSeats = false;
$this->template->start = $date->getStart();
$this->template->end = $date->getEnd();
$this->template->remote = $date->isRemote();
$this->template->venueCity = $date->getVenueCity();
$this->template->tentative = $date->isTentative();

$upcoming = $this->upcomingTrainingDates->getPublicUpcoming();
unset($upcoming[$name]);
$this->template->upcomingTrainings = $upcoming;

$this->template->form = $this->createComponentApplication();
$this->template->reviews = $this->trainingReviews->getVisibleReviews($this->training->trainingId, 3);
}


protected function createComponentOtherUpcomingDatesList(): UpcomingTrainingDatesList
{
return $this->upcomingTrainingDatesListFactory->create($this->trainingAction, false);
}


/**
* Translated locale parameters for trainings.
*
Expand Down
20 changes: 13 additions & 7 deletions site/app/Www/Presenters/VenuesPresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,21 @@
namespace MichalSpacekCz\Www\Presenters;

use MichalSpacekCz\Formatter\TexyFormatter;
use MichalSpacekCz\Training\Dates\UpcomingTrainingDates;
use MichalSpacekCz\Training\FreeSeats;
use MichalSpacekCz\Training\DateList\UpcomingTrainingDatesList;
use MichalSpacekCz\Training\DateList\UpcomingTrainingDatesListFactory;
use MichalSpacekCz\Training\Venues;
use Nette\Application\BadRequestException;

class VenuesPresenter extends BasePresenter
{

private int $venueId;


public function __construct(
private readonly TexyFormatter $texyFormatter,
private readonly UpcomingTrainingDates $upcomingTrainingDates,
private readonly Venues $trainingVenues,
private readonly FreeSeats $freeSeats,
private readonly UpcomingTrainingDatesListFactory $upcomingTrainingDatesListFactory,
) {
parent::__construct();
}
Expand All @@ -28,7 +30,7 @@ public function actionVenue(string $name): void
if (!$venue) {
throw new BadRequestException("Where in the world is {$name}?");
}
$trainings = $this->upcomingTrainingDates->getPublicUpcomingAtVenue($venue->id);
$this->venueId = $venue->id;

$this->template->pageTitle = $this->texyFormatter->translate('messages.title.venue', [$venue->name]);
$this->template->name = $venue->name;
Expand All @@ -43,8 +45,12 @@ public function actionVenue(string $name): void
$this->template->streetview = $venue->streetview;
$this->template->parking = $venue->parking;
$this->template->publicTransport = $venue->publicTransport;
$this->template->lastFreeSeats = $this->freeSeats->lastFreeSeatsAnyTraining($trainings);
$this->template->upcomingTrainings = $trainings;
}


protected function createComponentUpcomingDatesList(): UpcomingTrainingDatesList
{
return $this->upcomingTrainingDatesListFactory->create(null, true, $this->venueId);
}

}
2 changes: 1 addition & 1 deletion site/app/Www/Presenters/templates/Homepage/default.latte
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<p>{_messages.trainings.intro.intro}: <em>{_messages.trainings.intro.review}</em> &mdash; {_messages.trainings.intro.author}</p>
<h3>{_messages.label.publictrainings}</h3>
<p>{_messages.homepage.trainings}:</p>
{include "../Trainings/common/dateList.latte"}
{control upcomingDatesList}
<h3>{_messages.label.companytrainings}</h3>
<p>{_messages.trainings.companyextratraining|format:'link:Www:CompanyTrainings:'}</p>
{include "../Trainings/common/company.latte"}
Expand Down
2 changes: 1 addition & 1 deletion site/app/Www/Presenters/templates/Trainings/default.latte
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<p><em>{_messages.trainings.intro.review}</em> &mdash; {_messages.trainings.intro.author}</p>
<h3>{_messages.label.publictrainings}</h3>
<p>{_messages.trainings.welcome}</p>
{include "common/dateList.latte"}
{control upcomingDatesList}
<h3>{_messages.label.companytrainings}</h3>
<p>{_messages.trainings.companyextratraining|format:'link:Www:CompanyTrainings:'}</p>
{include "common/company.latte"}
Expand Down
2 changes: 1 addition & 1 deletion site/app/Www/Presenters/templates/Trainings/success.latte
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@

<h2>{_messages.label.othertrainings}</h2>
<p>{_messages.trainings.cometoothertrainings}</p>
{include "common/dateList.latte"}
{control otherUpcomingDatesList}

{if $reviews}
<hr>
Expand Down
2 changes: 1 addition & 1 deletion site/app/Www/Presenters/templates/Venues/venue.latte
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,6 @@
{if empty($upcomingTrainings)}
<p>{_messages.venues.notraininghere|format:"link:Www:Contact:"}</p>
{else}
{include "../Trainings/common/dateList.latte"}
{control upcomingDatesList}
{/if}
{/define}
1 change: 1 addition & 0 deletions site/config/services.neon
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ services:
- MichalSpacekCz\Training\Applications(emailEncryption: @emailEncryption)
- MichalSpacekCz\Training\CompanyTrainings
- MichalSpacekCz\Training\DateList\TrainingApplicationsListFactory
- MichalSpacekCz\Training\DateList\UpcomingTrainingDatesListFactory
- MichalSpacekCz\Training\Dates\TrainingDateStatuses
- MichalSpacekCz\Training\Dates\TrainingDateFactory(texyFormatter: @texyFormatterNoPlaceholders)
- MichalSpacekCz\Training\Dates\TrainingDates
Expand Down

0 comments on commit f0fc546

Please sign in to comment.