Plone, plate-forme Open Source de développement de sites

publicité
Sommaire
FI 3/2004
plate-forme Open Source
de développement de
sites communautaires
[email protected], Domaine IT
Introduction
Si ces derniers temps nous avons
connu un séisme de force 5, celui qui
se prépare dans le domaine des systèmes
de gestion de contenu (ou CMS) Open
Source s’annonce tout aussi fort. Pour
preuve:
❚ les publications du Domaine IT
qui sont sous SPIP (Système de
Publication Pour Internet);
❚ nos quelques 160 sites éditoriaux
actuellement sous Jahia v.3 vont
progressivement passer sous Jahia
v.4 qui va apporter la gestion multilingue et un circuit de validation ou
workflow des contenus éditoriaux;
❚ le site actualites exploité par le Service de presse & information utilise
php-Nuke;
❚ et un nouveau candidat pour les
sites communautaires et bases de
connaissances qui fait beaucoup
parler de lui, Zope/CMF, ou plus
exactement Python/Zope/CMF/
Plone qui fait l’objet de cet article.
1
Plone – plate-forme Open
Source de développement de
sites communautaires
Francis Lapique
2
DIT-info
◗Redhat@epfl
◗Nouveaux collaborateurs au DIT
3
Un monde parfait adldap ou la
synchronisation entre annuaires
LDAP pour Active Directory
Laurent Kling
16 Concours de sécurité informatique
16 Séminaire FEMLAB
17 Impression numérique couleur
directement depuis votre poste
de travail
Roland Chabloz
21 Persistance des objets Java avec
Hibernate
Laurent Boatto
23 Les nouveautés d’Outlook 2003
Jacqueline Frey
24 Programme des cours
Pour les lecteurs qui désireraient
très rapidement avoir une idée du
produit PLONE, je les encourage à
visualiser les vidéos disponibles sur le
site www.plone.fr.
suite en page 11
27 Un roboceptionniste à l’accueil
du DIT
Dora Derauze
28 Attention virus!
Christian Raemy
28 Concours de la meilleure nouvelle
fi 3 – 30 mars 2004 – page 1
Plone, plate-forme Open Source de développement de sites communautaires
suite de la première page
Schéma de principe
Une première remarque, le choix de l’Open Source pour
l’ensemble des concepts et outils visant à résoudre les problèmes de production de contenu des sites Web reste toujours le
bon. La diversité et la richesse des frameworks Open Source
écrits en Java/PHP/Python est la seule approche qui couvre
l’ensemble des fonctionnalités essentielles d’un système de
gestion de contenu qui sont:
❚ la gestion des utilisateurs et de leurs droits;
❚ la création et l’édition de contenu;
❚ le stockage du contenu;
❚ les métadonnées (ensemble de propriétés décrivant le
contenu);
❚ la gestion de la qualité de l’information (workflow);
❚ l’indexation et la recherche;
❚ la gestion de l’interface utilisateur;
❚ la syndication (regroupement d’informations provenant
de différentes sources).
Une deuxième, pour compléter la première. Tous ces
outils ou solutions sont-ils en concurrence directe? Oui
et non. Oui, car tous font de la gestion et production de
contenu. Non, si vous prenez Jahia, c’est un CMS qui cible
des portails d’information et non celui de communautés en
ligne. Zope c’est l’inverse. Au milieu, je vous l’accorde c’est
assez confus.
Une troisième, il est impossible dans le cadre d’un article
de couvrir tous les aspects d’un framework tel que Python/
Zope/CMF, nous irons à l’essentiel avec tout ce que cette
démarche sous-entend comme frustration pour le lecteur
comme pour l’auteur.
La gestion de contenu avec ZOPE et le
CMF
Architecture technique vue d’avion
Commençons par le commencement. Qu’est-ce que
Zope? En une seule phrase, comme l’indiquent O. Deckmyn et P-J. Grizel dans leur livre Zope (2e édition): Zope
est un environnement de publications d’objets sur le Web. Zope
à l’image du langage de programmation Python sur lequel
il est bâti à 90% est orienté objet. Insistons, avec Zope, on
ne publie pas des pages Web mais des objets pouvant être
assemblés automatiquement à partir de composants dont le
comportement, les données et l’apparence sont configurables
par le concepteur du site. La persistance de ces objets est assurée par une base objet, la ZODB (Zope Object Data Base).
L’ensemble est stocké dans un fichier data.fs. Ce fichier
contient non seulement les versions des objets utilisés, mais
un historique des modifications apportées, ce qui permet
de revenir à un état précédent. La base ZODB est transactionnelle, ce qui signifie que tout traitement entamé est soit
terminé avec succès soit annulé. Chaque objet possède un
contexte qui lui est propre. Les objets Zope les plus courants
appartiennent aux classes Folder, Document et Method. Ils
sont à prendre dans le cadre de la programmation objet. Un
objet est défini par:
❚ son état (l’ensemble des valeurs de ses attributs);
❚ son comportement (l’ensemble des méthodes qui lui sont
applicables).
La plupart des objets Zope possèdent une méthode qui
permet leur représentation en HTML. Pour un Folder, cette
méthode affiche un document particulier à l’intérieur du Folder. La publication de ces objets est gérée par un composant
de Zope nommé Zpublisher.
La fig. 1 montre l’architecture de la plate-forme Zope.
Fig. 1
Les requêtes HTTP parviennent à Zserver (un composant qui comme son nom l’indique joue le rôle de serveur
Web; Zope peut aussi être placé derrière un serveur classique
Apache). Elles sont transformées en requêtes interprétables
par Zpublisher. Comment invoquer des méthodes d’objets
sur le serveur Zope?
Avec Apache, l’URL localhost/web/test/mapage.html revient à accèder au fichier mapage.html situé dans le répertoire
DocumentRoot/web/test/ de la machine localhost.
Sous Zope: localhost:8080/web/test/mapage.html signifie
publier l’objet mapage.html contenu dans l’objet test contenu
dans l’objet web contenu dans la racine de la base ZODB.
Site collaboratif sous ZOPE/CMF
Un site collaboratif est un site sur lequel des internautes
fournissent le contenu et le mettent en valeur pour d’autres
à travers 4 grandes étapes:
❚ Identification: un membre s’identifie et accède à un espace
privé au sein du site.
❚ Composition: le membre-rédacteur rédige un article, une
brève. Ce document restera privé tant que son auteur ne
déclarera pas explicitement qu’il veut le partager avec la
communauté.
❚ Modération et validation: le rédacteur décide de publier
son contenu. Suivant le type de données et les règles en
vigueur sur le site, l’information est soit directement mise
en ligne, soit sujette à l’approbation d’un modérateur ou
relecteur.
❚ Publication: le contenu publié est classé et indexé en
fonction de son type, du workflow associé et de ses métadonnées.
fi 3 – 30 mars 2004 – page 11
Plone, plate-forme Open Source de développement de sites communautaires
Products/Zope. Démarrez Zope et vérifiez son bon fonctionnement en vous connectant à l’url: localhost:8080 ou dans
son environnement de développement localhost:8080/manage. Vous trouverez sur le site Zope The Zope Book (2.6
Edition) qui fait environ 500 pages en format PDF. Vous
pouvez également vous procurer en librairie le livre Zope
2ème édition déjà cité, très bon ouvrage qui couvre l’essentiel
de Zope, du langage Python et donne des exemples de mise
en oeuvre trés didactiques.
CMF
Le CMF (Content Management Framework) offre un
ensemble de services de base pour la gestion de contenu
comme la gestion:
❚ d’un espace personnel: le contenu n’est pas situé à l’endroit où il est affiché;
❚ du processus de création de contenu par les membres:
dans son espace privé le membre ajoute du contenu en
selectionnant le type de contenu;
❚ du workflow de publications: le concepteur du site peut
déterminer tous les états possibles, les transitions, les
acteurs;
❚ de l’indexation et du moteur de recherche: tous les contenus créés sont indexés dans un moteur de recherche
intégré à Zope;
❚ de l’interface utilisateur: séparation du contenu, de la
logique et de la présentation sur un concept de Skins;
❚ des métadonnées: on peut associer à tous les contenus du
site un ensemble de métadonnées définies par le standard
Dublin Core (titre, description, sujet,...);
❚ des versions: chaque rédacteur peut revenir à une version
précédente de son contenu;
❚ de la syndication: le CMF permet d’exposer n’importe
quel contenu de votre site sous forme RSS XML.
Et Plone dans tout cela? C’est l’outil de gestion de contenu (CMS) construit au dessus du CMF. C’est la simplicité
d’utilisation et la robustesse de Plone qui ont permis à Zope
d’avoir le succès qu’il a actuellement. Le nombre de sites
Plone dans le monde ne cesse de croître.
Installation et configuration
PYTHON/ZOPE
L’installation de Zope est très simple et ne doit prendre
que quelques minutes (ça fait rêver quand une suite de
produits équivalents d’un grand éditeur va vous prendre au
bas mot 8 à 10 jours et sans garantie de résultat!). A l’heure
actuelle la version 2.7 est officiellement sortie, vous pouvez
télécharger sa version binaire pour Windows (.exe), Linux
(.rpm ou .tar.gz) et Mac OS X à l’adresse: www.zope.org/
fi 3 – 30 mars 2004 – page 12
CMF est une extension de Zope livrée sous forme de
Produits. Pour l’heure vous trouverez une archive de sa version 1.4.2 à l’adresse: cmf.zope.org/download. Cette archive
comprend les sous-répertoires: CMFCore, CMFDefault
CMFTopic, CMFCalendar et DCWorkflow. Copiez tous
ces répertoires sous celui de Zope: la_où_vous avez_zope/lib/
python/Products/. Redémarrez Zope et vérifiez au moyen du
menu Control_Panel->Product Management de l’interface
de management de Zope (localhost:8080/manage ou ZMI)
la présence de l’infrastructure CMF.
Quelques mots sur ces composants CMF:
❚ CMFCore fournit l’infrastructure de base du framework
❚ CMFDefault fournit une implémentation d’un site de
type portail simple
❚ CMFTopic permet de gérer des objets de type Topic qui
encapsulent des requêtes prédéfinies par l’utilisateur vers
le moteur d’indexation
❚ CMFCalendar permet de gérer des objets de type Event
et de les afficher au sein du portail via un calendrier
❚ DCWorkflow comme son nom l’indique est une solution de mise en œuvre de workflow pour les applications
CMF.
PLONE
Dernière étape: l’installation de Plone. Téléchargez le produit dans sa version 2.0 à l’adresse: plone.org/downloads/.
Le produit Plone, couche au-dessus de CMF, fournit un
applicatif utilisable Out of the Box par l’utilisateur final. Attention pour une utilisation du support des langues vous avez
besoin des produits: i18n, Localizer et TranslationService. Si
vous rencontrez des problèmes avec l’internationalisation de
Plone, n’installez pas le produit TranslationService. Redémarrez Zope pour vérifier que tout se passe bien.
Présentation des composants et service
d’un site PLONE
La gestion d’un site Plone a deux aspects:
❚ technique à travers l’interface localhost:8080/monsite/
manage où monsite est l’id (voir plus bas) du site
❚ gestion de contenu avec comme interface localhost:
8080/monsite
Créer un site: PLONE
Rien de plus simple, lancez l’interface de management
Zope, allez dans le menu déroulant à droite, choisissez Plone
Site. Vous obtenez un formulaire.
Plone, plate-forme Open Source de développement de sites communautaires
Ce formulaire vous invite à donner
l’identifiant de l’objet, pour nous ce sera
monsite, le titre donné au site, l’endroit de
stockage de la base des utilisateurs du site
(dans l’arborescence de notre site ou dans le
dossier acl_users à la racine du site Zope) et
une description sommaire.
Cliquez le bouton Add et vous êtes automatiquement dirigé sur la page d’accueil. Le
site est prêt à l’emploi. Pour un paramétrage
avancé cliquez le lien plone setup.
Vue technique: services du site
En ouvrant notre site en mode manage
sous un compte administrateur vous pouvez
voir le contenu de l’objet représentant le site
Plone. Vous y trouverez des composants d’aide
à la mise en œuvre du site:
❚ MailHost pour envoyer des e-mails;
❚ le dossier Members. Chaque membre va se
voir attribuer un dossier, plus exactement
un conteneur de type Portal Folder ou
Plone Folder qui lui sera propre;
❚ acl_users objet User Folder contenant les
utilisateurs déclarés avec leur rôle;
❚ l’objet content_type_registery, définition
de la correspondance entre les types MIME
et les types de contenu;
❚ l’objet
cookie_authentication
pour configurer les paramètres
d’authentification dans le navigateur de
l’utilisateur;
et des composants d’infrastructure de services:
❚ portal_catalog pour l’emploi du moteur
d’indexation
❚ portal_actions présente les actions
disponibles pour un utilisateur sur un
document ou un dossier donné
❚ portal_discussion permet de configurer la
possibilité de discuter chaque document
du portail (mini-forums)
❚ portal_membership pour gérer le mécanisme d’authentification des membres
❚ portal_memberdata permet de définir les
propriétés que l’on souhaite conserver
pour chaque utilisateur
❚ portal_metadata fournit l’interface de
gestion des métadonnées
❚ portal_properties pour y définir des fiches
de propriétés
❚ portal_skins fournit les services de
l’interface graphique du site. Un/une
skin est un ensemble de mises en page
graphiques pour respecter la sacro-sainte
séparation contenu/design/logique que
TOUT gestionnaire de contenu se doit
de respecter.
fi 3 – 30 mars 2004 – page 13
Plone, plate-forme Open Source de développement de sites communautaires
L’en-tête contient un logo, un petit
formulaire de recherche, et des onglets de
navigation. Les côtés contiennent plusieurs
boîtes à outils. A gauche, une boîte de navigation représente une arborescence comme
dans un explorateur Windows. A droite, la
boîte des publications récentes et un calendrier qui indique les événements du mois en
cours et la date du jour encadrée d’un petit
rectangle rouge. Dans la partie centrale, le
contenu du document que vous visualisez.
En haut à droite quelques actions rapides:
envoyer le lien par e-mail, imprimer la page,
ajouter aux favoris.
Pour ajouter du contenu, cliquez my
folder dans la barre d’outils à côté d’admin.
Une liste déroulante propose tous les types de
contenus que vous avez le droit de rajouter.
Pour publier cliquez l’onglet state et choisir publish. Suivant la règle du site, l’article est
publié directement ou soumis au modérateur.
La date d’activation permet de choisir la date
à partir de laquelle l’article sera visible des
autres utilisateurs. La date d’expiration permet quant à elle de retirer un article à partir
d’une certaine date. Il est possible d’autoriser
d’autres personnes à travailler sur vos documents en cliquant sur l’onglet sharing. Pour ce
faire, ajoutez un membre existant et attribuez
lui un rôle pour le document. Pour modifier il
faut vérifier que son état est autre que publish.
Vous pouvez modifier l’ordre d’apparition de
vos articles.
Personnalisation
Vous avez deux types de personnalisation,
une personnalisation graphique (l’apparence
du site) et une autre fonctionnelle. Dans le
cadre de cet article nous ne pouvons qu’en
décrire les grandes lignes.
❚ portal_types, vous définissez pour chaque type de contenu, les actions
par lesquelles l’utilisateur interagit avec le contenu en fonction de ses
droits.
❚ portal_workflow aide à définir le cycle de vie du contenu
❚ portal_syndication gère la syndication du contenu à travers le site
❚ portal_undo permet l’annulation des actions effectuées sur le contenu
❚ portal_form permet de gérer les formulaires d’édition associés à vos types
de contenu.
❚ portal__calendar permet la gestion de contenu de type Event, et l’accès
au contenu du site sur des critères de date
Vue utilisateur
Sur la figure précédente, on distingue 4 parties:
1. l’en-tête
2. les côtés
3. la partie centrale
4. le pied de page
fi 3 – 30 mars 2004 – page 14
Personnalisation graphique
L’architecture du CMF met en œuvre un
mécanisme de Zope nommé skins qui permet
de modifier l’apparence du site en choisissant
une méthode de présentation. Une skin est
composée de méthodes DTML ou ZPT et
de scripts Python. Le DTML est un langage
à balises pour modèle de document qui est en
train de s’effacer au profit de ZPT ou Zope
Page Template. Le grand enjeu de ZPT est
de proposer une approche pour améliorer la
collaboration entre les différents intervenants
techniques du projet et plus particulièrement
les graphistes et les développeurs. Le principe
général de ZPT repose sur une astuce simple:
les règles de transformation sont portées par
les attributs des balises HTML. Exemple: Si
la maquette graphique dispose de la phrase
suivante:
Plone, plate-forme Open Source de développement de sites communautaires
<h1>Le titre du chapitre</h1>
l’intégration dans une page template se
fera en écrivant:
<h1 tal:content="here/title_or_
id">Le titre du chapitre</h1>
En dehors de Zope, le navigateur
affiche la chaîne «Le titre du chapitre»;
dans Zope, title_or_id renvoie le titre
du document s’il en possède ou son
identifiant dans le cas contraire et le substitue au titre statique. L’expression tal:
content="here/title_or_id" est un attribut
de TAL (Template Attribute Language) qui
complète HTML en fournissant des attributs permettant d’effectuer des actions
dynamiques. La variable here correspond
au contexte de la page en cours.
Voici un exemple plus complet pour
afficher les attributs des objets contenus
dans un dossier:
<table>
<tr>
<th>Id </th>
<th> Titre </th>
<th> Dernière modification </th>
</tr>
<tr tal:repeat="Item here/objectValues".
<td tal:content="item/getId"> MonObjet </td>
<td tal:content="item/title"> MonObjet à
moi</td>
<td tal:content="item/bobobase_modification_
time"> 27/02/2004 </td>
</tr>
</table>
Un exemple pratique
Comment modifier le haut de page comprenant le logo?
Cette opération est très simple:
1. vous êtes dans la ZMI (localhost:8080/monsite/manage)
suivez le chemin portal_skin->plone_images;
2. cherchez et sélectionnez dans la liste logo.jpg;
3. cliquez Customize pour créer une version personnalisée
de cette image;
4. cliquez le bouton Browse pour aller chercher votre image
puis Upload.
Vous avez créé dans le dossier custom un nouvel objet
logo.jpg qui est en tête de liste. Vous pouvez faire des choses
plus complexes en modifiant le contenu du répertoire portal_skins->plone_styles qui contient toutes les feuilles de
styles ou portal_skins->plone_templates pour les templates
(header, footer,...).
Personnalisation fonctionnelle
Passons aussi brièvement sur la personnalisation fonctionnelle. C’est à dire la personnalisation du comportement du
CMF et de la manière dont sont stockées et gérées les données
qui forment le contenu du site. Vous pouvez personnaliser
le workflow en cliquant sur l’outil portal_workflow comme
les types de contenu simple tels que Document, News Item,
Image, File, Link, Favorite. Nous laisserons de côté, dans le
cadre de cet article, le workflow.
Le composant portal_type vous offre plusieurs solutions
pour définir vos propres types de contenu. De la plus simple
à la plus complexe
1. personnaliser directement un type défaut;
2. recopier un type défaut et s’en servir de base;
3. définir un type à partir d’une extension de type Zclass
(une Zclass est un produit Zope qu’il est possible de
créer de rien ou d’étendre d’une classe existante par
héritage);
4. définir un type à partir d’une extension de type Produit
Python.
Pour modifier, par exemple le News Item, sélectionnez
sous portal_types l’objet News Item (Actualites). La figure
suivante vous donne une image de cette interface. Si vous
voulez ouvrir cet objet à la discussion, cochez la case Allow
Discussion? Cliquez ensuite sur l’onglet Actions pour découvrir les actions associées au type. L’action View est associée
à l’action newsitem_view et State au programme python
object and portal.portal_workflow.getTransitionsFor
(object, object.getParentNode()). Terminer la personnalisation en vous reportant au template de visualisation ou
d’édition.
Mise en production et montée en
charge
Zope est un serveur d’applications disposant d’un serveur
HTTP interne, mais comme toujours il est vivement conseillé
de lui adjoindre un serveur HTTP pour laisser Zope jouer
simplement son rôle de serveur d’applications. Dans le cas
d’Apache comme serveur Web frontal, modifier le fichier
httpd.conf pour faire intervenir les mod_proxy et rewrite.
Utiliser les gestionnaires de cache de Zope: RAM Cache
manager pour l’organisation du CPU et HTTP Accelerated
Cache Manager pour l’optimisation de la bande passante.
Pour les très gros sites (montée en charge) et pour les sites
critiques vous pouvez aller vers des solutions clusters. Il faut
jeter un coup d’œil sur ZEO (Zope Entreprise Object) qui
permet de construire des clusters de serveurs Zope.
fi 3 – 30 mars 2004 – page 15
Plone, plate-forme Open Source de développement de sites communautaires
Conclusion
Développé par la société Digital Creations, ZOPE est commercialisé
jusqu’en novembre 1998, date à laquelle cette société décide de placer son
application en open source. Et depuis, la diffusion de Zope ne fait qu’augmenter, en partie grâce au succès remporté par Plone. L’énorme force de Zope
c’est le langage Python, orienté objet très facile d’approche et la pléthore de
composants prêts à l’emploi (authentifier les utilisateurs avec LDAP, gérer un
caddy de e-commerce, mettre en ligne un sondage,...). Pour la suite prendre
contact avec le signataire de l’article pour aller plus loin,...
Modélisation multiphysique
Inscription souhaitée
www.comsol.fr/activities/.
Références
1.
2.
3.
4.
5.
6.
Séminaire
FEMLAB
www.zope.org/
www.zope.org/Products/
cmf.zope.org/
www.plone.org/
www.python.org/
www.zopezen.org/
Communautés en Europe
1. Allemagne: www.zope.de
2. Zope en France: www.zopera.org
3. Plone en France: www.plonefr.org
Livres
1. Learning Python, Second Edition by David Ascher (Author), Mark
Lutz (Author)
2. Python Cookbook by Alex Martelli (Editor), David Ascher (Editor)
3. Zope, Olivier Deckmyn, Pierre-Julien Grizel
4. Les Cahiers du programmeur Zope: Premier site collaboratif avec
Zope/CM - Kamon Ayeva ■
Failles Web, cryptographie, stéganographie, reverse engineering, failles applicatives et d’autres défis sont au programme
Concours de sécurité
informatique
Organisé par 7 étudiants de l’ESIEA (Ecole
Supérieure d’Informatique, d’Electronique et
l’Automatique - France)
Venez tester, améliorer et comparer vos
connaissances en sécurité informatique et
remportez de nombreux lots !
Renseignements, inscriptions:
[email protected]
fi 3 – 30 mars 2004 – page 16
à
l’adresse:
7 avril 2004, 10h30
salle de conférence du DIT
EPFL-Ecublens
Bâtiment MA - 1015 Lausanne
Résumé du séminaire
❚ introduction et résolution d’un problème couplé, non-linéaire (multiphysique)
❚ méthode de résolution, structure de
FEMLAB, modification des EDP
❚ FEMLAB dans l’environnement Matlab
❚ illustrations sur d’autres exemples, en
fonction de l’intérêt de l’auditoire:
◗changement de phase: fusion d’un
bloc de glace
◗modèles de pile à combustible 2D et
3D
◗cristal photonique, divers guide
d’ondes, calculs d’impédances
◗frittage de poudre par micro-ondes
◗réservoir pressurisé avec éléments de
coques
◗piezoélectricité
◗écoulement diphasique
◗…
Les sujets sont adaptés selon l’auditoire: n’hésitez pas à préciser vos centres
d’intérêt lors de votre inscription.
Vous êtes également invités à nous
soumettre votre problème (géométrie,
conditions limites et équations à résoudre)
que nous résoudrons avant ou pendant le
séminaire. Merci de nous l’envoyer par email à l’adresse suivante: [email protected].
Une introduction à FEMLAB sous
forme de démonstrations animées est
donnée sur www.comsol.fr/showroom/.
Téléchargement