Skip to content

Commit ba1148a

Browse files
committed
#3 : add content + footer
1 parent 04f3e5a commit ba1148a

File tree

13 files changed

+799
-6
lines changed

13 files changed

+799
-6
lines changed

Diff for: config.toml

+24-6
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,27 @@ DefaultContentLanguage = "fr"
44
# theme
55
theme = "kiboko"
66
# site title
7-
title = "Accueil - Kiboko"
7+
title = "Kiboko"
88
# disable language
99
disableLanguages = []
1010
# google analytics
1111
googleAnalytics = "" # paste your analytics ID here. (Ex: UA-123-45)
1212

1313
[[menu.main]]
14-
name = "Contactez-nous"
15-
url = "http://kiboko.fr/fr/contactez-nous/"
14+
name = "Kibokast"
15+
url = "/kibokast"
1616
weight = 1
1717

1818
[[menu.main]]
19-
name = "Kibokasts"
20-
url = "/kibokasts"
19+
name = "Contactez-nous"
20+
url = "http://kiboko.fr/fr/contactez-nous/"
2121
weight = 2
2222

2323
[params]
2424
logo = "images/logo.png"
2525
logo_white = "images/logo.png"
2626
primary_color = "#22014f"
27-
light_color = "#fe8507"
27+
light_color = "#ddd"
2828
dark_color = "#22014f"
2929
body_color = "#ddd"
3030
text_color = "#666"
@@ -56,3 +56,21 @@ title = "Vous n'avez pas trouvé une réponse ?"
5656
enable = true
5757
label = "Contactez-nous"
5858
link = "http://kiboko.fr/fr/contactez-nous/"
59+
60+
61+
############################## social links ##############################
62+
[[params.social]]
63+
icon = "ti-twitter-alt" # themify icon pack : https://themify.me/themify-icons
64+
link = "https://twitter.com/kibokolabs"
65+
66+
[[params.social]]
67+
icon = "ti-github" # themify icon pack : https://themify.me/themify-icons
68+
link = "https://github.com/kiboko-labs"
69+
70+
[[params.social]]
71+
icon = "ti-linkedin" # themify icon pack : https://themify.me/themify-icons
72+
link = "https://www.linkedin.com/company/kiboko-sas"
73+
74+
[[params.social]]
75+
icon = "ti-wordpress" # themify icon pack : https://themify.me/themify-icons
76+
link = "http://kiboko.fr/fr/"

Diff for: content/kibokasts/_index.fr.md

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
title: "Kibokast"
3+
date: 2020-08-04
4+
icon: "ti-light-bulb"
5+
description: "Les Kibokast sont des mini-formations effectués par un membre de Kiboko pour le reste de l'équipe."
6+
type : "docs"
7+
---

Diff for: content/kibokasts/code-review/_index.fr.md

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
title: "Code review"
3+
date: 2020-05-05
4+
type : "docs"
5+
---
6+
7+
## 1. Cycle de vie des PRs
8+
- Pour la création des PRs, se reporter à la [procédure décrite dans les usages Github](usage.md#3-pull-request-pr)
9+
- **Pas plus de 2 PRs ouvertes par personne** : tant que j'ai encore une PR non mergée, je n'entame pas de nouvelle tâche.
10+
- **Tout le monde relit les PRs** de tout le monde
11+
- Afin de fluidifier les développements, **il est important de relire les PRs plusieurs fois par jour** (ex : le matin en arrivant, puis après la pause déjeuner. Possibilité de relire à 2 si besoin)
12+
- **Tout le monde peut merger** les PRs en respectant les règles de validité ci-dessous
13+
14+
## 2. Règles de validité d'une PR
15+
### Prérequis
16+
- Chaque branche doit contenir un numéro de ticket : `feature/XXX-new-feature`
17+
- **Chaque commentaire de commit doit contenir un numéro de ticket** : `#XXX : Add new feature`
18+
- Les tests unitaires doivent passer
19+
- La PR doit avoir le libellé "GTM"
20+
- La PR doit avoir une taille raisonnable
21+
- Les commits doivent être bien découpés (pas de "fix, re-re-fix, wip")
22+
23+
### Règles de merge
24+
Je merge une PR si elle respecte les critères suivants :
25+
- Respect des prérequis décrits ci-dessus
26+
- Déjà **2 autres personnes** ont approuvé la PR **dont un dev expérimenté**
27+
- **Toutes les discussions sont marquées comme résolues**
28+
- ⚠️ **Elle pointe sur la branche develop** ⚠️
29+
- Je vérifie que le milestone est le bon pour faciliter la rédaction des notes de version
30+
31+
### Approbation et correction
32+
#### En tant que relecteur
33+
- Lorsque j'ai une question ou un retour à faire sur une PR, **je mets un commentaire** sur la ligne concernée (en restant courtois dans mes insultes)
34+
- Lorsque je n'ai plus de retours à faire, **j'approuve la PR**. Si elle respecte les règles de validité, **je la merge sur develop**.
35+
36+
#### En tant que développeur
37+
- Lorsque je corrige ma PR, **je réponds** au commentaire (en restant courtois dans mes insultes) et **je marque la discussion comme résolue**

Diff for: content/kibokasts/collections-doctrine/_index.fr.md

+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
---
2+
title: "Collections Doctrine"
3+
date: 2020-04-01
4+
type : "docs"
5+
---
6+
7+
* [Documentation](https://www.doctrine-project.org/projects/doctrine-collections/en/1.6/index.html)
8+
* [Github](https://github.com/doctrine/collections/)
9+
10+
La collection sert à adresser le besoin de fournir des listes d'objets. Doctrine fournit une implémentation utilisée dans son ORM et ses ODM.
11+
12+
La collection permet de gérer une liste d'objets du même type, pour :
13+
14+
* filtrer
15+
* trier
16+
* appliquer un traitement (map)
17+
* calculer un résultat d'après le contenu de la liste (reduce)
18+
19+
L'interface `Collection`
20+
---
21+
22+
Il s'agit du contrat "Collection" de Doctrine, toute collection devra implémenter cette interface.
23+
24+
Cette interface implémente elle-même les contrats suivants :
25+
26+
* [`\Countable`](https://www.php.net/manual/fr/class.countable.php) : la collection pourra être utilisée avec la fonction `count()`, ce qui permettra de connaitre le nombre d'éléments contenus par la collection.
27+
* [`\IteratorAggregate`](https://www.php.net/manual/fr/class.iteratoraggregate.php) : la collection pourra être parcourue dans une structure `foreach`
28+
* [`\ArrayAccess`](https://www.php.net/manual/fr/class.arrayaccess.php) : la collection pourra être utilisée avec les opérateurs `[]`, de la même manière qu'on le fait avec un tableau
29+
30+
Les méthodes
31+
---
32+
33+
### `map`
34+
35+
La méthode `map( callable $callback )` va appliquer la fonction de rappel passée en argument sur chaque
36+
élément qu'elle contient et retournera une copie de la collection. Dans cette copie
37+
chaque élément aura été remplacé avec le résultat de cette fonction.
38+
39+
```php
40+
<?php
41+
$collection = new ArrayCollection(['SKU001', 'SKU002', 'SKU003']);
42+
43+
$mappedCollection = $collection->map(function(string $value): Product {
44+
return new Product($value);
45+
}); // Retournera : [object (Product) { $sku = 'SKU001' }, object (Product) { $sku = 'SKU002' }, object (Product) { $sku = 'SKU003' }]
46+
```
47+
48+
### `filter`
49+
50+
La méthode `filter( callable $callback )` va appliquer la fonction de rappel passée en argument sur chaque
51+
élément qu'elle contient et retournera une copie de la collection. Dans cette copie, ne
52+
restera que les éléments pour lesquels la fonction de rappel a renvoyé `true`
53+
54+
```php
55+
<?php
56+
$collection = new ArrayCollection([new Product('SKU001'), new Product('SKU002'), new Product('SKU003')]);
57+
58+
$mappedCollection = $collection->filter(function(Product $value): bool {
59+
return in_array($value->sku, ['SKU001', 'SKU003', 'SKU005']);
60+
}); // Retournera : [object (Product) { $sku = 'SKU001' }, object (Product) { $sku = 'SKU003' }]
61+
```
62+
63+
### `slice`
64+
65+
La méthode `slice( int $start, null|int $length )` va retourner une nouvelle copie de la collection contenant
66+
uniquement les éléments commençant à la position `$start`, avec au maximum `$length` éléments à partir
67+
de ce point si ce paramètre est fourni.
68+
69+
```php
70+
<?php
71+
$collection = new ArrayCollection([new Product('SKU001'), new Product('SKU002'), new Product('SKU003'), new Product('SKU004'), new Product('SKU005')]);
72+
73+
$mappedCollection = $collection->slice(2, 3);
74+
// Retournera : [object (Product) { $sku = 'SKU002' }, object (Product) { $sku = 'SKU003' }, object (Product) { $sku = 'SKU004' }]
75+
```

Diff for: content/kibokasts/commandes-debug/_index.fr.md

+112
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
---
2+
title: "Commandes Debug"
3+
date: 2020-04-07
4+
type : "docs"
5+
---
6+
7+
# Commandes Symfony
8+
9+
Articles officiels présentants certaines fonctionnalités :
10+
11+
- https://symfony.com/blog/new-in-symfony-3-4-debug-autowiring-command
12+
- https://symfony.com/blog/new-in-symfony-3-4-debug-form-command
13+
14+
Pour avoir la liste complete :
15+
`bin/console list debug`
16+
17+
### Debug Router
18+
19+
Doc officiel : https://symfony.com/doc/3.4/routing/debug.html
20+
21+
Pour avoir l'ensemble des routes avec leur nom et les URLs qui correspondent
22+
23+
`bin/console debug:router`
24+
25+
Exemple pour rechercher une route "produit" dans des controllers :
26+
27+
`bin/console debug:router --show-controllers | grep /product`
28+
29+
### Debug Container
30+
31+
Doc officiel : https://symfony.com/doc/3.4/service_container/debug.html
32+
33+
Pour avoir l'ensemble des services publiques
34+
35+
`bin/console debug:container`
36+
37+
- Pour rechercher un service par son nom : `bin/console debug:container validator`
38+
- Pour rechercher un service par tag : `bin/console debug:container --tag=form.type`
39+
- Pour rechercher un service par parametre : `bin/console debug:container --parameter=kernel.debug`
40+
41+
### Debug Config
42+
43+
Doc officiel : https://symfony.com/doc/3.4/reference/configuration/debug.html
44+
45+
Pour avoir l'ensemble des configuration
46+
47+
`bin/console debug:config`
48+
49+
- Pour rechercher pour un bundle : `bin/console debug:config AppBundle`
50+
51+
### Debug Twig
52+
53+
Pour avoir l'ensemble des fonctions des filtres, des tests et des globales disponibles ainsi que les chemins chargés par l'application
54+
55+
`bin/console debug:twig`
56+
57+
### Debug Swiftmailer
58+
59+
Doc officiel : https://symfony.com/doc/3.4/reference/configuration/swiftmailer.html
60+
61+
Pour avoir les mailers disponibles
62+
63+
`bin/console debug:swiftmailer`
64+
65+
### Debug Autowiring
66+
67+
Doc officiel : https://symfony.com/doc/3.4/service_container/debug.html
68+
69+
Pour avoir l'ensemble des services déclarés en auto-wiring :
70+
71+
`bin/console debug:autowiring`
72+
73+
### Debug Forms
74+
75+
Pour avoir l'ensemble des formulaires (Type, Extension, Type Guessers) disponibles :
76+
77+
`bin/console debug:form`
78+
79+
### Debug Translations
80+
81+
Pour avoir l'ensemble des traductions par locale ou bundle :
82+
83+
`bin/console debug:translation`
84+
85+
### Debug routes JS
86+
87+
`bin/console fos:js-routing:debug`
88+
89+
90+
# Commandes Oro
91+
92+
### Entity config Oro
93+
94+
Permet de récupérer la configuration d'une entité :
95+
96+
`bin/console oro:entity-config:debug AppBundle\\Entity\\Norm`
97+
98+
Permet de récupérer la configuration d'un champ d'une entité :
99+
100+
`bin/console oro:entity-config:debug AppBundle\\Entity\\Norm code`
101+
102+
### Layout
103+
104+
_à compléter_
105+
106+
`bin/console oro:debug:layout`
107+
108+
### Workflow
109+
110+
_à compléter_
111+
112+
`bin/console oro:debug:workflow:definitions`

Diff for: content/kibokasts/migrations-oro/_index.fr.md

+97
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
---
2+
title: "Migrations Oro"
3+
date: 2020-02-21
4+
type : "docs"
5+
---
6+
7+
Il y a 2 types de migrations dans Oro :
8+
1. Migrations Schema
9+
2. Migrations Data
10+
11+
Doc. Oro : https://github.com/oroinc/platform/tree/master/src/Oro/Bundle/MigrationBundle
12+
13+
Cours "Entities" de Yevhen (=> drive Kiboko))
14+
15+
## 1. Migrations Schema
16+
17+
Modification de schéma Doctrine => DBAL
18+
19+
- Pas d'utilisation d'entité/ORM dans le schéma
20+
21+
#### 1.1. implémentation de l'interface `Installation`
22+
23+
utilise des numéros de versions (=> `getVersion()`)
24+
25+
/!\ regroupement de l'ensemble des migrations pour créer le schéma
26+
27+
=> cf Schéma de Yevhen
28+
29+
#### 1.2. implémentation de l'interface `Migration`
30+
31+
/!\ quand on ajoute une Migration, il faut systématiquement :
32+
- ajouter la migration dans l'installation en adaptant le schéma désiré
33+
- changer le numéro de version
34+
35+
#### 1.3. Cas spécifiques : champs non null
36+
37+
utilisation des "OrderedMigration" => `getOrder():int`
38+
39+
Ex : ajout champ UNIQUE + NOT NULL
40+
> migration A avec `up()` methode `alterTable()` avec ajout de la colonne déclarée en `NULL` => ajout addPostQuery()
41+
> migration B avec `up()` methode `alterTable()` avec ajout de la colonne `NOTNULL`
42+
43+
#### 1.4. Cas spécifiques : modification de colonne existante
44+
45+
utilisation de requêtes .SQL avec la méthode `addPostQuery()`
46+
47+
#### 1.5. Cas spécifiques : Oro options
48+
49+
Utilisation de "Oro_Options"
50+
51+
#### 1.6. Cas spécifiques : OroConfigField
52+
53+
OroConfigField uniquement pour les entités crées par ce bundle
54+
55+
#### 1.7. Cas spécifiques : entity extend
56+
57+
Implements : ExtendExtensionInterface
58+
59+
60+
#### 1.8. Cas spécifiques : dépendance des migrations
61+
62+
utilisation des "DependentMigration"
63+
64+
65+
## 2. Migrations Data
66+
67+
Migration pour créer de la donnée.
68+
69+
Exécuter après les migrations de schéma => ORM
70+
71+
Usage : initialiser une environnement avec des données
72+
73+
/!\ Si Schema est mis a jour, il faut impacter les migrations de data
74+
75+
## 3. Nomenclature des migrations
76+
77+
#### 3.1. Installer
78+
79+
Format : `{nom_du_bundle}Installer`
80+
81+
ex : KibokoBarcodeBundleInstaller
82+
83+
#### 3.2. Migration
84+
85+
Le nom de la migration doit correspondre au fonctionnel de la migration.
86+
Si le domaine est différent, on créé des fichiers différents par domaine.
87+
88+
ex : AddBudgetMigration ou FixProductsNorms
89+
90+
91+
## 4. Tests pour vérifier la migration
92+
93+
- `bin/console oro:platform:update --force`
94+
- `bin/console oro:migration:load` (si fixture en plus de `main`)
95+
- `bin/console oro:entity-extend:cache:clear` => si erreur, PR refusée
96+
97+
(prochainement ajouté à la CI)

0 commit comments

Comments
 (0)