From b1ee4887b5c8b1b6a1ae9de3a154a636c5e02b71 Mon Sep 17 00:00:00 2001 From: Oliver Davies Date: Sat, 28 Oct 2017 09:08:34 +0100 Subject: [PATCH] Re-add ability to display upcoming and only previous talks --- source/talks.html.twig | 14 ++++++++--- source/talks/archive.html.twig | 4 +-- .../src/Twig/FormatTalksExtension.php | 25 +++++++++++++------ 3 files changed, 31 insertions(+), 12 deletions(-) diff --git a/source/talks.html.twig b/source/talks.html.twig index 9c27e5b0..88e9de7b 100644 --- a/source/talks.html.twig +++ b/source/talks.html.twig @@ -8,12 +8,20 @@ use: [talks] {% block content %}

I regularly speak at conferences and user groups about a range of subjects including Drupal, Sculpin and Git. If you would like to me to speak at your group or conference, please get in touch.

+ {% set data = { talks: data.talks, events: site.events } %} + + {% set upcoming_talks = data|format_talks(true) %} + {% if upcoming_talks %} +

Upcoming Talks

+ + {% include "talks-table" with { talks: upcoming_talks } %} + {% endif %} +

Last 5 Talks

- {% set data = { talks: data.talks, events: site.events } %} {% include "talks-table" with { - talks: data|format_talks|slice(0,5) + talks: data|format_talks(false, true)|slice(0,5) } %} -

Upcoming talks can be found in the talks archive.

+

All previous talks can be found in the talks archive.

{% endblock %} diff --git a/source/talks/archive.html.twig b/source/talks/archive.html.twig index 4c006a71..f65db6b9 100644 --- a/source/talks/archive.html.twig +++ b/source/talks/archive.html.twig @@ -15,6 +15,6 @@ talks:

Here are a list of my previous conference and user group talks:

{% set data = { talks: data.talks|merge(page.talks), events: site.events } %} -{% include "talks-table" with { talks: data|format_talks } %} +{% include "talks-table" with { talks: data|format_talks(false, true) } %} -

Upcoming talks can be found on the talks page].

+

Upcoming talks can be found on the talks page.

diff --git a/src/format-talks-bundle/src/Twig/FormatTalksExtension.php b/src/format-talks-bundle/src/Twig/FormatTalksExtension.php index f7dbe8fe..41c43921 100644 --- a/src/format-talks-bundle/src/Twig/FormatTalksExtension.php +++ b/src/format-talks-bundle/src/Twig/FormatTalksExtension.php @@ -17,22 +17,33 @@ class FormatTalksExtension extends Twig_Extension ]; } - public function formatTalks($data) + public function formatTalks($data, $onlyUpcoming = false, $onlyPrevious = false) { $event_data = $data['events']; $talks = []; foreach ($data['talks'] as $talk) { - foreach ($talk['events'] as $event) { - $event = array_merge($event, $event_data[$event['event']]); + foreach ($talk['events'] as $event) { + $event = array_merge($event, $event_data[$event['event']]); - $talks[] = compact('talk', 'event'); - } + $talks[] = compact('talk', 'event'); + } } + $today = (new \DateTime())->format('Y-m-d'); + return collect($talks) - ->sortByDesc('event.date') - ->all(); + ->filter(function ($talk) use ($today, $onlyPrevious, $onlyUpcoming) { + if ($onlyUpcoming) { + return $talk['event']['date'] > $today; + } + + if ($onlyPrevious) { + return $talk['event']['date'] < $today; + } + + return true; + })->sortByDesc('event.date')->all(); } /**