Initial commit
This commit is contained in:
commit
73c6b816c0
716 changed files with 170045 additions and 0 deletions
34
site/blueprints/files/artwork.yml
Normal file
34
site/blueprints/files/artwork.yml
Normal 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
|
14
site/blueprints/files/image.yml
Normal file
14
site/blueprints/files/image.yml
Normal 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
|
21
site/blueprints/pages/biography.yml
Normal file
21
site/blueprints/pages/biography.yml
Normal 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
|
5
site/blueprints/pages/error.yml
Normal file
5
site/blueprints/pages/error.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
title:
|
||||
en: Error
|
||||
fr: Erreur
|
||||
options:
|
||||
read: false
|
10
site/blueprints/pages/gallery.yml
Normal file
10
site/blueprints/pages/gallery.yml
Normal 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
|
21
site/blueprints/pages/home.yml
Normal file
21
site/blueprints/pages/home.yml
Normal 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
|
20
site/blueprints/sections/biography_content_presentation.yml
Normal file
20
site/blueprints/sections/biography_content_presentation.yml
Normal 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
|
||||
- '|'
|
12
site/blueprints/sections/gallery_content_artworks.yml
Normal file
12
site/blueprints/sections/gallery_content_artworks.yml
Normal 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
|
19
site/blueprints/sections/gallery_content_introduction.yml
Normal file
19
site/blueprints/sections/gallery_content_introduction.yml
Normal 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
|
||||
- '|'
|
43
site/blueprints/sections/generic_seo_metadata.yml
Normal file
43
site/blueprints/sections/generic_seo_metadata.yml
Normal 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
|
12
site/blueprints/sections/home_content_background_image.yml
Normal file
12
site/blueprints/sections/home_content_background_image.yml
Normal 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
|
18
site/blueprints/sections/home_content_contact.yml
Normal file
18
site/blueprints/sections/home_content_contact.yml
Normal 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
|
44
site/blueprints/sections/home_seo_metadata.yml
Normal file
44
site/blueprints/sections/home_seo_metadata.yml
Normal 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
|
14
site/blueprints/sections/site_content_galleries.yml
Normal file
14
site/blueprints/sections/site_content_galleries.yml
Normal 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
|
14
site/blueprints/sections/site_content_pages.yml
Normal file
14
site/blueprints/sections/site_content_pages.yml
Normal 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
6
site/blueprints/site.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
title:
|
||||
en: Website
|
||||
fr: Site web
|
||||
tabs:
|
||||
content: tabs/site_content
|
||||
analytics: tabs/site_analytics
|
6
site/blueprints/tabs/biography_content.yml
Normal file
6
site/blueprints/tabs/biography_content.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
label:
|
||||
en: Content
|
||||
fr: Contenu
|
||||
icon: text
|
||||
sections:
|
||||
presentation: sections/biography_content_presentation
|
6
site/blueprints/tabs/biography_seo.yml
Normal file
6
site/blueprints/tabs/biography_seo.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
label:
|
||||
en: SEO
|
||||
fr: Référencement
|
||||
icon: search
|
||||
sections:
|
||||
seo_basic_meta: sections/generic_seo_metadata
|
7
site/blueprints/tabs/gallery_content.yml
Normal file
7
site/blueprints/tabs/gallery_content.yml
Normal file
|
@ -0,0 +1,7 @@
|
|||
label:
|
||||
en: Content
|
||||
fr: Contenu
|
||||
icon: text
|
||||
sections:
|
||||
introduction: sections/gallery_content_introduction
|
||||
artworks: sections/gallery_content_artworks
|
6
site/blueprints/tabs/gallery_seo.yml
Normal file
6
site/blueprints/tabs/gallery_seo.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
label:
|
||||
en: SEO
|
||||
fr: Référencement
|
||||
icon: search
|
||||
sections:
|
||||
seo_basic_meta: sections/generic_seo_metadata
|
11
site/blueprints/tabs/home_content.yml
Normal file
11
site/blueprints/tabs/home_content.yml
Normal 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
|
6
site/blueprints/tabs/home_seo.yml
Normal file
6
site/blueprints/tabs/home_seo.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
label:
|
||||
en: SEO
|
||||
fr: Référencement
|
||||
icon: search
|
||||
sections:
|
||||
seo_basic_meta: sections/home_seo_metadata
|
15
site/blueprints/tabs/site_analytics.yml
Normal file
15
site/blueprints/tabs/site_analytics.yml
Normal 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
|
12
site/blueprints/tabs/site_content.yml
Normal file
12
site/blueprints/tabs/site_content.yml
Normal 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
|
18
site/blueprints/users/admin.yml
Normal file
18
site/blueprints/users/admin.yml
Normal 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)
|
29
site/blueprints/users/editor.yml
Normal file
29
site/blueprints/users/editor.yml
Normal 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
0
site/cache/index.html
vendored
Normal file
10
site/config/config.julienmonnerie.com.php
Normal file
10
site/config/config.julienmonnerie.com.php
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
// Kirby configuration settings (production environment)
|
||||
'debug' => false,
|
||||
// Matomo plugin options (critical keys)
|
||||
'sylvainjule.matomo' => [
|
||||
// 'token' => 'a3d53082e369334813c0ed93d5a80db6'
|
||||
]
|
||||
];
|
10
site/config/config.julienmonnerie.test.php
Normal file
10
site/config/config.julienmonnerie.test.php
Normal 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
41
site/config/config.php
Normal 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]
|
||||
]
|
||||
]
|
||||
]
|
||||
];
|
5
site/snippets/favicon.twig
Normal file
5
site/snippets/favicon.twig
Normal 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">
|
73
site/snippets/metadata.twig
Normal file
73
site/snippets/metadata.twig
Normal 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 %}
|
Loading…
Add table
Add a link
Reference in a new issue