Piste : • 1.3
Table des matières
Jelix 1.3 ¶
Voici la liste complète des améliorations apportées depuis la version 1.2.x, et qui sont disponibles dans la version 1.3.
Date de sortie : 18/10/2011
Améliorations principales ¶
- Plus qu'un fichier
application.init.php
et seulement un dossier temp sont nécessaires pour www, cli et jelix scripts. jLog
etjResponseHtml
ont maintenant des plugins.- Nouvelle gestion des erreurs. jLog est utilisé pour stocker les erreurs qui ne sont maintenant plus affichées dans les réponses.
- Nouvelle page d'erreur (code http : 500) affichée quand une erreur survient. Vous pouvez la redéfinir pour avoir le design que vous voulez.
- Tous les profils de connexion (pour jDb, jKVDb, jCache, etc.) sont maintenant stockés dans un seul fichier
profiles.ini.php
. - Une nouvelle debug bar, extensible, affichant de nombreuses informations (erreurs, requêtes sql…)
- Les constantes JELIX_APP_* sont maintenant remplacées par une nouvelle classe
jApp
. - Améliorations dans jAcl2 : les sujets de groupes et les droits peuvent être interdits par un groupe.
- Réécriture majeure de jelix-scripts, pour une utilisation plus simple des commandes jelix : il n'y a plus de script jelix.php. Il a été remplacé par un nouveau script cmd.php dans l'appplication pour lancer les commandes, et par un script createapp.php dans lib/jelix-scripts/. Jelix-scripts est fourni dans les trois éditions (dev, opt, gold).
Mettre à jour depuis Jelix 1.2.x ¶
- Voir la documentation de migration
Détails des changements ¶
Améliorations ¶
- core:
- les constantes
JELIX_APP_*
sont à présent remplacées par de nouvelles propriétés dans la nouvelle classejApp
. application.init.php doit être modifié dans les applications existantes, pour définir les chemins avecjApp
au lieu de créer les constantesJELIX_APP_*
. Cependant, pour être compatibles avec les modules existants, ces constantes sont automatiquement créées parjCoordinator
- Suppression multiple de fichiers *.init.php. Seul le fichier
application.init.php
est nécessaire, et un seul dossier temporaire. application-cli.init.php et jelix-scripts.init.php peuvent être supprimés librement depuis applications. Et uniquement le dossier temp/myapp/ est nécessaire pour pour stocker tous les fichiers temporaires quelque soit le contexte. - Nouvel objet jInstallerApplication pour récupérer la liste des points d'entrées, les modules utilisés , etc..
jLog
a été déplacé dans le “core” et a maintenant des plugins- nouvelle méthode
jLog::logEx()
pour journaliser facilement les exceptions - Ticket #1126: nouveau moyen pour gerer les erreurs. Les réponses ne sont plus responsables de l'affichage des erreurs. Les erreurs sont traitées par les loggers. Les Loggers peuvent injecter des erreurs dans les réponses s'ils le veulent. Un nouveau template est responsable d'afficher un message d'erreur générique. Les détails des erreurs sont stockées par les loggers. Déplacement ou renommage de quelques paramètres de configuration.
- ajout d'une nouvelle méthode jRequest::isAjax
- le support de PHP 5.0 et PHP 5.1 a été supprimé définitivement
- Suppression de
jUrl::parseFromRequest()
jRequest::getIp()
- meilleur traitement de HTTP_X_FORWARDED_FOR- nouvel objet jApp traitant des chemins de l'application. Il y a également les méthodes :
jApp::loadPlugin
pour charger les plugins de n'importe quel composant
- Nouveau paramètre backendBasePath dans la configuration, pour supporter les applications installées derrière un serveur mandataire (proxy), où le chemin de base de l'URL du serveur de la partie frontend n'est pas égale au chemin de base de l'URL du serveur de la partie backend
- Plugins pour le coordinator: leur configuration peut-être lue automatiquement depuis une section coordplugin_xxx dans la configuration principale, si le fichier (de configuration du plugin) n'est pas donné
jLocale
: ajout du support de fallback locale. (ticket 1252)
jProfiles
: nouvelle classe pour gérer tout profil de connexions, et une file d'attente de connexions. Tous les profils (pour jDb, jKVDb, jCache et le nouveau jSoapClient) sont à présent stockés dans un seul fichier,profiles.ini.php
.dbProfils.ini.php
,cache.ini.php
etc, n'existent plus.- réponses:
- nouvelle réponse basique html (sur laquelle vous pouvez fournir un template contenant une page entièrement HTML)
jResponseHtml
possède à présent des plugins.- Minify est maintenant un plugin de
jResponseHtml
, et n'est plus du tout intégré dans une classe. la classejMinifier
n'existe plus, à cause des problèmes de performance et de licence. Pour minifier les ficheirs CSS et JS, le développeur devrait maintenant ajouter un point d'entrée minify.php qui utilise directement Minify. - Changements effectués dans les réponses pour utiliser la nouvelle gestion des erreurs. Pour la plupart des réponses, le contenu des erreurs est ressortie en tant que du texte ou en tant que réponse HTML.
- nouvelle vraie debug bar (en tant que plugin de jResponseHtml). Elle affiche les erreurs harmonieusement (sans rompre l'affichage principal), et possède ses propres plugins:
- plugin pour montrer les requêtes SQL
- plugin pour montrer les données de session et les données jForms
- plugin pour montrer les journaux par défaut
- plugin pour montrer les messages soap
- jDb
- implementation de jDbConnection::getAttribute() pour récupérer la version de la base de données (ticket #913)
- utils:
jBuildTools
, nouvelles instructions de traitement:includeinto
,includerawinto
. nouvelles options pour toutes les instructions de traitement 'include'jMailer
: ajout de la possibilité de copier tous les courriels dans des fichiers- nouvelle classe
jSoapClient
pour récuperer un objet SoapClient, configuré avec des paramètres stockés dans un profil.
- Ajout de scripts pour créer et exécuter les tests phpunit (l'intégration de Simpletests et le module junittests sont à présent dépréciés)
- Meilleur génération de mot de passe aléatoire dans jAuth
- jAcl2:
- la clé primaire d'un utilisateur d'un groupe est à présent une chaine et plus un entier auto-incrémenté. La configuration des droits et des groupes sera plus facile. Le champ code a également été supprimé
- ajout de la possibilité d'interdire un droit à un groupe. Si un utilisateur est dans plusieurs group, et q'un de ses droits est annulé dans un de ces groupes, alors l'utilisateur n'a plus ce droit.
- Amélioration faits sur l'UI de la gestion des droits (module jacl2db_admin)
- jForms:
- ajout de la possibilité d'exécuter facilement du code js pendant l'évènement de soumission. Nouvelle méthode jFormsJQ.addSubmitHandler .
- ajout du support d'attributs dans le plugin form de tpl, ie: les attributs html peuvent être ajoutés à l'élément du formulaire généré.
- ajoute de la possibilité de désactiver un élément dans un contrôle “choice”
- Menulist devrait avoir un élément vide même si ce n'est pas requis (Ticket #977)
- ajout du support d'éléments vide dans une listboxes (Ticket #977)
- Jelix-scripts: refactorisation majeur de jelix-scripts, pour facilité l'utilisation des commandes jelix
- plus aucun script jelix.php. Remplacé par un nouveau cmd.php dans l'application pour lancer les commandes sur l'application ( –myapp paramètre n'existe plus)
- nouveau script createapp.php into lib/jelix-scripts/
- nouveau fichier de configuration (de “préférences” pour générer les entêtes de vos sources, au format ini), stocker dans votre répertoire HOME. plus de fichier
default.conf.php
. - meilleur API interne, plus d'objets, moins de fonction unique, plus aucun defines, et meilleur traitement des erreur
- jelix-scripts est à présent fourni dans toutes les éditions: dev, opt, gold
- nouvelle commande pour créer des packages de langue (ticket #268)
jTpl
: on devrait être capable d'indiquer le code langue du plugin jloccal de jTpl (ticket #1203)
Bugs corrigés ¶
- Ticket #1318: correction de
jUrl::escape
n'appellait pas urlencode en mode highlevel - le protocol https est à présent vérifié quand ce dernier est nécessaire pour le moteur d'url significant (ticket #380)
- ticket #1160: pour le driver mssql, support des limites pour les requêtes.
Et toutes les corrections de bug de la branche 1.2.x (1.2.0, 1.2.1, 1.2.2).
Détails des changements dans la 1.3RC1 ¶
Améliorations ¶
- Ticket #1379 - mise à jour de TCPDF en 5.9.093
- mise à jour de php5redis lib en 1.2
- mise à jour de jquery en 1.6.2
- mise à jour de jQuery UI en 1.8.15
- mise à jour de markitup en 1.1.12
- jForms: meilleure vérification du nom de contrôle lors de la récupération d'un contrôle dans certaines méthodes
- Nouveau plugin “implode” pour
jTpl
- ticket #1340 -
jTpl
jTpl:formdatafull
devrait afficher une liste pour des contrôles d'items multiples - Debug bar, sql log: amélioration de l'affichage de la liste des logs, meilleur détéction de l'objet
jDao
jAcl2
: nouvelle méthode dao pour changer le sujet d'un groupe de sujets- ticket #809 - Génération des droits jACL2 avec la commande
createdao
- ticket #1388 - améliorer les performances lors de l'utilisation clearstatcache
- Ticket #1189 - contrôleur crud , le décalage (offset) de page devraient être transmis à toutes les pages de sorte que l'utilisateur retourne sur la bonne partie de la liste des pages
- ticket #1421 - Affichage dans les journaux du HTTP referer
- meilleure vérification de sécurité basée sur l'ip dans le plugin auth
- script Jelix :
- petite amélioration dans l'affichage de la commande
help
- chanement d'un message d'erreur dans le script createapp
- ticket #1400 - dans
jDateTime
ajout du format “date time” sans les secondes - Dans un contexte cli, il est mieux d'afficher les messages d'erreur directement dans la console
- Meilleur traitement du contexte CGI pour les script CLI qui sont lancés avec
php-cgi
jUrl
- moteur significant - nouveau paramètre “type”, 'path' permet d'avoir le chemin comme paramètre- Ticket #1411 - Ajout d'une option de configuration pour forcer la version HTTP
- ticket #1416 -
jIncluder
devrait envoyer une exception quand le compilateur échoue - ticket #1220 partie 2 - nouvelle méthode
jImageModifier::transformImage
pour modifier une image dans un fichier, sans utiliser le système de cache dejImageModifier
- Valeur par défault pour notfoundAct ne devrait pas être vide
- Mise à jour des liens dans le template de la zone check_install
Bugs corrigés ¶
- correction d'une mise à jour jelix, où emailHeaders était déplacée avec une mauvaise valeur
- script SQL d'installation pgsql: la valeur booléenne devrait être entre quotes
- ticket #1384: correction de bug sur l'updater pour jelix 1.3
- ticket #1381: correctiion d'une variable non définie dans
Auth::getRandomPassword
- ticket #1382: fichier d'erreur
jIAuthDriver.iface.php
n'existe pas quand on utiliseinstallapp
avec l'édition “opt” - correction d'un mauvais nom de méthode dans
jRequest
:getDomainName
jUrl::getFull
devrait supporter le cas où le moteur d'url engine retourne déjà un nom de domaine- les composants devraient utiliser les méthodes de
jRequest
pour récuperer le protocol et le nom de domaine, au lieu d'utiliser directement les valeurs - Ticket #1385: memory logger devrait avoir des limites pour stocker les messages
- Correction du bogue dans
jUrl::getFull
- le nom de domaine était dupliqué dans certains cas - Corrcetions de bogues dans jacl2db_admin: les droits pour les groupes anonymes ne devraient pas être modifiés. Et on ne devrait pas changé le droit de 'oui' à 'non'
- ticket #1404 - correction d'une erreur php lors de l'utilisation d'une liste d'exclusion de CSS dans le plugin minify
- ticket #1392 - les commandes jelix devraient être compatibles avec php-cgi dans un contexte “cli”.
- Ticket #1414 - correction d'une regression: Pour les protocols spécifiques, les réponses des erreurs ne sont pas au bon format.
- jelix scripts: pour les commandes qui ont des paramètres variables, l'erreur 'too many parameters' était toujours déclanchée.
- jelix-scripts, la commande help de
acl2right
n'était pas juste
Et toutes les corrections de bogues depuis la branche 1.2.x (1.2.3, 1.2.4, 1.2.5).
Détails des changements dans la 1.3RC2 ¶
Corrections critiques ¶
- Vulnérabilité de type XSS dans le formulaire de login du module jauth. L'affichage du login après un échec n'était pas filtré dans le template “auth~login.form”.
Corrections ¶
- jDao: l'utilisation de flottant dans jDao pouvait conduire à des erreurs de syntaxe SQL sur les serveurs configuré avec la locale système fr_FR
- ticket #1426 - régression après la mise à jour de jQueryUI: le datepicker de jforms ne s'initialisait pas avec la date de départ, mais toujours avec la date du jour.
- Régression dans jMinify : le premier fichier css/js était minifié même quand il ne devait pas l'être
Détails des changements dans la 1.3RC3 ¶
Améliorations ¶
- jUnitTestCase : ajout de méthodes qui permettent d’exécuter du code avant et après l’exécution de tout les tests d'une classe.
- Jelix-scripts : la commande createdaocrud génère maintenant des urls dans un fichier urls.xml du module, quand l'application utilise le moteur d'urls significant.
- Jelix-scripts : nouvelle commande resetfilesrights
- lanceur PHPUnit : ajout de l'aide sur les options spécifiques à Jelix
- améliorations de la 1.2.5
- Ajout de directives apache pour mod_rewrite, dans le htaccess crée pour les nouvelles applications
- jUnitTestCase : ajouts de méthodes permettant d’exécuter du code avant et après l’exécution de tout les tests d'une classe de tests.
- système de mise à jour : il est maintenant possible d'avoir un script de mise à jour qui sera appelée par la mise à jour de plusieurs branches d'un projet. Le ou les numéros de versions sont maintenant indiqués dans la classe de mise à jour et non plus dans le nom du fichier.
Bugs corrigés ¶
- regression : jAcl2db ne fonctionnait plus avec postgresql. Mauvais type de champs dans l'une des tables.
- jAcl2 : le listener pour authlogout efface correctement le cache de jAcl2DbUserGroup.
- jUnitests prend maintenant en compte la nouvelle API “skip” de simpletest.
- jDaoConditions génère maintenant une exception quand la propriété indiquée n'existe pas.
- jelix-scripts : les valeurs chmod n'étaient pas correctement prise en charge
- jelix-scripts : la commande createapp n'utilisait pas les valeurs de newAppInfoLocale et newAppInfoCopyright.
- Dans les tests PHPunit d'une appilcation, le coordinateur et la configuration n'était pas disponible dans les variables globales. Les tests d'un module pourraient en avoir besoin.
- Corrections des bugs de la 1.2.5
- jTpl : le mot “print” devrait être autorisé dans les clés de locales.
- ticket #1427 - jDao générait une erreur de syntaxe SQL dans la clause ORDER généré pour jDaoConditions (regression)
- Corrections de problèmes dans l’implémentation des objets mock dans simpletest.
Détails des changements dans la 1.3 finale ¶
- Suppression d'une possible boucle infinie dans le coeur de jelix, quand ob_end_clean échoue durant l'affichage d'une page d'erreur
- ticket #1432 - le modificateur date_format devrait supporter les timestamp comme paramètre
- Les redirections sont maintenant autorisées sur la plupart des types de requêtes jelix.