This commit is contained in:
isUnknown 2024-09-04 08:25:43 +02:00
commit 3f9c8bbebf
68 changed files with 1875 additions and 26 deletions

View file

@ -0,0 +1,15 @@
title: Image
accept:
mime: image/*
type: image
focus: false
fields:
description:
type: textarea
buttons: false
size: small
width: 1/2
# tags:
# type: tags

View file

@ -0,0 +1,5 @@
title: PDF
accept:
mime: application/pdf
focus: false

View file

@ -0,0 +1,45 @@
title: Client
tabs:
projects:
label: Projets
icon: folder
columns:
- width: 1/2
sections:
projectsListed:
extends: sections/projects
headline: Projets en cours
query: page.projectsListed
status: unlisted
columns:
title: true
client: false
- width: 1/2
sections:
projectsUnlisted:
extends: sections/projects
headline: Projets archivés
query: page.projectsUnlisted
status: unlisted
columns:
title: true
client: false
brand:
label: Brand
icon: palette
fields:
logo:
type: files
multiple: false
layout: cards
image:
ratio: 1/1
back: white
width: 1/6
color:
label: Couleur
type: color
width: 2/6
files: tabs/files

View file

@ -0,0 +1,21 @@
title: Clients
sections:
pages:
label: Tous les clients
status: all
templates: client
layout: table
columns:
title:
label: Nom
projectsListed:
label: En cours
value: "{{ page.projectsListed.count }}"
width: 1/12
projectsUnlisted:
label: Archivés
value: "{{ page.projectsUnlisted.count }}"
width: 1/12
image:
cover: true

View file

@ -1,7 +1 @@
fields:
testImages:
type: files
testText:
type: text
testBlocks:
type: blocks
title: Home

View file

@ -0,0 +1,67 @@
title: Projet
icon: page
tabs:
brief:
label: Brief client
icon: document
columns:
- width: 1/2
sections:
brief:
type: fields
fields:
client:
type: pages
multiple: false
query: site.find("clients").childrenAndDrafts
subpages: false
image:
query: page.logo.toFile
layout: cardlets
width: 1/2
briefClientPdf:
label: PDF
type: files
multiple: false
uploads: pdf
layout: cardlets
width: 1/2
- width: 1/2
sections:
description:
type: fields
fields:
description:
type: textarea
size: tiny
buttons: false
maxlength: 700
- width: 1/1
sections:
images:
type: fields
fields:
briefClientImages:
label: Images
type: files
uploads: image
layout: cards
size: medium
# client:
# label: Client
# icon: account
# columns:
# - width: 1/1
# sections:
# client:
# type: fields
# fields:
# client:
# type: pages
# multiple: false
# query: site.find("clients").childrenAndDrafts
# subpages: false
# layout: cards
# size: medium
files: tabs/files

View file

@ -0,0 +1,15 @@
title: Projets
sections:
drafts:
extends: sections/projects
headline: Brouillons
status: draft
listed:
extends: sections/projects
headline: En cours
status: listed
unlisted:
extends: sections/projects
headline: Archivés
status: unlisted

View file

@ -0,0 +1,11 @@
type: pages
headline: Projets
template: project
layout: table
columns:
title:
label: Titre
client: true
empty: Pas encore de projet
image: false
search: true

View file

@ -1,5 +1,41 @@
title: Site
sections:
pages:
type: pages
tabs:
dashboard:
label: Dashboard
icon: dashboard
columns:
clients:
width: 1/2
sections:
clients:
label: Clients
type: pages
parent: site.find("clients")
template: client
search: true
image:
back: white
projects:
width: 1/2
sections:
projects:
extends: sections/projects
headline: Projets récement modifiés
parent: site.find("projects")
layout: list
sortBy: modified desc
settings:
label: Paramètres
icon: cog
columns:
- width: 1/1
sections:
settings:
label: Paramètres
type: fields
fields:
briefClientImagesTags:
label: Tags des images de Brief client
help: Ensemble des tags dimages disponibles lors de la création du Brief client
type: tags

View file

@ -0,0 +1,15 @@
label:
en: Files
fr: Fichiers
icon: images
columns:
- width: 1/1
sections:
files:
label:
en: Files
fr: Fichiers
type: files
layout: cards
size: small

View file

@ -0,0 +1 @@
title: Admin

View file

@ -0,0 +1,4 @@
title: Client
permissions:
access:
panel: false

View file

@ -0,0 +1,3 @@
title:
fr: Chef·fe de projet
en: Project Manager

View file

@ -7,7 +7,68 @@ return [
// Enable api access without SSL. To disable in production.
'allowInsecure' => true
],
'content' => [
'uuid' => false
'panel' => [
'language' => 'fr',
'css' => 'assets/css/panel.css',
'favicon' => 'assets/favicons/favicon.svg',
'menu' => [
'site' => [
'label' => 'Dashboard',
'icon' => 'dashboard',
'current' => function (string $current): bool {
// the links of all your custom menu entries
$links = [
'pages/clients',
'pages/projects',
'pages/notifications',
'pages/events'
];
$path = Kirby\Cms\App::instance()->path();
return
$current === 'site' &&
A::every($links, fn ($link) => Str::contains($path, $link) === false);
}
],
'clients' => [
'label' => 'Clients',
'icon' => 'account',
'link' => 'pages/clients',
'current' => function (string $current): bool {
$path = Kirby\Cms\App::instance()->path();
return Str::contains($path, 'pages/clients');
}
],
'projects' => [
'label' => 'Projets',
'icon' => 'folder',
'link' => 'pages/projects',
'current' => function (string $current): bool {
$path = Kirby\Cms\App::instance()->path();
return Str::contains($path, 'pages/projects');
}
],
'-',
'notifications' => [
'label' => 'Notifications',
'icon' => 'bell',
'link' => 'pages/notifications',
'current' => function (string $current): bool {
$path = Kirby\Cms\App::instance()->path();
return Str::contains($path, 'pages/notifications');
}
],
'events' => [
'label' => 'Événements',
'icon' => 'calendar',
'link' => 'pages/events',
'current' => function (string $current): bool {
$path = Kirby\Cms\App::instance()->path();
return Str::contains($path, 'pages/events');
}
],
'-',
'users',
'system'
]
]
];
];

View file

@ -0,0 +1,18 @@
<?php
class ClientPage extends Page {
public function projects() {
return page('projects')->children()->filterBy('intendedTemplate', 'project')->filterBy(function($project) {
return $project->client()->toPage() === $this;
});
}
public function projectsListed() {
return page('projects')->children()->listed()->filterBy('intendedTemplate', 'project')->filterBy(function($project) {
return $project->client()->toPage() === $this;
});
}
public function projectsUnlisted() {
return page('projects')->children()->unlisted()->filterBy('intendedTemplate', 'project')->filterBy(function($project) {
return $project->client()->toPage() === $this;
});
}
}