diff --git a/site/app/Talks/TalksList.php b/site/app/Talks/TalksList.php new file mode 100644 index 000000000..5f3d3f78a --- /dev/null +++ b/site/app/Talks/TalksList.php @@ -0,0 +1,20 @@ + $talks + */ + public function render(array $talks): void + { + $this->template->talks = $talks; + $this->template->render(__DIR__ . '/talksList.latte'); + } + +} diff --git a/site/app/Talks/TalksListFactory.php b/site/app/Talks/TalksListFactory.php new file mode 100644 index 000000000..77325cc01 --- /dev/null +++ b/site/app/Talks/TalksListFactory.php @@ -0,0 +1,11 @@ + + {$talk->getTitle()}
+ {$talk->getDate()|localeDay}, {$talk->getEvent()}{if $talk->getDuration()} ({_messages.talks.durationshort|format:$talk->getDuration()}){/if} + {icon images} + {icon camera-video} +

diff --git a/site/app/Www/Presenters/HomepagePresenter.php b/site/app/Www/Presenters/HomepagePresenter.php index 9c1d4bc65..f8c116c77 100644 --- a/site/app/Www/Presenters/HomepagePresenter.php +++ b/site/app/Www/Presenters/HomepagePresenter.php @@ -8,6 +8,8 @@ use MichalSpacekCz\Articles\ArticleSummaryFactory; use MichalSpacekCz\Interviews\Interviews; use MichalSpacekCz\Talks\Talks; +use MichalSpacekCz\Talks\TalksList; +use MichalSpacekCz\Talks\TalksListFactory; use MichalSpacekCz\Training\Company\CompanyTrainings; use MichalSpacekCz\Training\DateList\UpcomingTrainingDatesList; use MichalSpacekCz\Training\DateList\UpcomingTrainingDatesListFactory; @@ -24,6 +26,7 @@ public function __construct( private readonly DiscontinuedTrainings $discontinuedTrainings, private readonly UpcomingTrainingDatesListFactory $upcomingTrainingDatesListFactory, private readonly ArticleSummaryFactory $articleSummaryFactory, + private readonly TalksListFactory $talksListFactory, ) { parent::__construct(); } @@ -53,4 +56,10 @@ protected function createComponentArticleSummary(): ArticleSummary return $this->articleSummaryFactory->create(); } + + protected function createComponentTalksList(string $name): TalksList + { + return $this->talksListFactory->create(); + } + } diff --git a/site/app/Www/Presenters/TalksPresenter.php b/site/app/Www/Presenters/TalksPresenter.php index 5cad814ad..99085d469 100644 --- a/site/app/Www/Presenters/TalksPresenter.php +++ b/site/app/Www/Presenters/TalksPresenter.php @@ -9,6 +9,8 @@ use MichalSpacekCz\Talks\Exceptions\UnknownSlideException; use MichalSpacekCz\Talks\Talks; use MichalSpacekCz\Talks\TalkSlides; +use MichalSpacekCz\Talks\TalksList; +use MichalSpacekCz\Talks\TalksListFactory; use MichalSpacekCz\Training\Dates\UpcomingTrainingDates; use Nette\Application\BadRequestException; use Nette\Application\UI\InvalidLinkException; @@ -20,6 +22,7 @@ public function __construct( private readonly Talks $talks, private readonly TalkSlides $talkSlides, private readonly UpcomingTrainingDates $upcomingTrainingDates, + private readonly TalksListFactory $talksListFactory, ) { parent::__construct(); } @@ -79,4 +82,10 @@ public function actionTalk(string $name, ?string $slide = null): void $this->template->slidesPlatform = $talk->getSlidesHref() ? SlidesPlatform::tryFromUrl($talk->getSlidesHref())?->getName() : null; } + + protected function createComponentTalksList(string $name): TalksList + { + return $this->talksListFactory->create(); + } + } diff --git a/site/app/Www/Presenters/templates/Homepage/default.latte b/site/app/Www/Presenters/templates/Homepage/default.latte index ef6302269..65c1cba9d 100644 --- a/site/app/Www/Presenters/templates/Homepage/default.latte +++ b/site/app/Www/Presenters/templates/Homepage/default.latte @@ -26,17 +26,13 @@

{_messages.label.upcomingtalks}

{if $upcomingTalks} -

- {include "../Talks/common/itemTalk.latte", talk: $talk} -

+ {control talksList $upcomingTalks}

{_messages.talks.atyourevent.upcoming|format:'mail@michalspacek.cz'}

{else}

{_messages.talks.atyourevent.noupcoming|format:'mail@michalspacek.cz'}

{/if}

{_messages.label.pasttalks}

-

- {include "../Talks/common/itemTalk.latte", talk: $talk} -

+{control talksList $talks}

{_messages.label.alltalks}


{_messages.label.myinterviews}

diff --git a/site/app/Www/Presenters/templates/Talks/common/itemTalk.latte b/site/app/Www/Presenters/templates/Talks/common/itemTalk.latte deleted file mode 100644 index 246bb7054..000000000 --- a/site/app/Www/Presenters/templates/Talks/common/itemTalk.latte +++ /dev/null @@ -1,4 +0,0 @@ -{$talk->getTitle()}
-{$talk->getDate()|localeDay}, {$talk->getEvent()}{if $talk->getDuration()} ({_messages.talks.durationshort|format:$talk->getDuration()}){/if} -{icon images} -{icon camera-video} diff --git a/site/app/Www/Presenters/templates/Talks/default.latte b/site/app/Www/Presenters/templates/Talks/default.latte index 48361f7b8..d72a77547 100644 --- a/site/app/Www/Presenters/templates/Talks/default.latte +++ b/site/app/Www/Presenters/templates/Talks/default.latte @@ -11,9 +11,7 @@

{_messages.label.upcomingtalks}

{if $upcomingTalks} -

- {include "common/itemTalk.latte", talk: $talk} -

+ {control talksList $upcomingTalks}

{_messages.talks.atyourevent.upcoming|format:'mail@michalspacek.cz'}

{else}

{_messages.talks.atyourevent.noupcoming|format:'mail@michalspacek.cz'}

@@ -24,9 +22,7 @@

{foreach $talks as $year => $items}

{$year}

-

- {include "common/itemTalk.latte", talk: $talk} -

+ {control talksList $items} {/foreach} {_messages.talks.more|format:'https://www.slideshare.net/spaze/presentations', 'https://speakerdeck.com/u/spaze'} {/define} diff --git a/site/config/services.neon b/site/config/services.neon index 9aaa8c44c..9ef49e79f 100644 --- a/site/config/services.neon +++ b/site/config/services.neon @@ -86,6 +86,7 @@ services: - MichalSpacekCz\Talks\TalkInputsFactory(videoThumbnails: @talkVideoThumbnails) - MichalSpacekCz\Talks\Talks - MichalSpacekCz\Talks\TalkSlides + - MichalSpacekCz\Talks\TalksListFactory - MichalSpacekCz\Templating\Filters latte.templateFactory: create: MichalSpacekCz\Templating\TemplateFactory()