+ {% if row.event.website is not empty %}
+
+ {{ row.event.name }}
+
+ {% else %}
+ {{ row.event.name }}
+ {% endif %}
+
+ {% if row.event.location is defined %}
+
+ {{ row.event.location }}
+
+ {% endif %}
+
+
+ {% if not upcoming %}
+
+ {% if row.event.feedback and row.event.date <= today %}
+
+ joind.in
+
+ {% endif %}
+
+ {% endif %}
+
diff --git a/source/_includes/talks-table.html.twig b/source/_includes/talks-table.html.twig
index 8fd88ed1..0a571d11 100644
--- a/source/_includes/talks-table.html.twig
+++ b/source/_includes/talks-table.html.twig
@@ -17,65 +17,8 @@
{% set today = 'today'|date('Y-m-d') %}
- {% for row in events %}
-
-
- {{ row.date.date|date(row.date.fuzzy_date ? 'F Y' : 'j F Y') }}
-
- {% if row.date.time is defined %}
-
- {{ row.date.time }}
-
- {% endif %}
-
-
- {% if not talk_page %}
-
- {% if row.date.talk_title is not defined %}
- {% for talk in data.talks if talk.talk_id == row.date.talk_id %}
-
- {{ talk.title }}
-
- {% endfor %}
- {% else %}
- {{ row.date.talk_title }}
- {% endif %}
-
-
- {{ row.date.type|default('Talk') }}
-
-
- {% endif %}
-
-
- {% if row.event.website is not empty %}
-
- {{ row.event.name }}
-
- {% else %}
- {{ row.event.name }}
- {% endif %}
-
- {% if row.event.location is defined %}
-
- {{ row.event.location }}
-
- {% endif %}
-
-
- {% if not upcoming %}
-
- {% if row.date.feedback and row.date.date <= today %}
-
- joind.in
-
- {% endif %}
-
- {% endif %}
-
+ {% for row in talks %}
+ {% include "talks-table-row" %}
{% endfor %}
diff --git a/source/_talks/building-static-websites-sculpin.md b/source/_talks/building-static-websites-sculpin.md
index 6d4c40c1..99104eaa 100644
--- a/source/_talks/building-static-websites-sculpin.md
+++ b/source/_talks/building-static-websites-sculpin.md
@@ -1,5 +1,4 @@
---
-talk_id: 8
title: Building Static Websites with Sculpin
type: Lightning talk
slides:
@@ -11,6 +10,10 @@ tweets: yes
video:
embed:
url: https://www.youtube.com/watch?v=aN53arCKZAU
+events:
+ - event: phpsw
+ date: '2015-10-14'
+ feedback: 'https://joind.in/talk/view/15486'
---
[Sculpin][0] is a static site generator written in PHP. It converts Markdown files, Twig templates and standard HTML into a static HTML site that can be easily deployed.
diff --git a/source/_talks/dancing-for-drupal.md b/source/_talks/dancing-for-drupal.md
index 5b75e131..fd43dc52 100644
--- a/source/_talks/dancing-for-drupal.md
+++ b/source/_talks/dancing-for-drupal.md
@@ -1,11 +1,13 @@
---
-talk_id: 7
title: Dancing for Drupal
slides:
url: https://speakerdeck.com/opdavies/umbristol-dancing-for-drupal
embed:
tags: [meetup, umbristol, drupal]
tweets: yes
+events:
+ - event: umbristol
+ date: '2015-08-25'
---
As part of their [CMS Dance-Off][1], I was selected to speak about Drupal alongside other speakers representing Umbraco, Sitecore and Episerver.
diff --git a/source/_talks/deploying-drupal-fabric.md b/source/_talks/deploying-drupal-fabric.md
index c12222bb..ca001e8c 100644
--- a/source/_talks/deploying-drupal-fabric.md
+++ b/source/_talks/deploying-drupal-fabric.md
@@ -1,5 +1,4 @@
---
-talk_id: 19
title: 'Deploying Drupal with Fabric'
type: Talk
slides:
@@ -14,6 +13,12 @@ meta:
title: Deploying Drupal with Fabric
description: "You've built your Drupal site, now learn how to deploy it with Fabric."
type: website
+events:
+ - event: drupalcamp-dublin-17
+ date: '2017-10-20'
+ time: '15:00 - 15:40'
+ - event: drupal-somerset
+ date: '2017-10-26'
---
You’ve built your website, and now you just need to deploy it. There are various ways that this could be done - from (S)FTP, to SCP and rsync, to running commands like “git pull” and “composer install” directly on the server (not recommended).
diff --git a/source/_talks/deploying-php-fabric.md b/source/_talks/deploying-php-fabric.md
index 76fcb7e0..44ecb569 100644
--- a/source/_talks/deploying-php-fabric.md
+++ b/source/_talks/deploying-php-fabric.md
@@ -1,5 +1,4 @@
---
-talk_id: 18
title: Deploying PHP Applications with Fabric
slides:
url: https://speakerdeck.com/opdavies/deploying-php-applications-with-fabric
@@ -18,6 +17,18 @@ meta:
width: 2560
height: 1440
type: image/png
+events:
+ - event: nomad-php
+ date: '2017-04-20'
+ time: '19:00 (CET)'
+ type: 'Lightning talk'
+ - event: phpsw
+ date: '2017-09-13'
+ feedback: https://joind.in/talk/a5ff3
+ - event: phpnw17
+ date: '2017-10-01'
+ time: '09:00 - 09:45'
+ feedback: 'https://joind.in/talk/4e35d'
---
You’ve built your application, and now you just need to deploy it. There are various ways that this could be done – from (S)FTP, to SCP and rsync, to running commands like “git pull” and “composer install” directly on the server (not recommended).
diff --git a/source/_talks/drupal-8-module-development.md b/source/_talks/drupal-8-module-development.md
index 444ffe8e..e060c639 100644
--- a/source/_talks/drupal-8-module-development.md
+++ b/source/_talks/drupal-8-module-development.md
@@ -1,5 +1,4 @@
---
-talk_id: 9
title: Getting Started with Drupal 8 Module Development
tags: [conference, php, drupal, drupalcamp, drupal-8]
tweets: yes
@@ -18,6 +17,9 @@ meta:
type: 'image/png'
height: 540
width: 960
+events:
+ - event: drupalcamp-london-16
+ date: '2016-03-05'
---
New to object-orientated PHP, Symfony or YAML, and want to get started building modules in Drupal 8? This is the session for you!
diff --git a/source/_talks/drupal-8-rejoining-the-herd.md b/source/_talks/drupal-8-rejoining-the-herd.md
index f1e05644..fa2438a5 100644
--- a/source/_talks/drupal-8-rejoining-the-herd.md
+++ b/source/_talks/drupal-8-rejoining-the-herd.md
@@ -1,10 +1,13 @@
---
-talk_id: 11
title: Drupal 8: Rejoining the Herd
tags: [conference, php, drupal, drupal-8]
slides:
url: https://speakerdeck.com/opdavies/drupal-rejoining-the-herd
embed:
+events:
+ - event: phpsc16
+ date: '2016-06-11'
+ feedback: 'https://joind.in/talk/41d0f'
---
[Drupal 8][0] was (finally) released on November 19th 2015, after almost 4 years of work and code commits by over 3,200 different contributors. Whilst it’s pretty much the same as the Drupal that we know and, hopefully, love, a lot has changed behind the scenes and under the hood!
diff --git a/source/_talks/drupal-8.md b/source/_talks/drupal-8.md
index 55d6bfba..dea13b3e 100644
--- a/source/_talks/drupal-8.md
+++ b/source/_talks/drupal-8.md
@@ -1,7 +1,5 @@
---
-talk_id: 5
title: Drupal 8
-type: Lightning talk
slides:
url: https://speakerdeck.com/opdavies/drupal-8
embed:
@@ -10,6 +8,9 @@ video:
embed:
tags: [meetup, phpsw, drupal, drupal-8]
tweets: yes
+events:
+ - event: phpsw
+ date: '2015-04-08'
---
This was a ten minute lightning talk, designed to highlight the major changes coming in Drupal 8.
diff --git a/source/_talks/drupal-vm-generator.md b/source/_talks/drupal-vm-generator.md
index eebf6782..bb8e7971 100644
--- a/source/_talks/drupal-vm-generator.md
+++ b/source/_talks/drupal-vm-generator.md
@@ -1,5 +1,4 @@
---
-talk_id: 10
title: Drupal VM Generator
type: Lightning talk
code: https://github.com/opdavies/drupal-vm-generator
@@ -10,6 +9,11 @@ slides:
video:
url: https://youtu.be/U1pbKAAO2Wo?t=3696
embed:
+events:
+ - event: nwdug
+ date: '2016-03-08'
+ - event: drupal-bristol
+ date: '2016-04-02'
---
An short talk about the [Drupal VM Generator][1] project.
diff --git a/source/_talks/drupal-vm-meet-symfony-console.md b/source/_talks/drupal-vm-meet-symfony-console.md
index c1131a27..99cb716c 100644
--- a/source/_talks/drupal-vm-meet-symfony-console.md
+++ b/source/_talks/drupal-vm-meet-symfony-console.md
@@ -1,11 +1,13 @@
---
-talk_id: 12
title: Drupal VM, Meet Symfony Console
tags: [conference, php, drupal-vm, symfony]
slides:
url: https://speakerdeck.com/opdavies/drupal-vm-meet-symfony-console
embed:
image: drupal-vm-meet-symfony-console.png
+events:
+ - event: drupalcamp-bristol-16
+ date: '2016-07-23'
---
_TL;DR - Come and learn about Symfony Console, with examples from a real-world project._
diff --git a/source/_talks/drupalorg-2015.md b/source/_talks/drupalorg-2015.md
index ecc27e46..d8ec7817 100644
--- a/source/_talks/drupalorg-2015.md
+++ b/source/_talks/drupalorg-2015.md
@@ -1,8 +1,12 @@
---
-talk_id: 4
title: Drupal.org in 2015: What's Coming Next
tags: [conference, drupalcamp, drupalcamp-london, drupal-association]
slides:
url: https://speakerdeck.com/opdavies/drupal-dot-org-in-15
embed:
+events:
+ - event: drupalcamp-brighton-15
+ date: '2015-01-18'
+ - event: drupalcamp-london-15
+ date: '2015-02-28'
---
diff --git a/source/_talks/drush-make-drupalbristol.md b/source/_talks/drush-make-drupalbristol.md
index f6916062..fe506f05 100644
--- a/source/_talks/drush-make-drupalbristol.md
+++ b/source/_talks/drush-make-drupalbristol.md
@@ -1,8 +1,10 @@
---
-talk_id: 3
title: drush make drupalbristol
slides:
url: https://speakerdeck.com/opdavies/drush-make-drupalbristol
embed:
tags: [meetup, drupal, drupal-bristol, drush, drush-make]
+events:
+ - event: drupal-bristol
+ date: '2014-08-19'
---
diff --git a/source/_talks/getting-your-data-into-drupal-8.md b/source/_talks/getting-your-data-into-drupal-8.md
index 24342c15..89caf3e5 100644
--- a/source/_talks/getting-your-data-into-drupal-8.md
+++ b/source/_talks/getting-your-data-into-drupal-8.md
@@ -1,5 +1,4 @@
---
-talk_id: 15
title: Getting (Your Data) Into Drupal 8
slides:
url: https://speakerdeck.com/opdavies/getting-your-data-into-drupal-8-drupal-bristol
@@ -19,6 +18,12 @@ meta:
height: 1440
type: image/png
use: [talks]
+events:
+ - event: drupal-bristol
+ date: '2017-01-18'
+ - event: drupalcamp-london-17
+ date: '2017-03-04'
+ time: '12:05 - 12:50'
---
If you’ve moved a site from Drupal 6 to 7, the chances are that you’ve either used the upgrade path to update your old site in-place, or you built a new site from scratch and used the Migrate module from contrib to migrate your data from the old database.
diff --git a/source/_talks/git-flow.md b/source/_talks/git-flow.md
index 59a2e1f3..37a85900 100644
--- a/source/_talks/git-flow.md
+++ b/source/_talks/git-flow.md
@@ -1,5 +1,4 @@
---
-talk_id: 2
title: Never Commit to Master - An Introduction to Git Flow
slides:
url: https://speakerdeck.com/opdavies/never-commit-to-master-an-introduction-to-git-flow
@@ -9,4 +8,7 @@ video:
embed:
tags: [conference, drupalcamp, drupalcamp-london, git, git-flow]
tweets: yes
+events:
+ - event: drupalcamp-london-14
+ date: '2014-03-01'
---
diff --git a/source/_talks/goodbye-drush-make-hello-composer.md b/source/_talks/goodbye-drush-make-hello-composer.md
index 8225883f..678bdf58 100644
--- a/source/_talks/goodbye-drush-make-hello-composer.md
+++ b/source/_talks/goodbye-drush-make-hello-composer.md
@@ -1,10 +1,12 @@
---
-talk_id: 14
title: Goodbye Drush Make. Hello Composer!
tags: ['meetup', 'drupal', 'composer']
slides:
url: http://bit.ly/slides-goodbye-drush-make-hello-composer2
embed: ''
+events:
+ - event: drupal-bristol
+ date: '2016-11-17'
---
One of the main outcomes of Drupal 8 was “getting off the island” with third-party code included in core and adopting modern best practices from the wider PHP ecosystem - including [Composer][1], PHP’s dependency manager.
diff --git a/source/_talks/it-all-started-with-a-patch.md b/source/_talks/it-all-started-with-a-patch.md
index 211c3b6b..25243244 100644
--- a/source/_talks/it-all-started-with-a-patch.md
+++ b/source/_talks/it-all-started-with-a-patch.md
@@ -1,5 +1,4 @@
---
-talk_id: 16
title: It All Started With A Patch
type: Lightning talk
tags: [meetup, phpsw, open-source]
@@ -9,5 +8,9 @@ slides:
video:
url: https://www.youtube.com/watch?v=5FYMRR61sdo
embed: ''
+events:
+ - event: phpsw
+ date: '2017-02-08'
+ feedback: 'https://joind.in/event/phpsw-new-skills-february-17/it-started-with-a-patch'
---
A crash course of why and how to get involved with open source.
diff --git a/source/_talks/modern-drupal-development-with-composer.md b/source/_talks/modern-drupal-development-with-composer.md
index 67811014..c33bfc34 100644
--- a/source/_talks/modern-drupal-development-with-composer.md
+++ b/source/_talks/modern-drupal-development-with-composer.md
@@ -1,5 +1,4 @@
---
-talk_id: 13
title: Modern Drupal Development with Composer
type: Lightning talk
tags: ['meetups', 'phpsw', 'drupal', 'composer']
@@ -9,6 +8,9 @@ slides:
video:
url: https://www.youtube.com/watch?v=Yi_FPI3xHwc
embed: ''
+events:
+ - event: phpsw
+ date: '2016-11-09'
---
Building a Drupal application? You no longer need to download archives to add new modules or update core, or deal with Drupal specific tools to manage your codebase.
diff --git a/source/_talks/so-what-is-this-drupal-thing.md b/source/_talks/so-what-is-this-drupal-thing.md
index 7b2a2c7a..1dd14fb3 100644
--- a/source/_talks/so-what-is-this-drupal-thing.md
+++ b/source/_talks/so-what-is-this-drupal-thing.md
@@ -1,8 +1,10 @@
---
-talk_id: 1
title: So, what is this Drupal thing?
video:
url: https://vimeo.com/49827006
embed:
tags: [meetup, drupal, unified-diff]
+events:
+ - event: unifieddiff
+ date: '2012-09-05'
---
diff --git a/source/_talks/tdd-test-driven-drupal.md b/source/_talks/tdd-test-driven-drupal.md
index 08203cc7..bdd046e1 100644
--- a/source/_talks/tdd-test-driven-drupal.md
+++ b/source/_talks/tdd-test-driven-drupal.md
@@ -1,5 +1,4 @@
---
-talk_id: 17
title: TDD - Test Driven Drupal
slides:
url: 'https://speakerdeck.com/opdavies/tdd-test-driven-drupal'
@@ -19,6 +18,13 @@ meta:
height: 1440
type: image/png
use: [talks]
+events:
+ - event: drupalcamp-london-17
+ date: '2017-03-04'
+ time: '16:15 - 17:00'
+ - event: drupalcamp-dublin-17
+ date: '2017-10-21'
+ time: '12:00 - 12:40'
---
Testing is important. Why? It allows developers to add new features and edit and refactor existing code without the worry of adding regressions, reduces the reliance on manual testing to discover bugs, and by taking a test driven approach, your implementation code is leaner as you only write what is needed for your tests to pass.
diff --git a/source/_talks/test-drive-twig-with-sculpin.md b/source/_talks/test-drive-twig-with-sculpin.md
index 800d957b..eac3950c 100644
--- a/source/_talks/test-drive-twig-with-sculpin.md
+++ b/source/_talks/test-drive-twig-with-sculpin.md
@@ -1,5 +1,4 @@
---
-talk_id: 6
title: Test Drive Twig with Sculpin
slides:
url: https://speakerdeck.com/opdavies/test-drive-twig-with-sculpin
@@ -7,6 +6,9 @@ slides:
code: https://github.com/opdavies/sculpin-demo
tags: [conference, drupalcamp, drupalcamp-north, sculpin, twig]
tweets: yes
+events:
+ - event: drupalcamp-north-15
+ date: '2015-07-25'
---
[Sculpin][1] is a static site generator written in PHP, and based on [Symfony components][2]. It uses [YAML][3] and [Twig][4], which makes it very appealing to Drupal people wanting to learn these in preparation for Drupal 8.
diff --git a/source/talks.html.twig b/source/talks.html.twig
new file mode 100644
index 00000000..ee3dd122
--- /dev/null
+++ b/source/talks.html.twig
@@ -0,0 +1,28 @@
+---
+layout: page
+title: Talks
+meta:
+ description: 'Information about previous and upcoming talks that Oliver has presented at conferences and user groups'
+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.
+
+
Last 5 Talks
+
+ {% set talks = [] %}
+ {% for talk in data.talks %}
+ {% for event in talk.events %}
+ {% set talks = talks|merge([{
+ event: event|merge(site.events[event.event]),
+ talk: talk,
+ }]) %}
+ {% endfor %}
+ {% endfor %}
+
+ {% include "talks-table" with {
+ talks: talks|format_talks|slice(0,5)
+ } %}
+
+
+{% endblock %}
diff --git a/source/talks.md b/source/talks.md
deleted file mode 100644
index feb1600e..00000000
--- a/source/talks.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-layout: default
-title: Talks
-meta:
- description: 'Information about previous and upcoming talks that Oliver has presented at conferences and user groups'
-use: [talks, posts]
----
-{% block content %}
-# Talks
-
-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][0].
-
-There is also information about events that I’ve attended and spoken at on my [Lanyrd][1] and [Joind.in][2] profiles.
-
-{% set upcoming_events = [] %}
-{% set past_events = [] %}
-
-{% for date in site.events.dates %}
- {% if date.date >= 'today'|date('Y-m-d') %}
- {% set upcoming_events = upcoming_events|merge([{
- date: date,
- event: site.events.events[date.event]
- }]) %}
- {% else %}
- {% set past_events = past_events|merge([{
- date: date,
- event: site.events.events[date.event]
- }]) %}
- {% endif %}
-{% endfor %}
-
-{% if upcoming_events is not empty %}
-## Upcoming Talks
-
-{% include 'talks-table' with { events: upcoming_events, upcoming: true } %}
-{% endif %}
-
-## Last 5 Talks
-
-{% include 'talks-table' with { events: past_events|reverse|slice(0,5) } %}
-
-You can view more talks in the [talks archive][3].
-{% endblock %}
-
-[0]: {{site.url}}/contact
-[1]: {{site.lanyrd.url}}
-[2]: {{site.joindin.url}}
-[3]: {{site.url}}/talks/archive
diff --git a/source/talks/archive.html.twig b/source/talks/archive.html.twig
new file mode 100644
index 00000000..777deb1d
--- /dev/null
+++ b/source/talks/archive.html.twig
@@ -0,0 +1,29 @@
+---
+layout: page
+title: Talk Archive
+use: [talks]
+talks:
+ - title: 'Drupal and the LDAP module'
+ events:
+ - date: '2013-07-10'
+ event: swdug
+ - title: 'About the Drupal Association'
+ events:
+ - date: '2014-08-19'
+ event: swdug
+---
+
Here are a list of my previous conference and user group talks:
+
+{% set talks = [] %}
+{% for talk in data.talks|merge(page.talks) %}
+ {% for event in talk.events %}
+ {% set talks = talks|merge([{
+ event: event|merge(site.events[event.event]),
+ talk: talk,
+ }]) %}
+ {% endfor %}
+{% endfor %}
+
+{% include 'talks-table' with { talks: talks|format_talks } %}
+
+