Raccourcis : Contenu - rubriques - sous rubriques
FR

Piste: 1.0beta3

Wiki: Plan du site - Derniers changements - Back link

Jelix 1.0 beta3

14 septembre 2007 (svn 583)

Principales évolutions

  • Implémentation complète de jForms, le système de formulaire de Jelix : vérification automatique coté serveur et client, génération automatique d'un formulaire HTML, tout est opérationnel.
  • Contrôleur générique type CRUD, pour réaliser rapidement des écrans de gestion de contenu de tables (utilise un dao et un jform).
  • support de drivers dans jAcl
  • Détection automatique du paramètre de configuration basePath.
  • Module junittests pour faciliter la création de tests unitaires
  • possibilité d'avoir des templates spécifiques à des langues
  • Réorganisation des répertoires de plugins : maintenant la notion de plugin n'est plus restreint aux plugins pour le coordinateur, mais désigne aussi les drivers d'authentification, de jDb, plugins de templates etc.. Cela permet d'ajouter plus facilement ce genre d'extensions, directement dans l'application plutôt que de les mettre dans le répertoire de jelix. De plus, le nommage des noms des fonctions des plugins a légèrement changé.
  • Jelix 1.0beta3 n'est plus compatible par défaut avec PHP 5.0, mais uniquement pour les versions PHP supérieures à 5.1. (mais générer une distribution Jelix pour PHP 5.0 à partir des sources reste possible).
  • meilleur support des entêtes http dans les réponses
  • meilleure détection automatique de la langue du navigateur dans le plugin autolocale

Mettre à jour depuis jelix 1.0 beta 2/2.1

Suite à certaines modifications, voici ce que vous devez faire pour mettre à jour Jelix et votre application :

  • supprimez les répertoires lib/jelix et lib/jelix-plugins/ (récupérez vos propres fichiers si vous en avez mis dans ces répertoires, vous les réinstallerez ensuite)
  • supprimez le répertoire lib/jelix-modules/jelix
  • supprimez le contenu du répertoire temp de votre application
  • installez le nouveau répertoire lib/jelix, lib/jelix-plugins (qui est vide dans la beta3) et les autres répertoires fournis.
  • modifiez les fichiers de configuration de votre application, et éventuellement vos autres fichiers sources, en changeant les noms des paramètres defaultModule, defaultAction, defaultLocale, defaultCharset, defaultTimeZone, defaultTheme, respectivement par les noms startModule, startAction, locale, charset, timeZone et theme.
  • Si vous avez créé des plugins de coordinateur :
    1. placez les dans un sous répertoire coord/ dans votre répertoire de plugins (exemple : votre-appli/plugins/exemple devient votre-appli/plugins/coord/exemple
    2. renommez vos fichiers de plugins exemple.plugin.php en exemple.coord.php
    3. dans vos fichiers de plugins, changez le nom de l'interface jIPlugin en jICoordPlugin
  • Si vous avez créé vos propres drivers d'authentification, drivers jdb, renommé aussi les fichiers et les noms des classes (voir la documentation sur les plugins)
  • si vous avez créé des plugins de templates
    1. bougez vos répertoires common, html etc dans un sous-répertoire tpl/ de votre répertoire plugins (dans votre-appli/plugins/tpl donc)
    2. dans les fichiers de configuration de votre application, retirez la ligne tplpluginsPath qui n'est plus nécessaire
    3. modifiez le nom des fonctions de vos plugins, en suivant le schema “jtpl_typeplugin_typesortie_nomplugin” où typeplugin est le type de plugin (function, modifier etc..), typesortie est le type de format (html si il est dans le répertoire html, common si il est dans le répertoire common etc..).
  • Dans vos fichiers dao :
    • modifiez les attributs selectmotif, updatemotif et insertmotif en selectpattern, updatepattern et insertpattern (mais ce n'est pas une urgence, les anciens noms sont encore reconnu dans la beta3)
    • dans vos méthodes en PHP, changez l'appel à $this→_pkFields en $this→getPrimaryKeyNames().
  • Dans vos fichiers PHP, lors de l'utilisation de jDatetime, changez les noms des constantes BD_* en DB_* (mais ce n'est pas une urgence, les anciens noms sont encore reconnu dans la beta3)
  • si vous utilisiez la classe JSON (lib/JSON/) directement, remplacez par l'utilisation de la nouvelle classe jJson.
  • Il y a eu pas mal de modifications dans le format des fichiers jForms. Se référer à la documentation pour connaître la nouvelle grammaire XML.
  • Changez l'appel aux classes jAclManager et jAclUserGroup par jAclDbManager et jAclDbUserGroup (voir le détails des changements)
  • Utilisation des requêtes jsonrpc et xmlrpc : les paramètres RPC reçus sont maintenant dans un unique paramètre jelix “params”.

Détails des changements

Changement d'API

  • jDao : les attributs selectmotif, updatemotif et insertmotif ont été renommé en selectpattern, updatepattern, insertpattern. Les anciens noms sont quand même valables jusqu'à la version 1.0.
  • jException : la méthode getMessage retourne le message localisée plutôt que la clé du message. Il n'y a plus les propriétés localizedMessage, localeParams property, et la méthode getLocaleMessage. Nouvelles méthodes : getLocaleKey and getLocaleParameters.
  • Réorganisation de l'emplacement des plugins de coordinateurs, des drivers d'authentification, des drivers pour jDb et des moteurs d'urls. Pour les détails, voir la page des plugins
    • Maintenant les répertoires désigné par le paramètre pluginsPath de la configuration contiennent tous ces plugins, classés dans des sous-répertoires distincts.
    • le nommage des noms de classes et des fichiers des plugins pour le coordinateur a été modifié suite à la réorganisation des répertoires de plugins. Les noms des fichiers deviennent foo.coord.php, les noms des classes fooCoordPlugin. Et les plugins sont déplacés dans un sous répertoires coord/ des répertoires jelix-plugins etc.. L'interface jIPlugin a été renommée en jIAuthPlugin.
    • Le nommage des classes et des fichiers des drivers pour l'authentification, pour jDb, pour les moteurs d'urls et pour les plugins de templates a également changé.
  • jDateTime : les constantes BD_* ont été renommée en DB_*. Les anciens noms sont quand même valables jusqu'à la version 1.0.
  • Modifications dans le format des fichiers jForms.
  • Modifications dans les fichiers de configurations : les noms des paramètres defaultModule, defaultAction, defaultLocale, defaultCharset, defaultTimeZone, defaultTheme, ont été renommé respectivement en startModule, startAction, locale, charset, timeZone et theme.
  • jAcl :
    • jAclManager devient jAclDbManager
    • jAclUserGroup devient jAclDbUserGroup
    • jAcl::isMemberOfGroup() déplacée dans jAclDbUserGroup
    • jAcl::getDbProfil() déplacée dans jAclDb (nouvelle classe) et renommée en getProfil()

Améliorations, nouveautés

  • Configuration :
    • Le paramètre de configuration basePath est maintenant détecté automatiquement quand sa valeur est à vide dans la configuration. Cependant, pour les applications qui ont plusieurs points d'entrée dans des répertoires différent, il faut tout de même l'indiquer à la main.
    • Nouveau paramètre jelixWWWPath, qui indique le chemin URL vers le contenu du répertoire jelix-www
  • Amélioration de la détection automatique de langue dans le plugin autolocale
  • jForms : implémentation complète, qui comprend donc :
    • methode check(), validant les données coté serveur, qui a été largement complétée et debuggée
    • des plugins de templates pour générer un formulaire HTML correspondant à un objet formulaire jForms, incluant également la génération automatique de la validation javascript coté client, l'affichage des erreurs détectée coté serveur
    • nouvelles méthodes saveFile et saveAllFile, qui permettent de sauvegarder facilement les fichiers uploadés d'un formulaire.
  • jReponse :
    • nouvelle méthode clearHttpHeaders()
    • un code http 500 est envoyé quand il y a des erreurs
    • jResponseHtml : ajout de la prise en charge des feuilles de styles alternatives
    • jResponseJson et jResponseJsonRpc : on peut maintenant spécifier le code HTTP de réponse. (ticket 157)
  • jTpl :
    • on peut avoir des templates spécifiques à une langue, en les mettant dans des sous-répertoires ayant pour nom le code d'une langue (comme pour le répertoire locales/)
    • on peut forcer le type de template (html, text etc..), lors de l'appel à la méthode fetch (utile lorsque l'on veut utiliser un template pour générer le contenu d'un email par exemple, indépendamment du type de la réponse de l'action)
    • Nouveaux types de plugins de templates, cfunction et cmodifier : ce sont des plugins appelés lors de la compilation du template plutôt qu'à l'affichage, ce qui permet d'améliorer les performances.
    • nouveau modificateur “count” pour récupérer le nombre d'élément d'un tableau
    • on peut indiquer si le template que l'on utilise est de confiance ou pas (3ième paramètre aux méthodes display, fetch…)
    • nouveau modificateur eschtml (identique à escxml)
    • les arguments des modificateurs peuvent maintenant être séparés par des virgules (ticket #129)
    • Ajout de variables de templates par défaut : j_datenow, j_timenow, j_basepath, j_jelixwww
  • jDateTime : (ticket #176)
    • nouvelle méthode now()
    • modification sur les méthodes add() et sub() : elles acceptent toujours un objet jDateTime en paramètre, mais il y a maintenant une nouvelle alternative. Elles peuvent maintenant accepter les paramètres année mois jour heure minute seconde.
    • les constantes BD_* ont été renommée en DB_* mais restent utilisables (obsolètes)
  • jDao :
    • nouvelles méthodes jDaoRecordBase::getPk(), jDaoRecordBase::getPrimaryKeyNames(), jDaoFactoryBase::deleteBy(), jDaoFactoryBase::getPrimaryKeyNames(), jDaoFactoryBase::getProperties().
    • nouveau type de propriété : text
  • jAuth :
    • prise en charge de l'authentification persistante (ticket #229)
    • le nom de la variable de session contenant les informations d'un utilisateur connecté, est maintenant paramétrable, et permet donc d'utiliser plusieurs type d'authentification dans une même application
    • nouvelle méthode jAuth::getRandomPassword()
    • possibilité d'indiquer un nom de profil pour le driver db
  • jAcl se base maintenant sur un système de driver, permettant de choisir la source des données sur les droits. L'implémentation de jAcl a été donc déplacée vers un driver “db”. Les drivers doivent implémenter la nouvelle interface jIAclDriver.
  • jUrl :
    • pour le moteur significant : plusieurs urls significatives peuvent maintenant pointer vers la même action, à condition qu'elles aient des paramètres statiques qui les différencies
  • Nouvelle classe jJson et jCrypt.
  • Nouveau contrôleur, jControllerDaoCrud, pour faire une gestion de données de type CRUD sur une table, avec affichage automatique à partir d'un dao et d'un form, d'écrans liste, édition, effacement d'enregistrements.
  • Nouveau module junittests pour pouvoir faire des tests unitaires facilement dans les modules.
  • Améliorations sur le script de vérification d'installation
  • Ajout d'un script pour créer toute une interface CRUD à partir d'une seule table
  • Activation de la détection des erreurs type E_STRICT
  • Amélioration de la documentation de l'API dans jAuth, jDao, jUrls, plugins de templates

Corrections

  • jDb, driver pdo : le driver pdo renvoyait un tableau au lieu d'un objet lors de l'utilisation du resultSet en tant qu'itérateur (à cause d'un bug dans PDO). (ticket #180)
  • jDao :
    • un attribut “value” vide n'était pas autorisé (ticket #191)
    • mauvais formatage pour l'erreur method.limit.forbidden
    • suppression d'une “notice” dans jDaoRecordBase::setPk()
    • mauvaise génération des conditions au niveau des opérateurs IN/NOT IN (bug #203).
    • les noms des tables et des champs sont maintenant entre quotes dans les requête générées, afin de pouvoir utiliser correctement ces noms dans Postgresql et mysql. (bug #98)
    • pour les propriétés optionnelles, les méthodes ne vérifiaient pas si les valeurs dynamiques correspondantes étaient nulle, et si donc il fallait générer un IS NULL ou pas lors de leur utilisation dans des clauses WHERE. (ticket #228)
    • correction de bugs sur les propriétés de type autoincrement
  • jTpl :
    • (regression) l'utilisation des mots clés true, false et null n'était plus possible car php les voit comme des constantes
    • certains opérateurs étaient utilisables dans les tags d'affichage. Ils ne le sont plus.
    • un même fichier compilé de template était utilisé lors de l'utilisation du template dans des réponses de type différents (bug #225)
    • il était possible d'inclure les tags PHP dans un template, ce qui est un trou de sécurité potentiel pour les templates qui ne sont pas “de confiances” (uploadé par un user par ex).
    • Il n'était pas possible de mettre en commentaire des tags jtpl (bug #106)
  • réponses :
    • les entêtes http n'étaient pas bien géré dans certaines réponses : on ne pouvait pas les modifier (ticket #198).
    • jResponseBinary : la propriété mimeType n'était pas déclarée (ticket #188)
    • jResponseXmlRpc et jXmlRpc : bug durant l'analyse des données de type struct (ticket #190 et#192) et au niveau du nom de la méthode (ticket #245 et #243).
    • rss et atom : le code langue était mal généré (ticket #247)
  • jUrl, moteur d'url significant : dans le fichier xml, paramètre de type date, les jours “10” et “20” n'étaient pas reconnus (ticket #204)
  • jAuth : mauvais opérateur dans jauth.listener.php (bug #221).
  • jControllerCmdLine : la signature de la méthode param() n'était pas identique à celle de sa classe mère
  • Problème d'encodage avec la classe JSON incluse dans Jelix : mise à jour de cette classe (bug #321)
  • Problème d'encodage lors de l'envoi des mails

Autres versions

fr/changelog/1.0beta3.txt · Dernière modification: 2012/04/14 22:44 par laurent
Fils rss des changements récents dans le wiki Creative Commons License