C'est la seconde édition du rapport de développement de PostNuke pour 2007. Comme d'habitude, pas trop technique, pas trop détaillée mais rendant compte de l'état du développement du système.
Au programme
* Dossiers d'installation et de mise à jour
* L'API et les variables d'environnement
* La librairie des objets de PostNuke (pnobjlib)
* Modification de modules
* Les fichiers de langue
* Recherche de testeurs PostgreSQL
Tout d'abord, du fait de la sortie de la 0.8 MS3 du 7 février 2007, différentes informations dans cet article ont déjà été appliqués à la version MileStone et d'autres sont disponibles dans la version SVN. Ces éléments seront identifiés par un (*).
Dossiers d'installation et de mise à jour
L'installateur de la version 0.8 permet maintenant de vérifier si le dossier pnTemp est inscriptible. Avant cela, seulement les sous-dossiers devaient être inscriptibles. De plus, beaucoup de modules ont besoins de dossiers (temporaires) dans lesquels, ils peuvent écrire pour les besoins. (par exemple le dossier de cache pour de la création d'images, des flux rss). Avec un dossier pnTemp, ces modules sont autorisés à créer eux-même des dossiers s'ils n'existent pas. (*)
Le dossier de mise à jour pour la série des 0.7 à été mise à jour: beaucoup de code a été ajouté afin de pouvoir migrer le placement des blocs dans la nouvelle table de placement des blocs. (*)
Autre chose, les vieux blocs (legacy) peuvent maintenant être enregistrés dans le dossier /config/blocks. Les fichiers spécifiés doivent être copiés manuellement de l'ancien /includes/blocks dans leur nouveau dossier. (*)
L'API et les variables d'environnement
Dans la pnAPI la fonction get_magic_quotes_runtime() est appelée plusieurs fois pour différents usages. Avec la methode du cache interne, le résultat est enregistré dans le tableau global PNRuntime. Le gros avantage de cela est que la vitesse du site a augmenté de manière significative. (*)
Robert a ajouté des paramètres pour permettre aux fonctions pnSessionGet/Set/DelVal d'accepter un chemin (optionnel) en argument 'autocreate' et 'overwriteExistingVar'. Cela devrait marcher avec des structures simples ou complexes. Le changement est visible seulement si l'on rajoute un argument aux fonctions. A l'heure actuelle, aucun usage n'a encore été mis en place.
La librairie des objets de PostNuke (pnobjlib)
A cette étape du développement, ont été fait (et doivent être fait) dans la librairie des objets. Beaucoup sont de 'simples' déboggage mais différents changements doivent être faits. Certains sont mentionnés ci-dessous :
Dans la classe DBUtil, il existe maintenant une nouvelle méthode permettant d'incrémenter un champ avec une simple fonction : incrementObjectFieldByID. Cela pourra être utilisé par les auteurs de modules pour mettre à jour un compteur de lecture d'un élément par exemple. (*)
De plus, la fonction selectScalar a été ajoutée (avec une requête SQL en argument). C'est la meilleur utilisation pour mettre en place quand vous voulez une requête du genre "select count(*)" ou une autre sélection scalaire.
Les fonctions de conversion utf-8 (convertFromUTF8 et convertToUTF8) ont été déplacées d'AjaxUtil à DataUtil.
Avec la résolution d'un bogue avec Google AdSense ou le script était automatiquement nettoyé par le filtre de sortie safeHTML, un nouvelle fonctionnalité a été ajoutée à FormUtil: Avant le nettoyage des informations, la classe FormUtil vérifie maintenant si l'utilisateur courant à des droits d'administration. Cela permet aux administrateurs de mettre du code potentiellement dangereux (javascript par exemple), mais après-tout c'est son site !
Parce qu'il est plus facile de lire le dossier 'languages' pour lire les langues disponibles et comparer les résultats avec la liste des langues, la classe LanguageUtil a une nouvelle fonction: getInstalledLanguages. Celle-ci permet de réduire significativement le nombre de dossiers vérifiers.
Voici l'ordre, dans lequel la class pnRender recherche les plugins :
1. system/pnRender/plugins
2. system/Theme/plugins
3. config/plugins
4. current theme-directory/templates/modules/$module/plugins
5. current theme-directory/plugins
6. current module-directory/pntemplates/plugins
Dans le futur, deux nouvelles variables vont être ajoutées dans le rendu de pages fait par la classe PageUtil. Tout d'abord, une 'description' qui est par défaut le slogan du site. Ensuite, un pied de page 'footer' permettant de changer le contenu de sortie du pied de page.
Enfin, un paramètre additionnel 'display' a été ajouté au plugin pager, lequel peut être appliqué aux 'pages' . Il permet de paginer des pages avec des numéros.
Le dernier mais non le moindre, la class Theme supporte désormais l'ajout de filtres par section dans le fichier d'une page de configuration. Ce qui permet de charger, dans la première instance, des filtres personnalisés sur les sorties. Cependant il n'existe encore aucun interface utilisateur permettant de gérer cette fonctionnalité.
Et le thème Atom a été mise à jour, la version actuelle est la 1.0.
Modifications de modules
Les modules suivant ont été mis à jours afin d'assurer leur compatibilité avec la version 0.8 ou encore d'améliorer leur système d'administration.
Le module User a désormais le très attendu "alpha pager" afin de visualiser les utilisateurs. (*)
Toutes les occurences de rendu de block des APIs (lues par le module Blocks) ont été modifiées pour passer de l'ancien style d'appel "return themesideblock" au nouveau "return pnBlockThemeBlock". (*)
Concernant le modules "préférences", un paramètre a été ajouté afin de configurer le caractère de séparation pour les liens permanents (*)
Une case à cocher a aussi été mise en place pour désactiver le code javascript du système. (*)
Les modules "Votes" et "multisite" ont été mis à jour afin de respecter les standards de codage et les templates. (*)
Pour le module de recommandation du site, une extension a été ajoutée afin de pouvoir ajouter des liens vers des marque-pages sociaux par exemple.
Les fichiers de langue
Les traductions définies dans différents modules ont été revues et ajustées pour respecter la nouvelle convention de noms utilisée dans la version 0.8 de Postnuke (voir également Dev Update 2006-06). Ceci signifie que les traductions définies par un module spécifique devront commencer par un préfixe spécifique correspondant au nom du module. De plus, de nouvelles constantes de traduction globale (utilisant la fonction pnML) ont été ajoutés aux fichiers de traduction du noyau. L'effet principal étant de réduire de façon significative le nombre de constantes à traduire.
Ces changements ont été appliqués aux modules suivant : Admin, Admin_Messages, AuthPN, Blocks, Mailer, legal, Settings and SysInfo. Les modules ValueAddons suivront plus tard.
Recherche de testeurs PostgreSQL
La class DBUtil de la version 0.8, comme mentionné plusieurs fois précédemment, fait son possible pour faire fonctionner PostNuke sur différentes plateformes de base de données tel que : PostgreSQL, Oracle et MSSQL. La majorité de nos testeurs utilisent MySQL, mais la team de développement encourage aussi les utilisateurs à tester la version 0.8 sur un système PostGreSQL. Les utilisateurs de windows ayant un environnement Xampp peuvent trouver des paquets d'installation sur le site web de PostGreSQL (FAQ Win32 ici).
Les utilisateurs de windows utilisant Xampp peuvent trouver le package d'installation sur le site de PostGreSQL.