Skip to content

Commit 444f36f

Browse files
committed
Create a dedicated card for OSPOs
1 parent b6e838f commit 444f36f

File tree

3 files changed

+85
-8
lines changed

3 files changed

+85
-8
lines changed

_includes/components/card_ospo.njk

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
{% if not card %}{% set card = params %}{% endif %}
2+
<div class="fr-card{% if not card.externalUrl %} fr-enlarge-link{% endif %} {{ card.addClass }}">
3+
<div class="fr-card__body">
4+
<div class="fr-card__content">
5+
{% set cardUrl = card.url | locale_url or card.externalUrl %}
6+
<h3 class="fr-card__title">
7+
{% if not card.externalUrl %}
8+
<a href="{{ cardUrl }}">
9+
{{ card.title }}
10+
</a>
11+
{% else %}{{ card.title }}
12+
{% endif %}
13+
</h3>
14+
<p><a href="mailto:{{ card.email }}">Contact</a></p>
15+
<p class="fr-card__desc">{{ card.description }}</p>
16+
<div class="fr-card__start">
17+
{% if card.tags %}
18+
{% set tags = card.tags %}
19+
{% include "components/taggroup-disabled.njk" %}
20+
{% endif %}
21+
{% if card.date %}
22+
<p class="fr-card__detail fr-icon-time-fill">
23+
<time class="postlist-date" datetime="{{ card.date | readableDate }}">
24+
{{ card.date | readableDate }}
25+
</time>
26+
</p>
27+
{% elif card.detail %}
28+
<p class="fr-card__detail">{{ card.detail }}</p>
29+
{% endif %}
30+
</div>
31+
{% if card.detailEnd %}
32+
<div class="fr-card__end">
33+
<p class="fr-card__detail">{{ card.detailEnd }}</p>
34+
</div>
35+
{% endif %}
36+
</div>
37+
<div class="fr-card__footer">
38+
{% if card.externalUrl %}
39+
<a class="fr-link fr-icon-arrow-right-line fr-link--icon-right" href="{{ card.externalUrl }}"
40+
title="{{ card.title }} - {{ "new_window" | i18n }}" target="_blank" rel="noopener">
41+
{{ card.urlDescription or "see_more" | i18n }}
42+
</a>
43+
{% endif %}
44+
</div>
45+
</div>
46+
{% if card.badges or card.image %}
47+
<div class="fr-card__header">
48+
{% if card.badges %}
49+
<ul class="fr-badges-group">
50+
{% for badge in card.badges %}
51+
<li><p class="fr-badge fr-badge--green-emeraude">{{ badge }}</p></li>
52+
{% endfor %}
53+
</ul>
54+
{% endif %}
55+
{% if card.image %}
56+
{% if card.image.path %}
57+
<div class="fr-card__img">{% imageSync card.image.path, card.image.alt %}</div>
58+
{% elif card.image.src %}
59+
<div class="fr-card__img">
60+
<img class="fr-responsive-img fr-responsive-img--1x1" src="{{ card.image.src }}" alt="{{ card.image.alt }}">
61+
</div>
62+
{% endif %}
63+
{% endif %}
64+
</div>
65+
{% endif %}
66+
</div>

content/fr/ospos/index.njk

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,14 @@ eleventyNavigation:
1717
<div class="fr-grid-row fr-grid-row--gutters">
1818
{% asyncAll ospo in ospos %}
1919
<div class="fr-col-12 fr-col-md-3">
20-
{{ component("card", {
20+
{{ component("card_ospo", {
2121
url: false,
22+
date: ospo.created,
2223
externalUrl: ospo.url,
2324
title: ospo.name,
24-
description: ospo.description
25+
description: ospo.description,
26+
email: ospo.email,
27+
pso_id: ospo.pso_id
2528
}) }}
2629
</div>
2730
{% endall %}

eleventy.config.js

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,15 +87,23 @@ module.exports = function (eleventyConfig) {
8787
});
8888

8989
eleventyConfig.addFilter("readableDate", function readableDate(dateObj, format, zone) {
90-
// Formatting tokens for Luxon: https://moment.github.io/luxon/#/formatting?id=table-of-tokens
91-
return DateTime.fromJSDate(dateObj, {zone: zone || "utc"})
92-
.setLocale(this.page.lang)
93-
.toFormat(format || "dd LLLL yyyy");
90+
// Handle both Date objects and ISO strings
91+
const dt = typeof dateObj === 'string'
92+
? DateTime.fromISO(dateObj, { zone: zone || "utc" })
93+
: DateTime.fromJSDate(dateObj, { zone: zone || "utc" });
94+
95+
return dt
96+
.setLocale(this.page.lang)
97+
.toFormat(format || "dd LLLL yyyy");
9498
});
9599

96100
eleventyConfig.addFilter("htmlDateString", (dateObj) => {
97-
// dateObj input: https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-date-string
98-
return DateTime.fromJSDate(dateObj, {zone: "utc"}).toFormat("yyyy-LL-dd");
101+
// Handle both Date objects and ISO strings
102+
const dt = typeof dateObj === 'string'
103+
? DateTime.fromISO(dateObj, { zone: "utc" })
104+
: DateTime.fromJSDate(dateObj, { zone: "utc" });
105+
106+
return dt.toFormat("yyyy-LL-dd");
99107
});
100108

101109
eleventyConfig.addFilter("getYear", (dateObj) => {

0 commit comments

Comments
 (0)