AutoIt-CMS

Auteur
Nibau Rui
Date
Catégories
Informatique
Tags
, , ,

La publication d'un site web peut vite devenir fastidieuse lorsque son serveur ne gère pas les langages dynamiques tel le PHP. Cet article explique, en partie, comment utiliser le logiciel AutoIt pour automatiser la création de pages html statiques.

Ce projet est maintenant abandonné et il n'est plus possible de le télécharger. Cette page est là uniquement à titre d'information. Néanmoins, si vous souhaitez jeter un oeil au code, un petite demande par e-mail et je vous ferais parvenir une archive zip du script.

Titre
AutoIt-CMS
Auteurs
Rui Nibau
Date
OS
Windows
Version
1.0
Statut
stable, abandonné
Licence
Creative Commons By-Nc-Sa 2.0

Présentation

Il existe deux types de publication sur internet : le statique et le dynamique. La publication statique, la plus simple et la plus ancienne, se résume à placer des pages html classiques sur un serveur. la publication dynamique consiste elle à créer la page à la volée lorsque l'internaute la visualise, en allant chercher le contenu dans une base de données.

Chacune des deux méthodes à ses avantages et ses inconvénients. La publication dynamique nécessite le plus souvent un logiciel dédié que l'on nomme CMS, alors que le plus simple des éditeurs de texte suffit à créer des pages web statiques. Si un CMS facilite grandement les mises à jour des pages, il nécessite aussi que le serveur gère un langage dynamique pour créer les pages (le PHP par exemple), ce qui n'est pas toujours le cas, la preuve ici même:-)(1). Et le principal problème de la publication statique vient de cette mise à jour des pages, fastidieuse dés qu'elle implique un grand nombre de documents.

D'où l'idée d'un logiciel qui pourrait faciliter le processus de maintenance de pages web statiques. Il existe certainement des produits commerciaux ou d'entreprises capables d'effectuer ce travail. Et, alors que la plupart des applications destinées à la publication sur internet se tournent vers le dynamique, certains logiciels tout public comme Thingamablog continuent à adopter l'approche statique. Malgré cela, je n'ai rien trouvé qui puisse répondre aux besoins de gestion de ce site. Heureusement, j'avais sous la main un langage de programmation, AutoIt, capable de résoudre ces problèmes.

Cet article n'est pas un tutoriel du logiciel AutoIt, et pour comprendre le sens les lignes de code ci-dessous, il vous faudra sans doute consulter certaines pages de l'aide du programme. J'espère néanmoins qu'il pourra faire office d'introduction à travers une utilisation pratique: la création d'un script permettant de générer des pages web.

Qu'est-ce que AutoIt ?

AutoIt est un langage de programmation gratuit diffusé en open source sous licence GPL. Il permet d'écrire des scripts d'automatisation de tâches sous Windows. Les exemples d'utilisation sont multiples, y compris pour des non informaticiens. En voici deux assez simples : KnSpell, pour utiliser le correcteur orthographique Aspell avec Keynote et KnCal, qui permet la création d'un calendrier toujours pour Keynote. Mais que veut dire « automatisation » ? Simplement le fait de faire travailler la machine à votre place:-).

Reprenons l'exemple de KnSpell. Pour corriger « à la main » un texte tapé dans Keynote avec Aspell, on doit :

  1. copier ce texte dans un fichier simple (donc le créer),
  2. envoyer ce fichier à Aspell,
  3. récupérer la version corrigée du fichier et
  4. remplacer le texte dans Keynote par cette version.

Plus que fastidieux comme processus ! Et bien KnSpell lance toutes ces étapes automatiquement.

Le script AutoIt-CMS est un peu (beaucoup) plus complexe mais procède du même principe : exécuter des commandes que l'on peut faire à la main mais qui deviennent vite rébarbatives et fatiguantes, sans compter les erreurs qui ne manquent pas de voir le jour à force de répétitions. Sa fonction ? Générer les pages web statiques de ce site.

Cahier des charges

Avant de se lancer dans la programmation, il fallait établir un cahier des charges, lister les fonctions que le script se devait de remplir. Dans le cas de la création des pages de ce site :

Le résultat : un peu plus de 2 600 lignes de codes que j'ai nommé, faute de mieux, « AutoIt-CMS »(2).

AutoIt-CMS

Capture d'écran d'AutoIt-CMS

Capture d'écran d'AutoIt-CMS, un script qui gère la création automatique des pages web de ce site.

Je n'ai pas (encore) diffusé le code source d'AutoIt-CMS simplement parce que (1) il n'est presque pas commenté et donc seul un utilisateur régulier d'AutoIt pourrait en comprendre le sens, et (2) parce que je ne l'ai pas vraiment développé dans l'optique qu'il soit utilisé par d'autres. Il s'agissait en premier lieu de répondre à un besoin urgent pour la publication de ce site, besoin auquel aucun logiciel disponible sur internet n'avait su répondre. De nombreuses fonctionnalités sont donc inextricablement liées à la structure du site ; pour qu'il soit utilisable par d'autres, il faudra que je modifie cela.

Néanmoins, les principes généraux sont eux explicables et applicables ailleurs. Je ne détaillerai pas ici toutes les fonctions du programme parce que se serait fastidieux et contre-productif. Je vais plutôt m'attarder sur l'une d'entre elles(3).

Fonctionnement : génération de page

Une fonction fondamentale d'AutoIt-CMS est de récupérer le contenu d'un fichier et de le plaquer sur un modèle de page web. C'est ainsi que sont générées les pages article du site, dont celle-ci.

Article au format xml

Le fichier plat avec le contenu de l'article doit pouvoir fournir des informations aisément récupérables telles que le nom du fichier html, le titre de l'article, la date de publication, le chapeau et le texte en lui-même. En utilisant le format xml, un fichier article, disons article1.xml, pourrait se présenter comme suit :

<?xml version="1.0" encoding="UTF-8" ?>
<article>
  <addr>url_article1</addr>
  <titre>titre_article1</titre>
  <date>20 janvier 2004</date>
  <intro>chapo_article1.</intro>
  <txt>
    texte_article1
  </txt>
</article>

Modèle de page web

Il faut ensuite définir la structure de la page web à l'aide d'un modèle de présentation qui sera commun à tous les articles. On sait cependant qu'il y aura un contenu différent pour chaque article, contenu dont il faudra identifier les composantes (titre, chapeau, date, etc.) par des marqueurs.

La syntaxe importe peu : pour ma part, j'ai choisi une syntaxe du type <$nom$>. Au final, le modèle de page xhtml pourra ressembler à ceci(4) :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta http-equiv="Content-language" content="fr" />
    <title&gt <$title$> | Titre du Site</title>
  </head>
  <body>
    <h1><$titre$></h1>
    <p><strong><$chapo$></strong></p>
    <$texte$>
    <p><$date$></p>
  </body>
</html>

Le code

Voyons maintenant comment le script AutoIt va aller chercher le contenu de ce premier article pour le plaquer sur le modèle de page web afin de créer le fichier article1.html.

Le code tel que rédigé ci-dessous présuppose que tous les fichiers utilisés, article1.xml, template et le script en lui-même soient placés dans un même répertoire. La page web y sera aussi créée.

Récupérer les informations sur l'article

Première étape : récupérer les données de l'article. Nous utiliserons pour cela une fonction créée pour l'occasion, Untag, qui permet de parser un fichier xml.

Contenu indisponible.

Le processus est alors le suivant : on ouvre le fichier article1.xml, on place son contenu dans une variable et on analyse cette variable avec la fonction Untag pour récupérer le titre, la date, le chapo et le texte de l'article :

Contenu indisponible.

Plaquer le contenu de l'article sur le modèle xhtml

Maintenant que nous avons le contenu de l'article dans des variables identifiées ($titre, $texte, etc.), il nous faut plaquer ces informations sur le modèle de page xhtml. Pour cela, on place ce modèle de page dans une variable $template et on y remplace les marqueurs du titre, du texte, etc. par les valeurs récupérés de l'article :

Contenu indisponible.

Créer le fichier article1.html

Pour finir, il ne nous reste plus qu'à créer le fichier xhtml de notre article en y plaçant le modèle de page modifié avec les données de l'article. Nous utilisons pour cela la fonction FileWriteLine en lui demandant de transférer le contenu de la variable $template dans un fichier $url.html, soit « article1.html ».

Contenu indisponible.

Le script final

Voilà donc à quoi pourrait ressembler un script AutoIt capable de prendre le contenu d'un article dans un fichier xml, de le plaquer sur un modèle de page web et de générer le fichier xhtml correspondant :

Vous pouvez télécharger une version exécutable de cet exemple. AutoIt permet en effet de compiler les scripts en petits programmes indépendants.

Dézipper l'archive dans un dossier quelconque, et double-cliquer sur le fichier autoit-cms-exemple.exe. Au bout d'une seconde, vous verrez apparaître un fichier article1.html, qui aura été construit à partir des données du fichier article1.xml sur la base du fichier template, tous deux présents dans l'archive.

Par contre, pour travailler sur les sources du script (autoit-cms-exemple.au3) et développer vos propres scripts, il faudra installer une version beta d'AutoIt 3.

Pour aller plus loin

Je le répète, cet exemple est extrêmement simplifié pour clarifier le propos. Écrit ainsi, il n'est utile que pour publier un article à la fois. Le but du jeu est ensuite de développer des fonctions pour :

AutoIt-CMS n'est sans doute pas l'outil idéal pour débuter la publication de pages web statiques. Il nécessite l'apprentissage d'un langage de programmation et une connaissance de la syntaxe html (et xhtml). Mais pour ceux et celles que le PHP rebute ou qui n'ont pas les moyens de l'utiliser et qui maîtrisent un tant soit peu le HTML, AutoIt peut rendre de grands services en offrant une automatisation de la création des pages, une gestion - même complexe - de l'architecture d'un site et une maîtrise totale du code publié.

Historique

0402
Script de gestion des brèves
0412
Autoit-CMS proprement dit
  • Gestion de différents type de documents (articles, news), de comentaires, de flux RSS.
  • Conversion de syntaxe wiki (txt2html)

Références

En relation

NIBAU, Rui. Syntaxe wiki : du texte au xhtml. Omacronides,

Logiciels utilisés

Autres logiciels de publication web statique