Artifact ID: | f899b48f5aa48bd1d4150d1bcda2b0d655e48f4485d6f74c54f74acc4f8e7952 |
---|---|
Page Name: | Roadmap |
Date: | 2021-03-29 22:50:06 |
Original User: | bohwaz |
Mimetype: | text/x-markdown |
Parent: | 256cdcf81ee0174ca93b7a5dd3c77e9f092d5e08619dd99db1879bd3bd3a1a6f (diff) |
Next | 99b26eb23681e54953393589271e7235cf461525c9cd6fd7e8da3549016c84ae |
Feuille de route
Les bugs sont corrigés et publiés dans la version stable, les nouvelles fonctionnalités sont ajoutées dans la version de développement (branche dev
) qui sera publiée quand les objectif de cette version seront atteints.
Une liste plus précise de fonctionnalités demandées est également listée dans les tickets (mais on n'a pas forcément le temps de créer un ticket pour chaque fonctionnalité !).
État actuel des fonctionnalités
Fonctionnalité | Statut | État | Remarques |
---|---|---|---|
Membres | Implémenté | Code à moderniser | Refactoring / ré-écriture partielle à faire, code à passer en anglais |
Comptabilité | Implémenté | Satisfaisant | Quelques détails à revoir pour améliorer la simplicité et l'accessibilité |
Activités et cotisations | Implémenté | Satisfaisant | Permettre d'enregistrer plusieurs membres en même temps |
Fichiers | Implémenté | Satisfaisant | Base fonctionnelle. Fonctionnalités à ajouter |
Site web | Implémenté | Refactoring à terminer | Passer à un modèle d'édition de page proche de Kirby |
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 (~mars 2021)
Nécessite désormais PHP 7.4 ou supérieur pour fonctionner.
Refonte gestion site web :
- Changement du langage de squelettes, vers 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
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 REST minimaliste
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, qui donne plus de possibilités, voir la documentation des 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 colonnesdroit_*
enperm_*
- Ajout des signaux suivants (voir la documentation des plugins pour plus de détails) :
**
usertemplate.init
**entity.NAME.save.before
**entity.NAME.save.after
**entity.NAME.delete.before
**entity.NAME.delete.after
SQL :
- La table
membres_categories
a été renommée enusers_categories
et ses colonnes ont été renommées en anglais (droit_*
deviennentperm_*
) - La colonne
id_categorie
de la tablemembres
a été renomméecategory_id
- La version n'est plus stockée dans la table
config
mais dansPRAGMA 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éefiles
, etfichiers_contenu
est devenuefiles_contents
- La fonction
transliterate_to_ascii
utilisée pour comparer desstrings
unicode n'existe plus, à la place la collationNOCASE
de SQLite est remplacée par un une collation qui prend en compte Unicode
PHP :
- Les méthodes
Session->canAccess
etSession->requireAccess
attendent désormais une constante de typeSession::SECTION_
en premier argument, et une constante de typeSession::ACCESS_
en second argument - Les classes
Fichiers
,Wiki
,Squelette
etSquelette_Filtres
ont été supprimées - La classe
Membres\Categories
est devenueUsers\Categories
etEntities\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é enformat_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 promisefetch
à la place.
Version 1.2 — Amélioration site web / fichiers (~juin 2021)
Site web :
- Re-design formulaire édition de page
- Les pages comportent des "blocs", chaque bloc peut être soit un bloc texte (markdown), soit une image, soit un fichier, soit un tableau (éditeur de tableau simple à intégrer), soit le résultat d'une requête SQL (sous forme de tableau ou de graphique)
- Génération de thème simplifiée (couleurs / police / etc.)
- Les blocs d'une page peuvent être réordonnées un peu comme dans Content Tools : http://getcontenttools.com/
- Utilisation du logo de l'association sur le site web
Ajout de modèles de documents :
Les modèles de documents permettent de générer des documents papier. Ces modèles utilisent la syntaxe Brindille, et permettent de générer également des formulaires. Le contenu des formulaires peut être enregistré en base de données afin d'être réutilisé.
- Utilisation de la syntaxe Brindille
- Possibilité d'accéder aux données sauvegardées du formulaire en JSON avec SQLite et via une variable
$data
:{{$data.nom}}
- Ajout fonction
{{:save as="Informations pour %s"|args:$_POST.nom data=$_POST}}
qui permet d'enregistrer un formulaire en base de données - Ajout fonction
email
, exemple :{{:email to="...@..." subject="Contact reçu sur le site" body="Message reçu sur le site : %s"|args:$_POST.message}}
- Supporter l'export PDF via une commande externe (PrinceXML, Chromium, etc.) ou DomPDF
Exemples d'utilisation :
- Déclaration liste dirigeants à la préfecture
- Compte de résultat et bilan conforme au modèle du plan comptable
- Cartes de membres
- Formulaires sur le site web
Liste pêle-mêle des fonctionnalités prévues mais pas encore planifiées
Prioritaire
[Documentation] !
Fichiers :
- Stockage de versions de fichiers avec l'algo Delta de Fossil
- Possibilité de restreindre un fichier/dossier à certains membres / catégories
- Possibilité de créer des notes format texte, HTML (avec Content Tools) et markdown (https://gist.github.com/jbroadway/2836900 ou https://github.com/erusev/parsedown pour la conversion Markdown et https://github.com/commit-intl/micro-down pour la prévisu et enfin https://github.com/asvd/syncscroll pour la synchro de prévisualisation)
- Stockage webdav https://evertpot.com/167/ pour le porte-documents
- Possibilité d'utiliser un autre backend de stockage de fichiers via WebDAV, NextCloud, Mercurial, etc.)
- Intégration de OnlyOffice pour éditer/visualiser les documents Libre Office en ligne
Divers :
- Amélioration gestion des emails de retour
- Magasin de plugins dispo depuis la page extensions de la config (pas besoin de télécharger le plugin à la main et le recopier)
- Sauvegarde incrémentale (utilisation de Fossil deltas) automatique
- Mise à jour de la doc pour les boucles de documents
- Utilisation de KD2Brindille pour les templates de mails de rappel
- Tests unitaires et d'intégration
- Renommer les tables
membres
,membres_sessions
,plugins
,plugins_signaux
etrecherches
en anglais
Securité :
- OTP : Enregistrer des codes de secours à usage unique à utiliser en cas de perte du code secret qui génère des OTP
Comptabilité :
- Ajout stockage relevé bancaire (joindre un fichier) dans le rapprochement, par période
- Ajout total débit/crédit par mois dans le rapprochement
- Possibilité de valider une écriture (déjà partiellement implémenté dans la 1.0)
- Signature et hashage de chaque écriture validée dans une blockchain (déjà partiellement implémenté dans la 1.0)
- Archivage des données de l'exercice lors de la clôture
- Suivre les instructions du ministère des finances concernant l'archivage des données comptable, cf. PDF
Adhérents :
- Inscription autonome en ligne
- Possibilité de définir une page wiki utilisée comme "conditions d'inscription" à accepter à l'inscription
- Journal des actions utilisateur
- Suppression/anonymisation automatique des fiches des anciens adhérents
- Log des accès aux fiches de membre en lecture / écriture
- Log des tentatives de connexion
- Possibilité pour les adhérents de se connecter seulement avec l'adresse email, sans mot de passe (s'ils n'en ont pas choisi un), pour changer leurs infos et suivre leurs cotisations
Divers
- Possibilité de gérer les adhérents, la compta, le wiki etc. via la ligne de commande
Moins prioritaire
Comptabilité :
- Lettrage
- Budget prévisionnel
- lier plusieurs cotisations à une écriture
- lier les membres aux lignes de l'écriture et non à l'écriture elle-même
- supprimer une écriture comptable à la suppression d'une cotisation
- supprimer une cotisation à la suppression d'une écriture comptable
Adhérents :
- Annuaire de membres accessible aux autres membres (avec opt-in de chaque membre)
Plugins :
- Caisse
- Suivi du temps bénévole/salarié, et inscription dans la compta du temps bénévolat
- Agenda collectif
- Saisie de note de frais simplifiée