Refactor events and talks
This commit is contained in:
parent
af663e2397
commit
20c8f2d834
|
@ -1,3 +1,6 @@
|
||||||
|
.bg-red
|
||||||
|
background: red
|
||||||
|
|
||||||
body
|
body
|
||||||
padding-top: 60px
|
padding-top: 60px
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,6 @@
|
||||||
.list-style-none
|
.list-style-none
|
||||||
list-style: none
|
list-style: none
|
||||||
|
|
||||||
@each $value in 'block' 'inline' 'inline-block'
|
@each $value in 'block', 'inline', 'inline-block'
|
||||||
.display-#{$value}
|
.display-#{$value}
|
||||||
display: #{$value}
|
display: #{$value}
|
||||||
|
|
|
@ -3,13 +3,6 @@
|
||||||
& > tbody > tr > td
|
& > tbody > tr > td
|
||||||
vertical-align: middle
|
vertical-align: middle
|
||||||
|
|
||||||
.column-date,
|
|
||||||
.column-event
|
|
||||||
width: 200px
|
|
||||||
|
|
||||||
.column-feedback
|
|
||||||
width: 125px
|
|
||||||
|
|
||||||
.talk-type,
|
.talk-type,
|
||||||
.event-location
|
.event-location
|
||||||
display: block
|
display: block
|
||||||
|
|
239
data/events.yml
239
data/events.yml
|
@ -1,80 +1,191 @@
|
||||||
events:
|
events:
|
||||||
drupal-bristol:
|
events:
|
||||||
title: Drupal Bristol
|
drupal-bristol:
|
||||||
location: 'Bristol, UK'
|
name: Drupal Bristol
|
||||||
url: 'https://www.drupalbristol.org.uk'
|
location: Bristol, UK
|
||||||
|
website: https://www.drupalbristol.org.uk
|
||||||
|
|
||||||
drupalcamp-brighton-15:
|
drupalcamp-brighton-15:
|
||||||
title: DrupalCamp Brighton 2015
|
name: DrupalCamp Brighton 2015
|
||||||
location: 'Brighton, UK'
|
location: Brighton, UK
|
||||||
url: ~
|
website: ~
|
||||||
|
|
||||||
drupalcamp-bristol-16:
|
drupalcamp-bristol-16:
|
||||||
title: DrupalCamp Bristol 2016
|
name: DrupalCamp Bristol 2016
|
||||||
location: 'Bristol, UK'
|
location: Bristol, UK
|
||||||
url: 'https://www.drupalcampbristol.org.uk'
|
website: https://2016.drupalcampbristol.org.uk
|
||||||
|
|
||||||
drupalcamp-london-14:
|
drupalcamp-london-14:
|
||||||
title: DrupalCamp London 2014
|
name: DrupalCamp London 2014
|
||||||
location: 'London, UK'
|
location: London, UK
|
||||||
url: ~
|
website: ~
|
||||||
|
|
||||||
drupalcamp-london-15:
|
drupalcamp-london-15:
|
||||||
title: DrupalCamp London 2015
|
name: DrupalCamp London 2015
|
||||||
location: 'London, UK'
|
location: London, UK
|
||||||
url: ~
|
website: ~
|
||||||
|
|
||||||
drupalcamp-london-16:
|
drupalcamp-london-16:
|
||||||
title: DrupalCamp London 2016
|
name: DrupalCamp London 2016
|
||||||
location: 'London, UK'
|
location: London, UK
|
||||||
url: ~
|
website: ~
|
||||||
|
|
||||||
drupalcamp-london-17:
|
drupalcamp-london-17:
|
||||||
title: DrupalCamp London 2017
|
name: DrupalCamp London 2017
|
||||||
location: 'London, UK'
|
location: London, UK
|
||||||
url: 'https://drupalcamp.london'
|
website: http://drupalcamp.london
|
||||||
|
|
||||||
drupalcamp-north-15:
|
drupalcamp-north-15:
|
||||||
title: DrupalCamp North 2015
|
name: DrupalCamp North 2015
|
||||||
location: 'Sunderland, UK'
|
location: Sunderland, UK
|
||||||
url: 'http://drupalcampnorth.org'
|
website: http://drupalcampnorth.org
|
||||||
|
|
||||||
nomad_php:
|
nomad-php:
|
||||||
title: Nomad PHP
|
name: Nomad PHP
|
||||||
location: Online
|
location: Online
|
||||||
url: 'https://nomadphp.com'
|
website: https://nomadphp.com
|
||||||
|
|
||||||
nwdug:
|
nwdug:
|
||||||
title: NWDUG
|
name: NWDUG
|
||||||
location: 'Manchester, UK'
|
location: Manchester, UK
|
||||||
url: 'http://nwdrupal.org.uk'
|
website: http://nwdrupal.org.uk
|
||||||
|
|
||||||
phpnw-17:
|
phpnw17:
|
||||||
title: PHP North West 2017
|
name: PHP North West 2017
|
||||||
location: 'Manchester, UK'
|
location: Manchester, UK
|
||||||
url: 'http://conference.phpnw.org.uk/phpnw17'
|
website: http://conference.phpnw.org.uk/phpnw17
|
||||||
|
|
||||||
phpsc-16:
|
phpsc16:
|
||||||
title: PHP South Coast 2016
|
name: PHP South Coast 2016
|
||||||
location: 'Portsmouth, UK'
|
location: Portsmouth, UK
|
||||||
url: 'http://2016.phpsouthcoast.co.uk'
|
website: http://2016.phpsouthcoast.co.uk
|
||||||
|
|
||||||
phpsw:
|
phpsw:
|
||||||
title: PHPSW
|
name: PHPSW
|
||||||
location: 'Bristol, UK'
|
location: Bristol, UK
|
||||||
url: 'https://phpsw.uk'
|
website: https://phpsw.uk
|
||||||
|
|
||||||
swdug:
|
swdug:
|
||||||
title: SWDUG
|
name: SWDUG
|
||||||
location: 'Cardiff, UK'
|
location: Cardiff, UK
|
||||||
url: ~
|
website: ~
|
||||||
|
|
||||||
udiff:
|
umbristol:
|
||||||
title: Unified Diff
|
name: umBristol
|
||||||
location: 'Cardiff, UK'
|
location: Bristol, UK
|
||||||
url: 'http://unifieddiff.co.uk'
|
website: http://umbristol.co.uk
|
||||||
|
|
||||||
umbristol:
|
unifieddiff:
|
||||||
title: umBristol
|
name: 'unified.diff'
|
||||||
location: 'Bristol, UK'
|
location: Cardiff, UK
|
||||||
url: 'http://umbristol.co.uk'
|
website: http://unifieddiff.co.uk
|
||||||
|
|
||||||
|
dates:
|
||||||
|
- event: unifieddiff
|
||||||
|
date: '2012-09-05'
|
||||||
|
talk: what-is-this-drupal-thing
|
||||||
|
|
||||||
|
- event: swdug
|
||||||
|
date: '2013-07-10'
|
||||||
|
talk:
|
||||||
|
title: Drupal and the LDAP Module
|
||||||
|
type: Talk
|
||||||
|
|
||||||
|
- event: drupalcamp-london-14
|
||||||
|
date: '2014-03-01'
|
||||||
|
talk: git-flow
|
||||||
|
|
||||||
|
- event: drupal-bristol
|
||||||
|
date: '2014-08-19'
|
||||||
|
talk: drush-make-drupalbristol
|
||||||
|
|
||||||
|
- event: swdug
|
||||||
|
date: '2014-08-19'
|
||||||
|
talk:
|
||||||
|
title: About the Drupal Association
|
||||||
|
type: Talk
|
||||||
|
|
||||||
|
- event: drupalcamp-brighton-15
|
||||||
|
date: '2015-01-18'
|
||||||
|
talk: drupalorg-2015
|
||||||
|
|
||||||
|
- event: drupalcamp-london-15
|
||||||
|
date: '2015-02-28'
|
||||||
|
talk: drupalorg-2015
|
||||||
|
|
||||||
|
- event: phpsw
|
||||||
|
date: '2015-04-08'
|
||||||
|
talk: drupal-8
|
||||||
|
|
||||||
|
- event: drupalcamp-north-15
|
||||||
|
date: '2015-07-25'
|
||||||
|
talk: test-drive-twig-with-sculpin
|
||||||
|
|
||||||
|
- event: umbristol
|
||||||
|
date: '2015-08-25'
|
||||||
|
talk: dancing-for-drupal
|
||||||
|
|
||||||
|
- event: phpsw
|
||||||
|
date: '2015-10-14'
|
||||||
|
talk: sculpin
|
||||||
|
feedback: https://joind.in/talk/view/15486
|
||||||
|
|
||||||
|
- event: drupalcamp-london-16
|
||||||
|
date: '2016-03-05'
|
||||||
|
talk: drupal-8-module-development
|
||||||
|
|
||||||
|
- event: nwdug
|
||||||
|
date: '2016-03-08'
|
||||||
|
talk: drupal-vm-generator
|
||||||
|
|
||||||
|
- event: drupal-bristol
|
||||||
|
date: '2016-04-02'
|
||||||
|
talk: drupal-vm-generator
|
||||||
|
|
||||||
|
- event: phpsc16
|
||||||
|
date: '2016-06-11'
|
||||||
|
talk: drupal-8-rejoining-the-herd
|
||||||
|
feedback: https://joind.in/talk/41d0f
|
||||||
|
|
||||||
|
- event: drupalcamp-bristol-16
|
||||||
|
date: '2016-07-23'
|
||||||
|
talk: drupal-vm-meet-symfony-console
|
||||||
|
|
||||||
|
- event: phpsw
|
||||||
|
date: '2016-11-09'
|
||||||
|
talk: drupal-development-with-composer
|
||||||
|
|
||||||
|
- event: drupal-bristol
|
||||||
|
date: '2016-11-17'
|
||||||
|
talk: goodbye-drush-make-hello-composer
|
||||||
|
|
||||||
|
- event: drupal-bristol
|
||||||
|
date: '2017-01-18'
|
||||||
|
talk: getting-your-data-into-drupal-8
|
||||||
|
|
||||||
|
- event: phpsw
|
||||||
|
date: '2016-02-08'
|
||||||
|
talk: it-all-started-with-a-patch
|
||||||
|
feedback: https://joind.in/event/phpsw-new-skills-february-17/it-started-with-a-patch
|
||||||
|
|
||||||
|
- event: drupalcamp-london-17
|
||||||
|
date: '2017-03-04'
|
||||||
|
time: '16:15 - 17:00'
|
||||||
|
talk: test-driven-drupal-simpletest-phpunit
|
||||||
|
|
||||||
|
- event: drupalcamp-london-17
|
||||||
|
date: '2017-03-04'
|
||||||
|
time: '12:05 - 12:50'
|
||||||
|
talk: getting-your-data-into-drupal-8
|
||||||
|
|
||||||
|
- event: nomad-php
|
||||||
|
date: '2017-04-20'
|
||||||
|
time: '19:00 (CET)'
|
||||||
|
talk:
|
||||||
|
id: deploying-php-with-fabric
|
||||||
|
type: Lightning talk
|
||||||
|
|
||||||
|
- event: phpnw17
|
||||||
|
date: '2017-10-01'
|
||||||
|
fuzzy_date: yes
|
||||||
|
talk: deploying-php-with-fabric
|
||||||
|
|
|
@ -1,75 +1,63 @@
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
<table class="talk-event-table table table-striped">
|
<table class="table table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="column-date">Date</th>
|
<th style="width: 20%">Date</th>
|
||||||
{% if not hide_talk %}<th>Talk</th>{% endif %}
|
{% if not talk_page %}<th style="width: 40%">Talk</th>{% endif %}
|
||||||
<th class="column-event">Event</th>
|
<th>Event</th>
|
||||||
{% if not hide_feedback %}<th class="column-feedback">Feedback</th>{% endif %}
|
{% if not upcoming %}<th style="width: 10%">Feedback</th>{% endif %}
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for event in events %}
|
{% for row in events %}
|
||||||
|
{% set talk = false %}
|
||||||
|
{% set key = row.date.talk.id ?: row.date.talk %}
|
||||||
|
{% for item in row.talks if key == item.filename|split('.')|first %}
|
||||||
|
{% set talk = item %}
|
||||||
|
{% endfor %}
|
||||||
<tr>
|
<tr>
|
||||||
<td class="column-date">
|
<td>
|
||||||
<div class="event-date display-block">
|
{{ row.date.date|date(row.date.fuzzy_date ? 'F Y' : 'j F Y') }}
|
||||||
{% if event.fuzzy_date %}
|
{% if row.date.time %}
|
||||||
{{ event.date|date('F Y') }}
|
<small class="display-block">{{ row.date.time }}</small>
|
||||||
{% else %}
|
|
||||||
{{ event.date|date('j F Y') }}
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% if event.time %}
|
|
||||||
<small class="talk-type">
|
|
||||||
{{ event.time }}
|
|
||||||
</small>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
{% if not hide_talk %}
|
{% if not talk_page %}
|
||||||
<td>
|
<td>
|
||||||
<div class="display-block">
|
{% if row.date.talk.title is defined %}
|
||||||
{% if not event.talk.hide_page %}
|
{{ row.date.talk.title }}
|
||||||
<a href="{{ event.talk.url }}">
|
{% else %}
|
||||||
{{ event.talk.title }}
|
<a href="{{ talk.url }}">{{ talk.title }}</a>
|
||||||
</a>
|
|
||||||
{% else %}
|
|
||||||
{{ event.talk.title }}
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% if event.talk.type %}
|
|
||||||
<small class="talk-type">
|
|
||||||
{{ event.talk.type }}
|
|
||||||
</small>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
<small class="display-block">
|
||||||
|
{{ row.date.talk.type ?: talk.type }}
|
||||||
|
</small>
|
||||||
</td>
|
</td>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<td class="column-event">
|
<td>
|
||||||
<div class="display-block">
|
{% if row.event.website %}
|
||||||
{% if event.url %}<a href="{{ event.url }}">{% endif %}
|
<a href="{{ row.event.website }}">
|
||||||
{{ event.title }}
|
{{ row.event.name }}
|
||||||
{% if event.url %}</a>{% endif %}
|
</a>
|
||||||
</div>
|
{% else %}
|
||||||
|
{{ row.event.name }}
|
||||||
{% if event.location %}
|
|
||||||
<small class="event-location">
|
|
||||||
{{- event.location -}}
|
|
||||||
</small>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
<small class="display-block">
|
||||||
|
{{ row.event.location }}
|
||||||
|
</small>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
{% if not hide_feedback -%}
|
{% if not upcoming %}
|
||||||
<td class="column-feedback">
|
<td>
|
||||||
{% if event.talk.joindin %}
|
{% if row.date.feedback %}
|
||||||
<a href="{{ event.talk.joindin }}" class="btn btn-primary" title="Read or leave feedback for this talk">
|
<a href="{{ row.date.feedback }}" class="btn btn-primary" title="Read or leave feedback for this talk">
|
||||||
<i class="fa fa-comment-o"></i> joind.in
|
<i class="fa fa-comment-o"></i> joind.in
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
{%- endif %}
|
{% endif %}
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
---
|
---
|
||||||
|
id: dancing-for-drupal
|
||||||
title: Dancing for Drupal
|
title: Dancing for Drupal
|
||||||
type: Talk
|
type: Talk
|
||||||
slides:
|
slides:
|
||||||
|
@ -6,8 +7,6 @@ slides:
|
||||||
embed: <script async class="speakerdeck-embed" data-id="ffa9b6dea6dc4a8eb207b9982ed6e1bd" data-ratio="1.33333333333333" src="//speakerdeck.com/assets/embed.js"></script>
|
embed: <script async class="speakerdeck-embed" data-id="ffa9b6dea6dc4a8eb207b9982ed6e1bd" data-ratio="1.33333333333333" src="//speakerdeck.com/assets/embed.js"></script>
|
||||||
tags: [meetup, umbristol, drupal]
|
tags: [meetup, umbristol, drupal]
|
||||||
tweets: yes
|
tweets: yes
|
||||||
events:
|
|
||||||
- { id: 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.
|
As part of their [CMS Dance-Off][1], I was selected to speak about Drupal alongside other speakers representing Umbraco, Sitecore and Episerver.
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
---
|
---
|
||||||
|
id: deploying-php-with-fabric
|
||||||
title: Deploying PHP Applications with Fabric
|
title: Deploying PHP Applications with Fabric
|
||||||
type: Talk
|
type: Talk
|
||||||
slides:
|
slides:
|
||||||
|
@ -18,9 +19,6 @@ meta:
|
||||||
width: 1280
|
width: 1280
|
||||||
height: 800
|
height: 800
|
||||||
type: image/png
|
type: image/png
|
||||||
events:
|
|
||||||
- { id: nomad_php, date: '2017-04-20', time: '19:00 (CET)' }
|
|
||||||
- { id: phpnw-17, date: '2017-09', fuzzy_date: true }
|
|
||||||
---
|
---
|
||||||
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).
|
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).
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
---
|
---
|
||||||
|
id: drupal-8-module-development
|
||||||
title: Getting Started with Drupal 8 Module Development
|
title: Getting Started with Drupal 8 Module Development
|
||||||
type: Talk
|
type: Talk
|
||||||
tags: [conference, php, drupal, drupalcamp, drupal-8]
|
tags: [conference, php, drupal, drupalcamp, drupal-8]
|
||||||
|
@ -18,9 +19,6 @@ meta:
|
||||||
type: 'image/png'
|
type: 'image/png'
|
||||||
height: 540
|
height: 540
|
||||||
width: 960
|
width: 960
|
||||||
|
|
||||||
events:
|
|
||||||
- { id: 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!
|
New to object-orientated PHP, Symfony or YAML, and want to get started building modules in Drupal 8? This is the session for you!
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,11 @@
|
||||||
---
|
---
|
||||||
|
id: drupal-8-rejoining-the-herd
|
||||||
title: Drupal 8: Rejoining the Herd
|
title: Drupal 8: Rejoining the Herd
|
||||||
type: Talk
|
type: Talk
|
||||||
joindin: https://joind.in/talk/41d0f
|
|
||||||
tags: [conference, php, drupal, drupal-8]
|
tags: [conference, php, drupal, drupal-8]
|
||||||
slides:
|
slides:
|
||||||
url: https://speakerdeck.com/opdavies/drupal-rejoining-the-herd
|
url: https://speakerdeck.com/opdavies/drupal-rejoining-the-herd
|
||||||
embed: <script async class="speakerdeck-embed" data-id="440fd6592f474741bc606c96bc32c104" data-ratio="1.37081659973226" src="//speakerdeck.com/assets/embed.js"></script>
|
embed: <script async class="speakerdeck-embed" data-id="440fd6592f474741bc606c96bc32c104" data-ratio="1.37081659973226" src="//speakerdeck.com/assets/embed.js"></script>
|
||||||
events:
|
|
||||||
- { id: phpsc-16, date: '2016-06-11' }
|
|
||||||
---
|
---
|
||||||
[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!
|
[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!
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
---
|
---
|
||||||
|
id: drupal-8
|
||||||
title: Drupal 8
|
title: Drupal 8
|
||||||
type: Lightning talk
|
type: Lightning talk
|
||||||
slides:
|
slides:
|
||||||
|
@ -7,11 +8,8 @@ slides:
|
||||||
video:
|
video:
|
||||||
url: https://www.youtube.com/watch?v=36zCxPrOOzM
|
url: https://www.youtube.com/watch?v=36zCxPrOOzM
|
||||||
embed: <iframe width="560" height="315" src="https://www.youtube.com/embed/36zCxPrOOzM" frameborder="0" allowfullscreen></iframe>
|
embed: <iframe width="560" height="315" src="https://www.youtube.com/embed/36zCxPrOOzM" frameborder="0" allowfullscreen></iframe>
|
||||||
joindin: https://joind.in/talk/view/14380
|
|
||||||
tags: [meetup, phpsw, drupal, drupal-8]
|
tags: [meetup, phpsw, drupal, drupal-8]
|
||||||
tweets: yes
|
tweets: yes
|
||||||
events:
|
|
||||||
- { id: phpsw, date: '2015-04-08' }
|
|
||||||
---
|
---
|
||||||
This was a ten minute lightning talk, designed to highlight the major changes coming in Drupal 8.
|
This was a ten minute lightning talk, designed to highlight the major changes coming in Drupal 8.
|
||||||
|
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
---
|
|
||||||
title: About the Drupal Association
|
|
||||||
type: Talk
|
|
||||||
tags: [meetup, swdug, drupal, drupal-association]
|
|
||||||
slug: drupal-association
|
|
||||||
events:
|
|
||||||
- { id: swdug, date: '2014-08-19' }
|
|
||||||
hide_page: true
|
|
||||||
---
|
|
||||||
An impromptu talk about the [Drupal Association](https://association.drupal.org), and what I’ve been working on since joining the Engineering team earlier in the year.
|
|
|
@ -1,4 +1,5 @@
|
||||||
---
|
---
|
||||||
|
id: drupal-development-with-composer
|
||||||
title: Modern Drupal Development with Composer
|
title: Modern Drupal Development with Composer
|
||||||
type: Lightning talk
|
type: Lightning talk
|
||||||
tags: ['meetups', 'phpsw', 'drupal', 'composer']
|
tags: ['meetups', 'phpsw', 'drupal', 'composer']
|
||||||
|
@ -8,8 +9,6 @@ slides:
|
||||||
video:
|
video:
|
||||||
url: https://www.youtube.com/watch?v=Yi_FPI3xHwc
|
url: https://www.youtube.com/watch?v=Yi_FPI3xHwc
|
||||||
embed: '<iframe width="560" height="315" src="https://www.youtube.com/embed/Yi_FPI3xHwc" frameborder="0" allowfullscreen></iframe>'
|
embed: '<iframe width="560" height="315" src="https://www.youtube.com/embed/Yi_FPI3xHwc" frameborder="0" allowfullscreen></iframe>'
|
||||||
events:
|
|
||||||
- { id: 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.
|
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.
|
||||||
|
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
---
|
|
||||||
title: Drupal and the LDAP Module
|
|
||||||
type: Talk
|
|
||||||
tags: [meetup, swdug, drupal, ldap]
|
|
||||||
slug: drupal-ldap
|
|
||||||
logo: assets/images/talks/logos/swdug.png
|
|
||||||
events:
|
|
||||||
- { id: swdug, date: '2013-07-10' }
|
|
||||||
hide_page: true
|
|
||||||
---
|
|
|
@ -1,4 +1,5 @@
|
||||||
---
|
---
|
||||||
|
id: drupal-vm-generator
|
||||||
title: Drupal VM Generator
|
title: Drupal VM Generator
|
||||||
type: Lightning talk
|
type: Lightning talk
|
||||||
code: https://github.com/opdavies/drupal-vm-generator
|
code: https://github.com/opdavies/drupal-vm-generator
|
||||||
|
@ -9,9 +10,6 @@ slides:
|
||||||
video:
|
video:
|
||||||
url: https://youtu.be/U1pbKAAO2Wo?t=3696
|
url: https://youtu.be/U1pbKAAO2Wo?t=3696
|
||||||
embed: <iframe width="560" height="315" src="https://www.youtube.com/embed/U1pbKAAO2Wo?start=3696" frameborder="0" allowfullscreen></iframe>
|
embed: <iframe width="560" height="315" src="https://www.youtube.com/embed/U1pbKAAO2Wo?start=3696" frameborder="0" allowfullscreen></iframe>
|
||||||
events:
|
|
||||||
- { id: nwdug, date: '2016-03-08' }
|
|
||||||
- { id: drupal-bristol, date: '2016-04-02' }
|
|
||||||
---
|
---
|
||||||
An short talk about the [Drupal VM Generator][1] project.
|
An short talk about the [Drupal VM Generator][1] project.
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
---
|
---
|
||||||
|
id: drupal-vm-meet-symfony-console
|
||||||
title: Drupal VM, Meet Symfony Console
|
title: Drupal VM, Meet Symfony Console
|
||||||
type: Talk
|
type: Talk
|
||||||
tags: [conference, php, drupal-vm, symfony]
|
tags: [conference, php, drupal-vm, symfony]
|
||||||
|
@ -6,8 +7,6 @@ slides:
|
||||||
url: https://speakerdeck.com/opdavies/drupal-vm-meet-symfony-console
|
url: https://speakerdeck.com/opdavies/drupal-vm-meet-symfony-console
|
||||||
embed: <script async class="speakerdeck-embed" data-id="56c79770f73f4e47a542a30243437c49" data-ratio="1.37081659973226" src="//speakerdeck.com/assets/embed.js"></script>
|
embed: <script async class="speakerdeck-embed" data-id="56c79770f73f4e47a542a30243437c49" data-ratio="1.37081659973226" src="//speakerdeck.com/assets/embed.js"></script>
|
||||||
image: drupal-vm-meet-symfony-console.png
|
image: drupal-vm-meet-symfony-console.png
|
||||||
events:
|
|
||||||
- { id: drupalcamp-bristol-16, date: '2016-07-23' }
|
|
||||||
---
|
---
|
||||||
_TL;DR - Come and learn about Symfony Console, with examples from a real-world project._
|
_TL;DR - Come and learn about Symfony Console, with examples from a real-world project._
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,9 @@
|
||||||
---
|
---
|
||||||
|
id: drupalorg-2015
|
||||||
title: Drupal.org in 2015: What's Coming Next
|
title: Drupal.org in 2015: What's Coming Next
|
||||||
type: Talk
|
type: Talk
|
||||||
tags: [conference, drupalcamp, drupalcamp-london, drupal-association]
|
tags: [conference, drupalcamp, drupalcamp-london, drupal-association]
|
||||||
slides:
|
slides:
|
||||||
url: https://speakerdeck.com/opdavies/drupal-dot-org-in-15
|
url: https://speakerdeck.com/opdavies/drupal-dot-org-in-15
|
||||||
embed: <script async class="speakerdeck-embed" data-id="0cf8d7b647c94ae289e9db2b46a9e8f2" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>
|
embed: <script async class="speakerdeck-embed" data-id="0cf8d7b647c94ae289e9db2b46a9e8f2" data-ratio="1.77777777777778" src="//speakerdeck.com/assets/embed.js"></script>
|
||||||
events:
|
|
||||||
- { id: drupalcamp-brighton-15, date: '2015-01-18' }
|
|
||||||
- { id: drupalcamp-london-15, date: '2015-02-28' }
|
|
||||||
---
|
---
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
---
|
---
|
||||||
|
id: drush-make-drupalbristol
|
||||||
title: drush make drupalbristol
|
title: drush make drupalbristol
|
||||||
type: Talk
|
type: Talk
|
||||||
slides:
|
slides:
|
||||||
url: https://speakerdeck.com/opdavies/drush-make-drupalbristol
|
url: https://speakerdeck.com/opdavies/drush-make-drupalbristol
|
||||||
embed: <script async class="speakerdeck-embed" data-id="42605700f102013198de5a5f6f23ab67" data-ratio="1.29456384323641" src="//speakerdeck.com/assets/embed.js"></script>
|
embed: <script async class="speakerdeck-embed" data-id="42605700f102013198de5a5f6f23ab67" data-ratio="1.29456384323641" src="//speakerdeck.com/assets/embed.js"></script>
|
||||||
tags: [meetup, drupal, drupal-bristol, drush, drush-make]
|
tags: [meetup, drupal, drupal-bristol, drush, drush-make]
|
||||||
events:
|
|
||||||
- { id: drupal-bristol, date: '2014-07-02' }
|
|
||||||
---
|
---
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
---
|
---
|
||||||
|
id: getting-your-data-into-drupal-8
|
||||||
title: Getting (Your Data) Into Drupal 8
|
title: Getting (Your Data) Into Drupal 8
|
||||||
type: Talk
|
type: Talk
|
||||||
slides:
|
slides:
|
||||||
|
@ -18,9 +19,6 @@ meta:
|
||||||
width: 2560
|
width: 2560
|
||||||
height: 1440
|
height: 1440
|
||||||
type: image/png
|
type: image/png
|
||||||
events:
|
|
||||||
- { id: drupal-bristol, date: '2017-01-18' }
|
|
||||||
- { id: 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.
|
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.
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
---
|
---
|
||||||
|
id: git-flow
|
||||||
title: Never Commit to Master - An Introduction to Git Flow
|
title: Never Commit to Master - An Introduction to Git Flow
|
||||||
type: Talk
|
type: Talk
|
||||||
slides:
|
slides:
|
||||||
|
@ -10,6 +11,4 @@ video:
|
||||||
tags: [conference, drupalcamp, drupalcamp-london, git, git-flow]
|
tags: [conference, drupalcamp, drupalcamp-london, git, git-flow]
|
||||||
slug: git-flow
|
slug: git-flow
|
||||||
tweets: yes
|
tweets: yes
|
||||||
events:
|
|
||||||
- { id: drupalcamp-london-14, date: '2014-03-01' }
|
|
||||||
---
|
---
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
---
|
---
|
||||||
|
id: goodbye-drush-make-hello-composer
|
||||||
title: Goodbye Drush Make. Hello Composer!
|
title: Goodbye Drush Make. Hello Composer!
|
||||||
type: Talk
|
type: Talk
|
||||||
tags: ['meetup', 'drupal', 'composer']
|
tags: ['meetup', 'drupal', 'composer']
|
||||||
slides:
|
slides:
|
||||||
url: http://bit.ly/slides-goodbye-drush-make-hello-composer2
|
url: http://bit.ly/slides-goodbye-drush-make-hello-composer2
|
||||||
embed: '<script async class="speakerdeck-embed" data-id="1c1e0e129ab34816bd4c4edb5f6642c2" data-ratio="1.37081659973226" src="//speakerdeck.com/assets/embed.js"></script>'
|
embed: '<script async class="speakerdeck-embed" data-id="1c1e0e129ab34816bd4c4edb5f6642c2" data-ratio="1.37081659973226" src="//speakerdeck.com/assets/embed.js"></script>'
|
||||||
events:
|
|
||||||
- { id: 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.
|
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.
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
---
|
---
|
||||||
|
id: it-all-started-with-a-patch
|
||||||
title: It All Started With A Patch
|
title: It All Started With A Patch
|
||||||
type: Lightning talk
|
type: Lightning talk
|
||||||
tags: [meetup, phpsw, open-source]
|
tags: [meetup, phpsw, open-source]
|
||||||
|
@ -8,8 +9,5 @@ slides:
|
||||||
video:
|
video:
|
||||||
url: https://www.youtube.com/watch?v=5FYMRR61sdo
|
url: https://www.youtube.com/watch?v=5FYMRR61sdo
|
||||||
embed: '<iframe width="560" height="315" src="https://www.youtube.com/embed/5FYMRR61sdo" frameborder="0" allowfullscreen></iframe>'
|
embed: '<iframe width="560" height="315" src="https://www.youtube.com/embed/5FYMRR61sdo" frameborder="0" allowfullscreen></iframe>'
|
||||||
joindin: https://joind.in/event/phpsw-new-skills-february-17/it-started-with-a-patch
|
|
||||||
events:
|
|
||||||
- { id: phpsw, date: '2017-02-08' }
|
|
||||||
---
|
---
|
||||||
A crash course of why and how to get involved with open source.
|
A crash course of why and how to get involved with open source.
|
||||||
|
|
|
@ -1,18 +1,16 @@
|
||||||
---
|
---
|
||||||
|
id: sculpin
|
||||||
title: Building Static Websites with Sculpin
|
title: Building Static Websites with Sculpin
|
||||||
type: Lightning talk
|
type: Lightning talk
|
||||||
slides:
|
slides:
|
||||||
url: https://speakerdeck.com/opdavies/building-static-websites-with-sculpin
|
url: https://speakerdeck.com/opdavies/building-static-websites-with-sculpin
|
||||||
embed: <script async class="speakerdeck-embed" data-id="6c9c4be1a1344f1291ff13a391674a66" data-ratio="1.37081659973226" src="//speakerdeck.com/assets/embed.js"></script>
|
embed: <script async class="speakerdeck-embed" data-id="6c9c4be1a1344f1291ff13a391674a66" data-ratio="1.37081659973226" src="//speakerdeck.com/assets/embed.js"></script>
|
||||||
code: https://github.com/opdavies/sculpin-demo
|
code: https://github.com/opdavies/sculpin-demo
|
||||||
joindin: https://joind.in/talk/view/15486
|
|
||||||
tags: [meetups, phpsw, sculpin]
|
tags: [meetups, phpsw, sculpin]
|
||||||
tweets: yes
|
tweets: yes
|
||||||
video:
|
video:
|
||||||
embed: <iframe width="560" height="315" src="https://www.youtube.com/embed/aN53arCKZAU" frameborder="0" allowfullscreen></iframe>
|
embed: <iframe width="560" height="315" src="https://www.youtube.com/embed/aN53arCKZAU" frameborder="0" allowfullscreen></iframe>
|
||||||
url: https://www.youtube.com/watch?v=aN53arCKZAU
|
url: https://www.youtube.com/watch?v=aN53arCKZAU
|
||||||
events:
|
|
||||||
- { id: phpsw, date: '2015-10-14' }
|
|
||||||
---
|
---
|
||||||
[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.
|
[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.
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
---
|
---
|
||||||
|
id: test-drive-twig-with-sculpin
|
||||||
title: Test Drive Twig with Sculpin
|
title: Test Drive Twig with Sculpin
|
||||||
type: Talk
|
type: Talk
|
||||||
slides:
|
slides:
|
||||||
|
@ -7,8 +8,6 @@ slides:
|
||||||
code: https://github.com/opdavies/sculpin-demo
|
code: https://github.com/opdavies/sculpin-demo
|
||||||
tags: [conference, drupalcamp, drupalcamp-north, sculpin, twig]
|
tags: [conference, drupalcamp, drupalcamp-north, sculpin, twig]
|
||||||
tweets: yes
|
tweets: yes
|
||||||
events:
|
|
||||||
- { id: 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.
|
[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.
|
||||||
|
|
||||||
|
|
|
@ -18,8 +18,6 @@ meta:
|
||||||
width: 2560
|
width: 2560
|
||||||
height: 1440
|
height: 1440
|
||||||
type: image/png
|
type: image/png
|
||||||
events:
|
|
||||||
- { id: drupalcamp-london-17, date: '2017-03-04', time: '16:15 - 17:00' }
|
|
||||||
---
|
---
|
||||||
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.
|
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.
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
---
|
---
|
||||||
|
id: what-is-this-drupal-thing
|
||||||
title: So, what is this Drupal thing?
|
title: So, what is this Drupal thing?
|
||||||
type: Talk
|
type: Talk
|
||||||
video:
|
video:
|
||||||
url: https://vimeo.com/49827006
|
url: https://vimeo.com/49827006
|
||||||
embed: <iframe src="https://player.vimeo.com/video/49827006" width="640" height="360" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
|
embed: <iframe src="https://player.vimeo.com/video/49827006" width="640" height="360" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
|
||||||
tags: [meetup, drupal, unified-diff]
|
tags: [meetup, drupal, unified-diff]
|
||||||
events:
|
|
||||||
- { id: udiff, date: '2012-09-05' }
|
|
||||||
---
|
---
|
||||||
|
|
|
@ -33,12 +33,21 @@
|
||||||
<h2>Events</h2>
|
<h2>Events</h2>
|
||||||
|
|
||||||
{% set events = [] %}
|
{% set events = [] %}
|
||||||
{% for event in page.events %}
|
{% for date in site.events.dates %}
|
||||||
{% set event = event|merge({ talk: page })|merge(site.events[event.id]) %}
|
{% set key = (date.talk.id is defined) ? date.talk.id : date.talk %}
|
||||||
{% set events = events|merge([event]) %}
|
{% set talk = (page.id is defined) ? page.id : page.url|split('/')|last %}
|
||||||
|
{% if key == talk %}
|
||||||
|
{% set events = events|merge([{
|
||||||
|
date: date,
|
||||||
|
event: site.events.events[date.event],
|
||||||
|
}]) %}
|
||||||
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% include "talks-table" with { events: events, hide_talk: true } %}
|
{% include 'talks-table' with {
|
||||||
|
events: events,
|
||||||
|
talk_page: true,
|
||||||
|
} %}
|
||||||
</div>{# .talk-events #}
|
</div>{# .talk-events #}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|
54
source/talks.md
Normal file
54
source/talks.md
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
---
|
||||||
|
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|reverse|merge([{
|
||||||
|
date: date,
|
||||||
|
event: site.events.events[date.event],
|
||||||
|
talks: data.talks,
|
||||||
|
}]) %}
|
||||||
|
{% else %}
|
||||||
|
{% set past_events = past_events|merge([{
|
||||||
|
date: date,
|
||||||
|
event: site.events.events[date.event],
|
||||||
|
talks: data.talks,
|
||||||
|
}]) %}
|
||||||
|
{% 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[:5] } %}
|
||||||
|
|
||||||
|
You can view more talks in the [talks archive][3].
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block stylesheets %}
|
||||||
|
<link rel="stylesheet" href="{{ site.url }}/assets/css/talks-table.css">
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
[0]: {{site.url}}/contact
|
||||||
|
[1]: {{site.lanyrd.url}}
|
||||||
|
[2]: {{site.joindin.url}}
|
||||||
|
[3]: {{site.url}}/talks/archive
|
|
@ -1,50 +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 %}
|
|
||||||
<h1>Talks</h1>
|
|
||||||
|
|
||||||
<p>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 <a href="/contact/">get in touch</a>.</p>
|
|
||||||
|
|
||||||
<p>There is also information about events that I’ve attended and spoken at on my <a href="{{ site.lanyrd.url }}">Lanyrd</a> and <a href="{{ site.joindin.url }}">Joind.in</a> profiles.</p>
|
|
||||||
|
|
||||||
{% set upcoming_events = [] %}
|
|
||||||
{% set past_events = [] %}
|
|
||||||
|
|
||||||
{% for talk in data.talks %}
|
|
||||||
{% for event in talk.events if event.date >= 'today'|date('Y-m-d') %}
|
|
||||||
{% set event = event|merge({ talk: talk })|merge(site.events[event.id]) %}
|
|
||||||
{% set upcoming_events = upcoming_events|merge([event]) %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% for event in talk.events if event.date < 'today'|date('Y-m-d') %}
|
|
||||||
{% set event = event|merge({ talk: talk })|merge(site.events[event.id]) %}
|
|
||||||
{% set past_events = past_events|merge([event]) %}
|
|
||||||
{% endfor %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% if upcoming_events is not empty %}
|
|
||||||
<h2>Upcoming Talks</h2>
|
|
||||||
|
|
||||||
{% include "talks-table" with {
|
|
||||||
events: upcoming_events|sortbyfield('date'),
|
|
||||||
hide_feedback: true,
|
|
||||||
} %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<h2>Last 5 Talks</h2>
|
|
||||||
|
|
||||||
{% include "talks-table" with {
|
|
||||||
events: past_events|sortbyfield('date')|reverse[:5]
|
|
||||||
} %}
|
|
||||||
|
|
||||||
<p>You can view more talks in the <a href="/talks/archive">talks archive</a>.</p>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block stylesheets %}
|
|
||||||
<link rel="stylesheet" href="{{ site.url }}/assets/css/talks-table.css">
|
|
||||||
{% endblock %}
|
|
|
@ -4,15 +4,13 @@ layout: page
|
||||||
use: [talks]
|
use: [talks]
|
||||||
---
|
---
|
||||||
{% set events = [] %}
|
{% set events = [] %}
|
||||||
{% for talk in data.talks %}
|
|
||||||
{% for event in talk.events if event.date < 'today'|date('Y-m-d') %}
|
{% for date in site.events.dates|reverse if date.date < "today"|date("Y-m-d") %}
|
||||||
{% set event = event|merge({ talk: talk })|merge(site.events[event.id]) %}
|
{% set events = events|merge([{
|
||||||
{% set events = events|merge([event]) %}
|
date: date,
|
||||||
{% endfor %}
|
event: site.events.events[date.event],
|
||||||
|
talks: data.talks,
|
||||||
|
}]) %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
{% include "talks-table" with {
|
{% include 'talks-table' with { events: events } %}
|
||||||
events: events|sortbyfield('date')|reverse,
|
|
||||||
show_feedback: true,
|
|
||||||
show_talk: true
|
|
||||||
} %}
|
|
||||||
|
|
Reference in a new issue