Initial commit

This commit is contained in:
Paul Nicoué 2022-06-17 17:51:59 +02:00
commit 73c6b816c0
716 changed files with 170045 additions and 0 deletions

View file

@ -0,0 +1,34 @@
title: Artwork
accept:
mime: image/jpeg, image/png, video/mp4
fields:
alt_text:
when:
file_type: image
label:
en: Alternative text
fr: Texte alternatif
type: text
poster:
when:
file_type: video
label:
en: Poster
fr: Vignette
type: files
uploads: image
layout: cards
image:
ratio: 16/9
cover: true
back: white
multiple: false
help:
en: "Image displayed before video playback (format: JPEG or PNG). The first image of the video is used if this field is empty."
fr: "Image affichée avant la lecture de la vidéo (format : JPEG ou PNG). La première image de la vidéo est utilisée si ce champ est vide."
width: 1/4
caption:
label:
en: Caption
fr: Légende
type: text

View file

@ -0,0 +1,14 @@
title: Image
accept:
mime: image/jpeg, image/png
fields:
alt_text:
label:
en: Alternative text
fr: Texte alternatif
type: text
caption:
label:
en: Caption
fr: Légende
type: text

View file

@ -0,0 +1,21 @@
title:
en: Biography
fr: Biographie
icon: text
status:
draft: true
unlisted: true
options:
changeSlug:
admin: true
editor: false
changeStatus: false
changeTemplate: false
changeTitle:
admin: true
editor: false
delete: false
duplicate: false
tabs:
content: tabs/biography_content
seo: tabs/biography_seo

View file

@ -0,0 +1,5 @@
title:
en: Error
fr: Erreur
options:
read: false

View file

@ -0,0 +1,10 @@
title:
en: Gallery
fr: Galerie
icon: file-image
status:
draft: true
listed: true
tabs:
content: tabs/gallery_content
seo: tabs/gallery_seo

View file

@ -0,0 +1,21 @@
title:
en: Home
fr: Accueil
icon: home
status:
draft: true
unlisted: true
options:
changeSlug:
admin: true
editor: false
changeStatus: false
changeTemplate: false
changeTitle:
admin: true
editor: false
delete: false
duplicate: false
tabs:
content: tabs/home_content
seo: tabs/home_seo

View file

@ -0,0 +1,20 @@
type: fields
fields:
text:
label:
en: Presentation text
fr: Texte de présentation
type: textarea
required: true
size: large
buttons:
- headlines
- '|'
- bold
- italic
- '|'
- link
- email
- '|'
- ul
- '|'

View file

@ -0,0 +1,12 @@
headline:
en: Artworks
fr: Œuvres
type: files
template: artwork
min: 1
layout: cards
size: small
limit: 40
image:
ratio: 1/1
back: white

View file

@ -0,0 +1,19 @@
type: fields
fields:
text:
label:
en: Introduction text
fr: Texte d'introduction
type: textarea
size: medium
buttons:
- headlines
- '|'
- bold
- italic
- '|'
- link
- email
- '|'
- ul
- '|'

View file

@ -0,0 +1,43 @@
type: fields
fields:
meta_description:
label:
en: Meta description
fr: Méta description
type: textarea
size: small
buttons: false
help:
en: "Short description of the page displayed by search engines and social networks (recommended maximum length: 160 characters). Home page meta description is used if this field is empty."
fr: "Courte description de la page affichée par les moteurs de recherche et les réseaux sociaux (taille maximale conseillée : 160 caractères). La méta description de la page d'accueil est utilisée si ce champ est vide."
width: 3/4
gap:
type: gap
width: 1/4
meta_image:
label:
en: Meta image
fr: Méta image
type: image-clip
query: page.images
uploads: image
layout: cards
image:
cover: true
back: white
multiple: false
clip:
minwidth: 1200
minheight: 675
ratio: fixed
help:
en: "Image displayed by social networks (format: JPEG or PNG). Home page meta image is used if this field is empty."
fr: "Image affichée par les réseaux sociaux (format : JPEG ou PNG). La méta image de la page d'accueil est utilisée si ce champ est vide."
width: 1/4
# Hidden fields
og_type:
type: hidden
default: article
twitter_card_type:
type: hidden
default: summary_large_image

View file

@ -0,0 +1,12 @@
headline:
en: Background image
fr: Image de fond
type: files
template: image
min: 1
max: 1
layout: cards
size: medium
image:
ratio: 1/1
back: white

View file

@ -0,0 +1,18 @@
headline:
en: Contact and social networks
fr: Contact et réseaux sociaux
type: fields
fields:
email:
label:
en: Email
fr: Adresse e-mail
type: email
required: true
instagram:
type: url
label:
en: Instagram account
fr: Compte Instagram
icon: instagram
required: true

View file

@ -0,0 +1,44 @@
type: fields
fields:
meta_description:
label:
en: Meta description
fr: Méta description
type: textarea
size: small
buttons: false
required: true
help:
en: "Short description of the page displayed by search engines and social networks (recommended maximum length: 160 characters)."
fr: "Courte description de la page affichée par les moteurs de recherche et les réseaux sociaux (taille maximale conseillée : 160 caractères)."
width: 3/4
gap:
type: gap
width: 1/4
meta_image:
label:
en: Meta image
fr: Méta image
type: image-clip
query: page.images
layout: cards
image:
cover: true
back: white
multiple: false
required: true
clip:
minwidth: 1200
minheight: 675
ratio: fixed
help:
en: "Image displayed by social networks (format: JPEG or PNG)."
fr: "Image affichée par les réseaux sociaux (format : JPEG ou PNG)."
width: 1/4
# Hidden fields
og_type:
type: hidden
default: website
twitter_card_type:
type: hidden
default: summary_large_image

View file

@ -0,0 +1,14 @@
headline:
en: Galleries
fr: Galeries
type: pages
template: gallery
min: 2
max: 4
layout: cards
size: small
image:
ratio: 1/1
cover: true
query: page.images.template('artwork').sortBy('sort').first
back: white

View file

@ -0,0 +1,14 @@
headline:
en: Pages
fr: Pages
type: pages
templates:
- home
- biography
sortBy: title asc
create: false
layout: cardlets
image:
cover: true
query: page.images.template('image').first
back: white

6
site/blueprints/site.yml Normal file
View file

@ -0,0 +1,6 @@
title:
en: Website
fr: Site web
tabs:
content: tabs/site_content
analytics: tabs/site_analytics

View file

@ -0,0 +1,6 @@
label:
en: Content
fr: Contenu
icon: text
sections:
presentation: sections/biography_content_presentation

View file

@ -0,0 +1,6 @@
label:
en: SEO
fr: Référencement
icon: search
sections:
seo_basic_meta: sections/generic_seo_metadata

View file

@ -0,0 +1,7 @@
label:
en: Content
fr: Contenu
icon: text
sections:
introduction: sections/gallery_content_introduction
artworks: sections/gallery_content_artworks

View file

@ -0,0 +1,6 @@
label:
en: SEO
fr: Référencement
icon: search
sections:
seo_basic_meta: sections/generic_seo_metadata

View file

@ -0,0 +1,11 @@
label:
en: Content
fr: Contenu
icon: text
columns:
- width: 1/2
sections:
background_image: sections/home_content_background_image
- width: 1/2
sections:
contact: sections/home_content_contact

View file

@ -0,0 +1,6 @@
label:
en: SEO
fr: Référencement
icon: search
sections:
seo_basic_meta: sections/home_seo_metadata

View file

@ -0,0 +1,15 @@
label:
en: Analytics
fr: Audience
icon: chart
columns:
- width: 1/4
sticky: true
sections:
sidebar:
type: matomo-sidebar
link: false
- width: 3/4
sections:
main:
type: matomo-main

View file

@ -0,0 +1,12 @@
label:
en: Website
fr: Site web
icon: home
columns:
- width: 1/4
sticky: true
sections:
pages: sections/site_content_pages
- width: 3/4
sections:
galleries: sections/site_content_galleries

View file

@ -0,0 +1,18 @@
title:
en: Administrator
fr: Administrateur·ice
description:
en: The Administrator has all rights
fr: L'Administrateur·ice dispose de tous les droits
sections:
info:
headline:
en: Website
fr: Site internet
theme: none
width: 1/2
text:
en: |
(link: https://paulnicoue.com text: paulnicoue.com target: _blank)
fr: |
(link: https://www.paulnicoue.com text: paulnicoue.com target: _blank)

View file

@ -0,0 +1,29 @@
title:
en: Editor
fr: Éditeur·ice
description:
en: The Editor can create and edit pages
fr: L'éditeur·ice peut créer et modifier des pages
permissions:
access:
settings: false
languages:
create: false
delete: false
site:
changeTitle: false
user:
changeRole: false
delete: false
users:
changeEmail: false
changeLanguage: false
changeName: false
changePassword: false
changeRole: false
create: false
delete: false
update: false
sections:
info: false

0
site/cache/index.html vendored Normal file
View file

View file

@ -0,0 +1,10 @@
<?php
return [
// Kirby configuration settings (production environment)
'debug' => false,
// Matomo plugin options (critical keys)
'sylvainjule.matomo' => [
// 'token' => 'a3d53082e369334813c0ed93d5a80db6'
]
];

View file

@ -0,0 +1,10 @@
<?php
return [
// Kirby configuration settings (development environment)
'debug' => true,
// Matomo plugin options (critical keys)
'sylvainjule.matomo' => [
// 'token' => 'a3d53082e369334813c0ed93d5a80db6'
]
];

41
site/config/config.php Normal file
View file

@ -0,0 +1,41 @@
<?php
return [
// Kirby configuration settings
'home' => 'accueil',
'error' => 'erreur',
'panel' => [
'language' => 'fr',
'css' => 'assets/css/panel.min.css'
],
// Sitemapper plugin options
'kirbyzone.sitemapper' => [
'intro' => false,
'byLine' => 'Sitemap generated with <a href="https://github.com/kirbyzone/sitemapper" target="_blank">Sitemapper by Kirbyzone</a>.'
],
// Hooks
'hooks' => [
'file.create:after' => function($file) {
// Populate file_type field with $file->type() method after file creation
if ($file->type()) {
$file->update([
'file_type' => $file->type()
]);
}
},
'kirbytext:after' => function (string $text) {
// Replace any HTML <h1> or <h2> tag by <h3> tag after Markdown parsing
return preg_replace(['/<h1>|<h2>/', '/<\/h1>|<\/h2>/'], ['<h3>', '</h3>'], $text);
}
],
// Thumbnails and srcsets presets
'thumbs' => [
'srcsets' => [
'default' => [
'640w' => ['width' => 640, 'quality' => 80],
'1280w' => ['width' => 1280, 'quality' => 80],
'1920w' => ['width' => 1920, 'quality' => 80]
]
]
]
];

View file

@ -0,0 +1,5 @@
<!-- Favicon -->
<link rel="icon" sizes="any" href="assets/favicon/xiao-wang-favicon.ico">
<link rel="icon" type="image/svg+xml" href="assets/favicon/xiao-wang-favicon.svg">
<link rel="apple-touch-icon" href="assets/favicon/xiao-wang-apple-touch-icon.png">
<link rel="manifest" href="assets/favicon/xiao-wang.webmanifest">

View file

@ -0,0 +1,73 @@
<!-- Basic metadata -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<html lang="fr">
<!-- Schema -->
<style itemscope itemtype="https://schema.org/WebSite" itemref="schema_name schema_description schema_image"></style>
<!-- Title -->
<title>{{ site.title }} | {{ page.title }}</title>
<meta id="schema_name" itemprop="name" content="{{ site.title }} | {{ page.title }}">
<!-- Description -->
{% if page.meta_description is not empty %}
<meta name="description" content="{{ page.meta_description }}">
<meta id="schema_description" itemprop="description" content="{{ page.meta_description }}">
{% elseif site.homePage.meta_description is not empty %}
<meta name="description" content="{{ site.homePage.meta_description }}">
<meta id="schema_description" itemprop="description" content="{{ site.homePage.meta_description }}">
{% endif %}
<!-- Canonical URL -->
<link rel="canonical" href="{{ page.url }}">
<!-- Author -->
<meta name="author" content="{{ site.title }}">
<!-- Date -->
<meta name="date" content="{{ page.modified('Y-m-d') }}">
<!-- Image -->
{% if page.meta_image is not empty %}
<meta id="schema_image" itemprop="image" content="{{ page.meta_image.toImage.url }}">
{% elseif site.homePage.meta_image is not empty %}
<meta id="schema_image" itemprop="image" content="{{ site.homePage.meta_image.toImage.url }}">
{% endif %}
{% if page.template != 'error' %}
<!-- Open Graph -->
<meta property="og:title" content="{{ site.title ~ ' | ' ~ page.title }}">
{% if page.meta_description is not empty %}
<meta property="og:description" content="{{ page.meta_description }}">
{% elseif site.homePage.meta_description is not empty %}
<meta property="og:description" content="{{ site.homePage.meta_description }}">
{% endif %}
{% if page.meta_image is not empty %}
<meta property="og:image" content="{{ page.meta_image.toImage.clip(1200, 675).url }}">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="675">
{% elseif site.homePage.meta_image is not empty %}
<meta property="og:image" content="{{ site.homePage.meta_image.toImage.clip(1200, 675).url }}">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="675">
{% endif %}
<meta property="og:url" content="{{ page.url }}">
<meta property="og:type" content="{{ page.og_type }}">
<!-- Twitter Card -->
<meta name="twitter:card" content="{{ page.twitter_card_type.value }}">
<meta name="twitter:title" content="{{ site.title ~ ' | ' ~ page.title }}">
{% if page.meta_description is not empty %}
<meta name="twitter:description" content="{{ page.meta_description }}">
{% elseif site.homePage.meta_description is not empty %}
<meta name="twitter:description" content="{{ site.homePage.meta_description }}">
{% endif %}
{% if page.meta_image is not empty %}
<meta name="twitter:image" content="{{ page.meta_image.toImage.clip(1200, 675).url }}">
{% elseif site.homePage.meta_image is not empty %}
<meta name="twitter:image" content="{{ site.homePage.meta_image.toImage.clip(1200, 675).url }}">
{% endif %}
{% endif %}