Bestiaire Jelix – numéro 2

Mettre à jour sa version de Jelix ET son dépôt en une fois

Dans ce numéro nous allons voir comment mettre à jour le dossier lib de son site/application, directement depuis les sources Jelix, en passant par un type de makefile.

Vous me direz « oui c’est facile, pas besoin de faire un build pour si peu ; je prends le dernier tar.gz stable et je remplace le dossier lib et voilà »

Oui !

mais non…

Si vos sources sont sur un dépôt (j’espère pour vous;) … vous voyez où je veux en venir, le patacaisse pour gérer ce qui est là / plus là, etc…

Donc le process de build va s’occuper, certes de produire une version de Jelix prête à l’emploi, mais également effectuer le ménage parmi les fichiers qui doivent être supprimés, ajoutés, modifiés afin qu’il ne vous reste plus qu’à faire un commit et push tout beau tout propre. Oui madame !

Partons d’un dépôt git que l’on va cloner :

foxmask@home:~$ git clone github/foxmask-havefnubb 
Cloning into foxmask-havefnubb...
done.

vérifions que rien n’a été modifié

foxmask@home:~$ cd foxmask-havefnubb
foxmask@home:~/foxmask-havefnubb$ git status
# On branch master
nothing to commit (working directory clean)

dans ce dossier je dispose du dossier lib contenant jelix

foxmask@home:~/foxmask-havefnubb$ ls -1
cache
[...]
lib
migration.php
[...]

à présent, depuis un clone git du projet jelix, je lance la mise à jour comme suit :

foxmask@home:~/github/jelix-original$ php build/buildjelix.php foxmask-dev.ini 
foxmask@home:~/github/jelix-original$

à présent dans mon dossier ~/foxmask-havefnubb retournons voir ce qui a changé

foxmask@home:~/foxmask-havefnubb$ git status|wc -l
1057

ca rigole pas hein ;) bon aller juste quelques lignes parce que je sens que vous n’y croyez pas :

foxmask@home:~/foxmask-havefnubb$ git status|more
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	new file:   lib/jelix-admin-modules/jpref_admin/classes/jpref_admin.listener.php
#	new file:   lib/jelix-admin-modules/jpref_admin/controllers/prefs.classic.php
[...]

Donc on parachèvera par un git commit -a -m « update to jelix x.y » suivi d’un push et voilà !

Vous allez me dire « hey mais ho ; comment tu fais tout ce mic mac ? on a rien vu ! »
Ah ba oui grand balot que je suis, je ne vous ai pas montré l’essentiel : le contenu du fichier foxmask-dev.ini ; mon fichier de config pour builder jelix !

le voici :

MAIN_TARGET_PATH = /home/foxmask/foxmask-havefnubb/
EDITION_NAME = 
PHP_VERSION_TARGET = 5.2
 
ENABLE_PHP_XMLRPC =
ENABLE_PHP_JELIX =
ENABLE_DEVELOPER = 1
WITH_BYTECODE_CACHE = auto
 
INCLUDE_ALL_FONTS = 
 
STRIP_COMMENT =
ENABLE_OPTIMIZED_SOURCE =
 
PACKAGE_TAR_GZ = 
PACKAGE_ZIP = 
 
DELETE_DEPRECATED_FILES = 1
 
TARGET_REPOSITORY=git

le paramètre qui permet de gérer vos sources est bien évidement le dernier : TARGET_REPOSITORY qui peut aussi être hg ou svn.

Quant au premier paramètre MAIN_TARGET_PATH , il doit contenir le chemin vers le dossier de votre application, celui « contenant » le répertoire lib (celui de jelix bien sûr).

A présent vous êtes fin prêt pour obtenir les versions stables directement des sources de Jelix et faire votre mise à jour de Jelix au sein de vos applications/sites sans aucun effort. Pas belle la vie ? ;)

Bonnes mises à jour ;)

Bestiaire Jelix – numero 1

Bonjour,

au fur et à mesure que les questions s’enchainent sur le forum, une idée m’est venue de produire un bestiaire de « comment qu’on fait des bébés » avec jelix :)

En somme, par forcément une FAQ, juste un recueil de « trucs », croisés sur le chemin, qui pourraient servir à d’autres.

En voici 2

1 – Changer le doctype de son application

Le premier permet de changer le doctype de votre site quand celui ci n’est pas (encore) pris en charge par Jelix. Par exemple le HTML5.

Cela se fait très simplement.
Dans le dossier response de votre application se trouve un script myHtmlResponse.class.php (par exemple).

Présentation de la classe
Cette classe fournie 2 méthodes, le constructeur, et la méthode doAfterActions. Le premier servant à inclure les scripts JS et CSS (si besoin), le second à définir tous les process communs à toutes actions comme des paramètres de templates etc…

la voici :

class myHtmlResponse extends jResponseHtml {
 
    public $bodyTpl = 'foobar~main';
 
    function __construct() {
        parent::__construct();
        // Include your common CSS and JS files here
    }
 
    protected function doAfterActions() {
        // Include all process in common for all actions, like the settings of the
        // main template, the settings of the response etc..
        $this->body->assignIfNone('MAIN','<p>no content</p>');
    }
}

Ajoutons le support HTML5
la classe jResponseHTML, dont hérite notre classe myHtmlResponse, met à disposition une méthode outputDoctype que nous allons surcharger pour que notre site prenne donc en compte notre doctype comme suit :

class myHtmlResponse extends jResponseHtml {
 
    public $bodyTpl = 'foobar~main';
 
    function __construct() {
        parent::__construct();
        // Include your common CSS and JS files here
    }
 
    protected function doAfterActions() {
        // Include all process in common for all actions, like the settings of the
        // main template, the settings of the response etc..
        $this->body->assignIfNone('MAIN','<p>no content</p>');
    }
 
    protected function outputDoctype() {
        global $gJConfig;
        $language = preg_split('/_/',$gJConfig->locale);
        echo '<!DOCTYPE html>'."\n";
        echo '<html lang="'.$language[0].'">';
    }
}

Et c’est tout ;)

La variable $gJConfig->locale pointe sur le fichier defaultconfig.ini.php contient la valeur du paramètre locale, exemple fr_FR, en_EN etc…

Bien évidement un doctype ne fait pas tout (comme le support de placeholder ou autre joyeuseté propre à HTML5) mais le sujet n’était pas là ;-)

2 – Personnaliser le cartouche d’entête de vos scripts
Ce que je nomme le cartouche d’entête est ceci :

/**
* @package havefnubb
* @subpackage
* @author foxmask
* @copyright 2011 Olivier Demah
* @link http://www.havefnubb.org
* @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License
*/

ce bout de commentaire qui suit le fameux <php?.

Pour le personnaliser une fois pour toute,lorsque vous allez utiliser la ligne de commande :

php cmd.php ...
php createapp.php ...

Il vous suffit de copier le fichier jelix-scripts.ini dans votre home rep (/home/foxmask ou c:\users\foxmask)

cp  ./lib/jelix-scripts/templates/jelix-scripts.ini ~/.jelix-scripts.ini

Puis de remplacer ses informations à votre convenance pour les retrouver ensuite dans tous vos scripts PHP ainsi que dans les fichiers project.xml et module.xml

Si vous avez des tips dans ce genre à partager faites m’en part, on pourra produire plein d’autres numéros :-)

Have Fun !

ScreenCast – Wizard Jelix

Ce nouvel opus « Screencast Jelix » contient 2 épisodes.

2 épisodes pour vous permettre de faire une pause entre les 2 ; ça ne sera pas de trop ;)

Episode 1 – The Origins

Cet épisode va vous montrer comment il est possible d’installer une application Jelix depuis une interface web tout aussi facilement qu’en ligne de commandes.

Le tour de force de cette vidéo est qu’elle démontre comment enchainer des « étapes » d’un wizard ; SANS ECRIRE UNE SEULE LIGNE DE CODE !

Les étapes, illustrées ici, sont fournies en « standard » par le Framework (hé oui mon bon monsieur), celles-ci sont :

  • Page d’accueil
  • Vérification des prérequis Jelix (+ ceux de votre application)
  • Configuration du service d’envoi de messages
  • Configuration de l’accès à votre base de données
  • Installation de l’application et de tous les modules liés
  • Page de Fin

Par conséquent on a juste à décrire dans le fichier de configuration du Wizard (wizard.ini.php) les étapes à enchainer, Jelix se charge du reste.

Mais attention : rien n’est figé dans l’enchainement de ces pages, vous pouvez les utilisez toutes … ou pas et dans l’ordre qui vous arrange !
Bien évidemment il y a quand même un minimum de bon sens à suivre ;)

Au cas où : la vidéo youtube est là

Episode 2 – HaveFnuBB

Le second épisode va vous montrer comment on peut personnaliser le wizard à sa sauce, pour ajouter aussi bien des étapes supplémentaires que changer le rendu graphique.

Les étapes supplémentaires sont :

  • La configuration du Nom du Forum et une courte description de celui ci.
  • La création d’un compte administrateur. Pour configurer le forum il faut bien un premier compte, donc le voilà ;)

A l’issue de l’installation du forum, on pourra tenter de refaire l’installation autant de fois qu’on le veut, afin de vérifier que … ce n’est pas possible ;)

Au cas où : la vidéo youtube est là

Conclusion :

Comme à l’accoutumé je ne saurai vous répéter encore et encore que le leitmotiv de Jelix c’est : faire simple et efficace!

Donc les pages des wizard sont on ne peut plus simple pour éviter de « perdre » l’utilisateur dans des formulaires à rallonge.

A présent vous pouvez vous lancer dans la création d’installeurs web efficaces !

Amusez vous bien !

notes :

Si vous avez des questions ou remarques n’hésitez pas à m’en faire part.

ScreenCast – Personnaliser la DebugBar Jelix

Dans ce nouvel épisode des « ScreenCast Jelix », celui ci va vous montrer comment mettre en place la Debug Barre, jouer avec, débogger avec, puis ajouter un plugin supplémentaire pour l’enrichir

La vidéo démarre là où on en était resté la fois précédente et continuera par l’ajout de la debug barre et finira par sa personnalisation.

Voici en images :

Si d’aventure vous ne parveniez pas à lire cette vidéo voici où la trouver et dans quel format :

Au cas où : la vidéo youtube est là