Changes to "Roadmap" between 2021-04-05 21:00:00 and 2021-04-08 12:53:37

16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
16
17
18
19
20
21
22












































































































23
24
25
26
27
28
29







-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-







| Mailing | Implémenté | À améliorer | Pas de gestion des retours, texte simple, pas de possibilité d'exporter la liste des destinataires facilement |
| Documentation | Succinte | En cours | À réorganiser, rédiger, rendre plus accessible |
| Tests unitaires | Inexistants ou presque | À écrire… | |
| Tests fonctionnels | Dépassés | À refaire | |

## Prochaines versions

### Version 1.1 — Gestion de fichiers / refonte site web (~avril 2021)

Nécessite désormais PHP 7.4 ou supérieur pour fonctionner.

Refonte gestion site web :

* Changement du langage de squelettes, vers [Brindille](Documentation/Brindille), pour permettre plus de choses
* Transformation wiki en catégories et pages web
* Les pages wiki non publiques sont transformées en pages web "brouillon"
* Suppression de la notion de page interne / externe / restreinte à la même catégorie
* Possibilité de mettre une page en "brouillon" (non publiée en ligne)
* Déplacement de l'édition de squelette dans le menu **Site web**
* Stockage des squelettes dans la base de données, avec le reste des fichiers
* Transformation de la page wiki de bienvenue en fichier Skriv éditable
* Suppression de la page wiki d'inscription (en attendant la possibilité de s'inscrire)
* Les pages chiffrées sont désormais accessibles publiquement (sauf si brouillon évidemment)

Ajout section "Documents" :

*  Stockage dans le backend de fichiers de Garradin
*  Possibilité de stocker les fichiers dans le système de fichier directement
*  Gestion répertoires / fichiers
*  Edition / prévisualisation de fichiers textes, images, PDF et audio/vidéo
*  Upload de fichier
* Création de fichier texte
* Refonte gestion des fichiers dans les écritures comptables
* Recherche de fichier
* Déplacement/suppression de fichier en masse
* Limitation possible du quota de fichiers
* Téléchargement de tous les fichiers sous forme de ZIP

Membres :

*  Possibilité d'avoir des champs de type fichier dans les fiches de membre, permettant de joindre un scan ou une photo (trombi) [par exemple](/info/c41169057a3f198871cc82677cd331ae201b778f)

Maintenance du code :

* Ré-écriture catégories de membres
* Ré-écriture configuration
* Pour les fermes à Garradin les templates compilés peuvent être partagés entre toutes les instances (gain de performance)

Divers :

* Ajout d'une [API](API) REST minimaliste
* Ajout du support des images WebP dans les fichiers

#### Stockage de fichiers

Les plugins, la base de données, les sauvegardes et les fichiers de cache sont désormais tous stockés dans un sous-répertoire `data` par défaut, afin de réunir tous les fichiers modifiés par Garradin dans le même dossier.

Les fichiers à l'intérieur de Garradin sont stockés par défaut dans la base de données SQLite. Il est également possible de les stocker dans le système de fichiers directement, via deux constantes de configuration dans le fichier `config.local.php` :

```
const FILE_STORAGE_BACKEND = 'FileSystem';
const FILE_STORAGE_CONFIG = __DIR__ . '/data/files';
```

Ceci stockera les fichiers dans le répertoire `data/files` de Garradin.

Une autre constante `FILE_STORAGE_QUOTA` permet de définir un quota maximum. Si cette constante n'est pas définie, le quota maximal est l'espace disponible sur le système de fichier.

#### Développeurs⋅ses et utilisateurs⋅trices experts

Squelettes :

* Les anciens squelettes du répertoire `squelettes` ne sont plus utilisés, si vous aviez des squelettes personnalisés votre site retournera aux squelettes par défaut.
* Les squelettes sont désormais stockés dans la base de données, il vous faudra donc utiliser l'éditeur intégré (dans Site web -> Configuration) pour modifier les squelettes ou en créer de nouveaux.
* Le langage des squelettes a changé, nous utilisons maintenant [Brindille](Documentation/Brindille), qui donne plus de possibilités, voir la [documentation des squelettes](Squelettes) pour plus de détails.

Plugins :

* Dans la condition d'affichage du menu (paramètre `menu_condition`), les variables `{$membre.DROIT_*}` deviennent `{ACCESS_*}`. Penser aussi à renommer les colonnes `droit_*` en `perm_*`
* Ajout des signaux suivants (voir [la documentation des plugins pour plus de détails](wiki:Plugins)) :
  * `usertemplate.init`
  * `entity.NAME.save.before`
  * `entity.NAME.save.after`
  * `entity.NAME.delete.before`
  * `entity.NAME.delete.after`
  * `files.ACTION` avec ACTION = move, delete, store ou mkdir

SQL :

* La table `membres_categories` a été renommée en `users_categories` et ses colonnes ont été renommées en anglais (`droit_*` deviennent `perm_*`)
* La colonne `id_categorie` de la table `membres` a été renommée `category_id`
* La version n'est plus stockée dans la table `config` mais dans `PRAGMA user_version` sous forme d'entier
* La table `config` a vu ses colonnes renommées en anglais
* Les tables du wiki ont été supprimées
* La table `fichiers` a été renommée `files`, et `fichiers_contenu` est devenue `files_contents`
* La fonction `transliterate_to_ascii` utilisée pour comparer des `strings` unicode n'existe plus, à la place la collation `NOCASE` de SQLite est remplacée par un une collation qui prend en compte Unicode

PHP :

* Les méthodes `Session->canAccess` et `Session->requireAccess` attendent désormais une constante de type `Session::SECTION_` en premier argument, et une constante de type `Session::ACCESS_` en second argument
* Les classes `Fichiers`, `Wiki`, `Squelette` et `Squelette_Filtres` ont été supprimées
* La classe `Membres\Categories` est devenue `Users\Categories` et `Entities\Users\Categories`

Templates :

* Le modifieur `strftime_fr` a été renommé `strftime`
* Le modifieur `html_money` a été renommé `money`
* Le modifieur `date_fr` a été renommé `date`
* Le modifieur `format_bytes` a été renommé `size_in_bytes`
* Le modifieur `format_wiki` a été renommé en `format_skriv`

Javascript :

* la méthode `g.load()` qui permettait de faire une requête XHR a été supprimée. Il est conseille d'utiliser la promise [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) à la place.

### Version 1.2 — Amélioration site web / fichiers (~juin/juillet 2021)

Membres :

* refonte du code gestion des membres
* possibilité d'importer la catégorie du membre depuis un CSV, cf. <https://fossil.kd2.org/garradin/tktview?name=8136fedb24>