Résumé
Côté utilisateur, un nouveau jeu de gabarits glaz, des outils de rotation et de retournement d'images dans la médiathèque et une meilleure surveillance des formulaires non enregistrés. Côté développeur, c'est une version chargée : typage renforcé, nouvelles classes pour les menus, icônes, notices et filtres de préférences utilisateur, et une bonne série de dépréciés. Le nouveau drapeau DC_MODERN permet de vérifier dès maintenant si vos plugins et thèmes se passent du code obsolète.
Pour ce qui sera possiblement gênant suivant les cas :
- Les plugins qui fournissent leurs propres fichiers de gabarit doivent ajouter ceux du jeu glaz (voir
default-templates/glazdes plugins pages et tags) - Structure::table() n'enregistre une nouvelle table que si elle ne l'est pas déjà
- La pile d'instances Codemirror (global codemirror_instance) est déplacée dans dotclear.codemirror
- Les anciennes méthodes de formulaire (legacy) n'acceptent plus de tableau associatif de paramètres optionnels
- Les variables globales __top_behaviors et __shutdown ne sont plus prises en compte
- Filters::userOptions() est déprécié et ne retourne plus que null
- La classe UserPrefFilter est obligatoire pour les filtres de préférences utilisateur
- UrlHandler->type n'est plus public, il faut utiliser getType()
- Record->index() ne retourne plus null
Nouveautés
- Nouveau jeu de gabarits glaz (plus de conteneur #wrapper, __layout.html qui décrit les grands blocs, nouveau fichier _entry-footer.html, une classe en doublon de chaque id, etc…)
- Nouvelle constante DC_MODERN (dans
inc/config.php) pour ne pas charger le code PHP et JS obsolète, désactivée par défaut - Bouton pour créer des liens symboliques vers les thèmes livrés si le dossier de thèmes du blog n'est pas celui par défaut
- Rotation et retournement d'images dans la gestion des médias
- Contextes spécifiques pour les pages de configuration des plugins et thèmes : PLUGIN_CONFIG et THEME_CONFIG
- Méthodes typées strField(), intField() et boolField() pour MetaRecord::field()
- Méthodes typées getXXX (str, int, bool, float) pour les paramètres de blog et les préférences utilisateur
- Méthode UrlHandler::isType() pour tester le type d'URL courant
- Méthode SqlStatement::satinizeIn() pour préparer une liste destinée à SqlStatement::in()
- Méthode count() sur la classe Listing de l'admin
- Nouvelles classes MenuItem et Icon pour la gestion des menus et des icônes (favoris compris)
- Nouvelle classe Notice avec Notices::addNewNotice() et le behavior adminPageNotificationV2
- Nouveau behavior adminFiltersListsV3 (à utiliser à la place de adminFiltersListsV2)
- Option defer pour les méthodes jsLoad()
- Les URLs des dépôts de plugins et thèmes viennent du fichier release.json, avec repli sur les paramètres du blog
- Bouton dans l'entête pour afficher les informations de débogage
Changements
- Les options utilisateur standards migrent vers la table des préférences utilisateur (le plugin Tags aussi)
- Les classes javascript jsToolBar, jsButton, jsSpace, jsCombo, jsDialog et metaEditor passent dans l'objet global dotclear
- La longueur des champs de table est toujours un entier (0 si non pertinent)
- Les erreurs de chargement de fichiers de modules sont ignorées silencieusement
- Optimisation de la vérification des mises à jour des modules
- Mise à jour de Codemirror (5.65.7 vers 5.65.21)
- Sécurité : suppression des affectations innerHtml (prévention XSS)
- Révision des couleurs, des icônes et de la grille du tableau de bord
- Les langues autres que l'anglais et le français sont traduites automatiquement
- Passage de PHPStan au niveau max
- Nombreuses corrections : authentification sans blog par défaut, maintenance, médias, ThemeConfig::publicCssUrlHelper(), etc…
Dépréciés
- Notices::addNotice(), utiliser Notices::addNewNotice()
- La classe globale metaEditor, utiliser dotclear.MetaEditor
- La classe globale jsToolBar, utiliser dotclear.ToolBar
- $GLOBALS['_l10n'] et $_l10n
- ConnectionInterface::escape(), utiliser escapeStr()
- La classe form, utiliser Dotclear\Helper\Html\Form\*
- Auth::getOption() et Auth::getOptions()
- Favorite::smallIcon() et Favorite::largeIcon(), utiliser Favorite::menuIcon() et Favorite::dashboardIcon()
- Filters::userOptions()
Pour vérifier que votre installation se passe de tout ça, il suffit de décommenter la ligne suivante dans le fichier inc/config.php :
define('DC_MODERN', true);
Retirés
- La prise en compte des variables globales __top_behaviors et __shutdown
Tous les détails sont dans le CHANGELOG et le billet d'annonce officiel.
Rappel
Dotclear a toujours besoin de main d'œuvre, dans différents domaines, à différents niveaux.
Donc si vous avez un peu de temps pour tester, je rappelle qu'il y a des versions de développement mises à jour en permanence, il suffit de modifier le fichier config.php de votre installation Dotclear et de passer la directive DC_UPDATE_VERSION de stable à unstable :
// Update channel (stable, unstable, testing)
define('DC_UPDATE_VERSION', 'unstable');
Il existe également des images Docker prêtes à l'emploi. On peut aussi rappeler que le plugin DotclearWatch permet à l'équipe de suivre l'utilisation de Dotclear.
Enfin un coup de pouce financier est toujours le bienvenu pour maintenir les hébergements et noms de domaines officiels Dotclear.
Aidez nous à vous aider !
Merci.