Skip to content

Commit 57c247c

Browse files
committed
Add downloadable document component
1 parent 0edc122 commit 57c247c

File tree

4 files changed

+127
-2
lines changed

4 files changed

+127
-2
lines changed

.github/DEVELOPMENT.md

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,32 @@ To enable the simple TOC on a specific page, add the following to the front matt
254254

255255
This configuration will automatically generate a "On this page" section at the beginning of the content, listing the specified headings based on the toc or tocSimple setting.
256256

257+
## Download Component
258+
259+
The `hasDocument` frontmatter key allows you to include a downloadable document component on your page. This component provides information about the file, including its size, type, and filename.
260+
261+
The logic for this component is located in the following file: `src/_includes/partials/download.njk`.
262+
263+
To enable the download component on a page, include the `hasDocument` object in the frontmatter with the following keys:
264+
265+
- `filename`: The name of the file to be downloaded, including the extension. Example: `"example_document.docx"`. Documents should be put in `src/_docs/`.
266+
- `sizeNumber`: The file size as a number. Example: `563`.
267+
- `sizeUnit`: The unit for the file size. Acceptable values are case-insensitive:
268+
- For English: `KB`, `MB`
269+
- For French: `ko`, `Mo`
270+
- `type`: (Optional) The type of document, such as `word` or `pdf`. If not specified, it defaults to the generic file type.
271+
272+
**Example Frontmatter:**
273+
274+
```yaml
275+
hasDocument:
276+
filename: "example_document.docx"
277+
sizeNumber: 563
278+
sizeUnit: KB
279+
type: word
280+
```
281+
282+
The file size and unit will automatically adapt to the current language (`locale`) set for the page.
257283
______________________
258284

259285
<div lang="fr">
@@ -308,7 +334,7 @@ Une fois que vous avez rencontré [les conditions préalables](#Exigences), suiv
308334

309335
`git remote add upstream https://github.com/gc-da11yn/gc-da11yn.github.io.git`
310336

311-
5. Récupérez toutes les dernières modifications. Cela fera en sorte que votre instance locale soit au courant de toutes les modifications récentes apportées à l'upstream du projet, mais rien ne sera mis à jour dans votre code.
337+
5. Récupérez toutes les dernières modifications. Cela fera en sorte que votre instance locale soit au courant de toutes les modifications récentes apportées à l'upstream du projet, mais rien ne sera mis à jour dans votre code.
312338

313339
`git fetch --all`
314340

@@ -507,4 +533,31 @@ Pour activer le TOC simple sur une page spécifique, ajoutez ce qui suit dans le
507533

508534
Cette configuration générera automatiquement une section "Sur cette page" au début du contenu, listant les titres spécifiés en fonction du paramètre `toc` ou `tocSimple`.
509535

536+
## Composant de téléchargement
537+
538+
La clé `hasDocument` dans le front matter vous permet d'ajouter un composant de document téléchargeable sur votre page. Ce composant fournit des informations sur le fichier, y compris sa taille, son type et son nom.
539+
540+
La logique de ce composant se trouve dans le fichier suivant : `src/_includes/partials/download.njk`.
541+
542+
Pour activer le composant de téléchargement sur une page, incluez l'objet `hasDocument` dans le frontmatter avec les clés suivantes :
543+
544+
- `filename` : Le nom du fichier à télécharger, y compris l'extension. Exemple : `"example_document.docx"`. Les documents doivent être placés dans `src/_docs/`.
545+
- `sizeNumber` : La taille du fichier en tant que nombre. Exemple : `563`.
546+
- `sizeUnit` : L'unité de la taille du fichier. Les valeurs acceptables ne tiennent pas compte de la casse :
547+
- Pour l'anglais : `KB`, `MB`
548+
- Pour le français : `ko`, `Mo`
549+
- `type` : (Optionnel) Le type de document, tel que `word` ou `pdf`. Si ce n'est pas spécifié, il sera défini par défaut sur le type de fichier générique.
550+
551+
**Exemple de front matter :**
552+
553+
```yaml
554+
hasDocument:
555+
filename: "example_document.docx"
556+
sizeNumber: 563
557+
sizeUnit: KB
558+
type: word
559+
```
560+
561+
La taille et l'unité du fichier s'adapteront automatiquement à la langue actuelle (`locale`) définie pour la page.
562+
510563
</div>

src/_data/download.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
module.exports = {
2+
en: {
3+
type: "Microsoft Word Document",
4+
altText: "Document Icon",
5+
sizeUnits: {
6+
KB: "KiloByte",
7+
MB: "MegaByte",
8+
},
9+
localizedUnits: {
10+
KB: "KB",
11+
MB: "MB",
12+
},
13+
downloadText: "Download the document",
14+
},
15+
fr: {
16+
type: "Document Microsoft Word",
17+
altText: "Icône de document",
18+
sizeUnits: {
19+
KB: "kilo-octet",
20+
MB: "méga-octet",
21+
},
22+
localizedUnits: {
23+
KB: "ko",
24+
MB: "Mo",
25+
},
26+
downloadText: "Télécharger le document",
27+
},
28+
unitMap: {
29+
kb: "KB", // Maps any case variation of KB
30+
KB: "KB",
31+
ko: "KB", // Maps French "ko" to "KB"
32+
KO: "KB",
33+
mb: "MB", // Maps any case variation of MB
34+
MB: "MB",
35+
mo: "MB", // Maps French "Mo" to "MB"
36+
MO: "MB",
37+
},
38+
};

src/_includes/layouts/base.njk

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,19 @@
3737
{% include "partials/office365Notice.njk" %}
3838
{% endif %}
3939

40+
{% if hasDocument %}
41+
{% include "partials/download.njk" %}
42+
{% endif %}
43+
4044
{% if toc or tocSimple %}
4145
{% include "partials/onThisPage.njk" %}
4246
{% endif %}
4347

4448
{{ content | safe }}
4549
{% if officeTOC === true %}
4650
{% include "partials/office-toc.njk" %}
51+
{% endif %}
4752
</div>
48-
{% endif %}
4953
{% include "partials/pagedetails.njk" %}
5054

5155
</main>
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{% set normalizedUnit = download.unitMap[hasDocument.sizeUnit | lower] or hasDocument.sizeUnit %}
2+
{% set translations = download[locale] %}
3+
<div class="row">
4+
<div class="col-sm-6">
5+
<a class="gc-dwnld-lnk" href="{{ rootPath }}docs/{{ hasDocument.filename }}" download="{{ title | stripTagsSlugify }}">
6+
<div class="well gc-dwnld">
7+
<div class="row">
8+
<div class="col-xs-4">
9+
<p>
10+
<img
11+
class="img-responsive thumbnail gc-dwnld-img"
12+
src="{{ rootPath }}img/doc.png"
13+
alt="" />
14+
</p>
15+
</div>
16+
<div class="col-xs-8">
17+
<p class="gc-dwnld-txt">
18+
<span>{{ title | safe }}</span>
19+
<span class="gc-dwnld-info">
20+
(<i class="fas fa-file-{{ hasDocument.type | lower }} mrg-rght-sm" aria-hidden="true"></i>
21+
{{ hasDocument.sizeNumber }}
22+
<abbr title="{{ translations.sizeUnits[normalizedUnit] }}">{{ translations.localizedUnits[normalizedUnit] }}</abbr>)
23+
</span>
24+
</p>
25+
</div>
26+
</div>
27+
</div>
28+
</a>
29+
</div>
30+
</div>

0 commit comments

Comments
 (0)