91
F Filliettaz TECFA 02 2 002 1

Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

  • Upload
    feo

  • View
    43

  • Download
    3

Embed Size (px)

DESCRIPTION

Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ? Démo pratique de quelques aspects particuliers (portail). 1. Qu’est-ce que ?. Z Object Publishing Environment Advanced web application server framework - PowerPoint PPT Presentation

Citation preview

Page 1: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 1

Page 2: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 2

1. Qu’est-ce que c’est que ça ?

2. A quoi ça sert ?

3. Comment ça marche ?

4. Démo pratique de quelques aspects particuliers (portail)

Page 3: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 3

• Z Object Publishing Environment• Advanced web application server framework• Open source: il est possible de comprendre en

profondeur comment il fonctionne• Orienté objet. Les éléments publiés sur le web ne

sont pas des fichiers, mais des objets• Sécurisé• Multi-plate-forme: Windows, Unix, Mac

1. Qu’est-ce que ?

Page 4: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 13

• Possibilité d’interfaçage avec des systèmes externes, bases de données, systèmes RPC ou autres sites web.

• Possibilités infinies et très simples de faire croître un site. Les possibilités de Zope peuvent être largement étendues, grâce à la créativité de sa communauté.

• Avec un moteur de recherche relativement efficace

Page 5: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 14

1. Qu’est-ce que ? (suite)

• Interface basée sur le web: l’interface de management de Zope s’ouvre dans le navigateur

• Permet d’écrire des applications dans plusieurslangages de script: Python, Perl et le langage de Zope: DTML

• Gratuit• Une communauté très active et qualifiée

Page 6: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 15

2. A quoi sert ?

• Permet de construire des sites web dynamiques• Modulaires :

– séparation claire entre contenu, logique et présentation,– composants paramétrables et configurables,– permettant une unité de style du site,

– et une navigation uniforme, sensible au contexte, mise à jour

automatiquement.

Page 7: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 16

2. A quoi sert ?

• Ce qui facilite la gestion du style d'un site, puisque chaque module inclu dans les pages se réfère à la même CSS,

• permet une navigation uniforme dans tout le site, • une indexation automatique des pages, et • l'utilisation d'un outil de recherche très utile dans un

site d'une certaine importance.• Offre une interaction évoluée et des possibilités de

personnalisation pour chaque visiteur.

Page 8: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 17

3. Comment marche ?

• Installation• Premiers contacts• L’environnement de développement• L’acquisition• Le DTML par le menu

Page 9: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 18

3. Comment marche ?

• Installation• Premiers contacts• L’environnement de développement• L’acquisition• Le DTML par le menu

Page 10: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 19

Installation

• Télécharger Zope http://www.zope.org/Products/Zope

• Sous Windows, exécuter setup.exe• NT ou 2k: l'installer en tant que service

(manuel)• Pour entrer dans l’environnement de

développement, pointer le navigateur vers http://localhost:8080/manageA TECFA: http://tecfa.unige.ch:9080/manage

Page 11: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 20

Installation

• Se connecter en utilisant nom et mot de passe créés lors de l’installation.

• Créer un répertoire qui contiendra les éléments de votre site.

• Y copier index_html, standard_html_header et standard_html_footer de la racine.

Page 12: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 21

Installation des composants

• Depuis la page http://www.zope.org/Products, télécharger le composant.

• Le déziper • Placer les dossiers dans le répertoire où vous avez

installé Zope (par défaut WebServer), sous /lib/python/Products.

• Vérifier depuis le Control_panel de Zope, lien Product management, qu'il est bien installé.

• Si c'est le cas, il sera disponible dans le drop-down Select type to add .

Page 13: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 22

Page 14: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 23

Installation

• Précaution: faire régulièrement un back-up du fichier Data.fs, qui se trouve dans le dossier var.

Page 15: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 24

3. Comment marche ?

• Installation• Premiers contacts• L’environnement de développement• L’acquisition• Le DTML par le menu

Page 16: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 25

Premiers contacts

• Créer un utilisateur: cliquer sur le dossier add_user, puis sur le bouton Add une fois les champs renseignés

• Créer une page: le code HTML est contenu dans des objets. Il suffit d’un créer un de type DTML_document

• L’ID est essentiel, il permettra à Zope de référencer l’objet. Le titre apparaîtra dans le document, appelé par la méthode title_or_id.

• Cliquer sur Add pour l’ajouter au dossier courant

Page 17: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 26

• Entrer l’URL http://localhost:8080/ # id_du_fichier # (p.ex. ..:8080/toto) pour voir l’aspect d’un objet sommaire.

• Revenir à l’environnement de management, et cliquer sur l’objet. On devrait voir ceci:

<dtml-var standard_html_header><h2><dtml-var title_or_id></h2><p>This is the <dtml-var id> Document.</p><dtml-var standard_html_footer>

C’est le code par défaut d’un DTML_document.

Page 18: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 27

DTML Document / DTML Method

• Ces deux objets ont la même interface, et il est souvent difficile de savoir lequel utiliser.

• S'il s'agit de publier un contenu, utiliser DTML Document. S'il s'agit de manipuler ou d'appeler d'autres objets, utiliser DTML Method (presentation templates: définir des layouts séparément du contenu).

Page 19: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 28

<dtml-var >

• Toutes les balises du DTML commencent par <dtml-.

• <dtml-var permet d’insérer une variable.• id est le contenu de l’identifiant de l’objet• title_or_id est une méthode qui renvoie le titre

de l’objet s’il existe, sinon son id• standard_html_header et

standard_html_footer sont des objets qui seront inclus dans l’objet appelant.

Page 20: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 29

<dtml-var >

• L’instruction <dtml-var>permet d’inclure des variables, le résultat de l’appel d’une fonction et des objets. Elle ne se ferme pas.

• Elle a des attributs: P.ex. missing<dtml-var truc missing="il n'existe pas , ce truc">

• Voir les attributs dans DTML Reference, Appendice A de "Zope Book"

Page 21: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 30

Ecrire en HTML

• Il est évidemment possible d'écrire des pages HTML sans profiter du DTML. Zope jouera alors le rôle d'un serveur web statique.

• Il est aussi possible d'importer des pages HTML pour les convertir au format DTML. Dans le pop-up de Add, sélectionner Add DTML Document, dont le dernier élément est Browse. Choisir le fichier texte, lui donner un id, et cliquer Add.

Page 22: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 31

Importer des images

• Depuis la racine du site, ajouter un objet Image

• Renseignez id et title• Avec Parcourir chercher l’image • Cliquer sur Add.

L’objet apparaît désormais à la racine du site, et peut être utilisé dans toutes les pages avec la balise HTML <IMG SRC="id_de_image" > (p.ex <IMG SRC=" image " >).

Page 23: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 32

DTML sommairepetit cas pratique

Vous avez installé Zope pour permettre à vos collègues de publier des textes sur le web. Ils ignorent tout du HTML.

• Créez un dossier utilisateurs et intitulez-le comme il vous plaît. Ne sélectionnez aucune option.

• Puis dans ce dossier, créez un dossier par collègue (au moins 3 pour la beauté de l'exercice), sans cocher d'option.

Page 24: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 33

DTML sommaire (suite)

• Dans le dossier utilisateurs, créer une DTML Method (et non un DTML Document) appelé (id) index_html, et contenant le code suivant:

<dtml-var standard_html_header><dtml-in "objectValues(['Folder'])">

<A HREF=<dtml-var id>><dtml-var title></A><BR></dtml_in> <dtml-var standard_html_footer>

Page 25: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 34

DTML sommaire (suite)

• Pour améliorer l'apparence du site, éditer la méthode index_html du dossier utilisateurs et introduire le code suivant:

<dtml-var standard_html_header><TABLE><TR><TD WIDTH="30%">

<dtml-var DocumentList></TD></TR></TABLE><dtml-var standard_html_footer>

Page 26: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 35

DTML sommaire (suite)

• Toujours dans le dossier utilisateurs créer une DTML Method appelée FolderList contenant le code suivant:

<P><A HREF="<dtml-var "PARENTS[1].absolute_url()">">Retour</A><BR></P><dtml-in "objectValues(['Folder'])">

<A HREF="<dtml-var id>"><dtml-var title></A><BR></dtml-in>

Page 27: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 36

DTML sommaire (suite)

• et une DTML Method appelée DocumentList contenant le code suivant:

<dtml-in "objectValues(['DTML Document'])"> <H1><dtml-var title_or_id></H1>

<dtml-var "_['sequence-item']"></dtml-in>

• Puis créer un DTML Document dans le dossier utilisateurs appelé presentation contenant un texte comme celui-ci:Créez vos pages en insérant des "DTML Documents" et des "Folder" dans votre dossier personnel.

Page 28: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 37

DTML sommaire (suite)

• Enfin, permettez à chaque utilisateur de gérer ses propres pages. Pour chaque utilisateur, se placer dans le dossier /acl_users et ajouter un utilisateur doté des propriétés suivantes:

id identifiant ou nom de l'utilisateurPassword mot de passe assigné à cet utilisateurDomains laisser videRoles ne sélectionner aucun rôle

Page 29: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 38

DTML sommaire (fin)

• Puis dans le dossier de chaque utilisateur, cliquer sur Security et cliquer sur le lien Local role; sélectionner le nom de l'utilisateur dans la liste de gauche et les rôles Manager et Owner dans la liste de droite, puis cliquer sur Add.

• Maintenant chaque utilisateur peut utiliser l'URL http://localhost:8080/utilisateurs/sonNom/manage pour créer et modifier ses propres pages. Il n'a accès qu'à sa partie personnelle, et ne peut pas modifier votre travail. Toutes les pages peuvent être vues par tout le monde.

Page 30: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 39

3. Comment marche ?

• Installation• Premiers contacts• L’environnement de développement• L’acquisition• Le DTML par le menu

Page 31: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 40

L'environnement de développementManipulations élémentaires

• Modifier un objet: cliquer sur son nom.• Ajouter un objet: dans un dossier: cliquer sur son

lien dans le cadre de gauche, puis sélectionner dans la liste déroulant "Select object to add" le type d'objet à ajouter. Lui donner ensuite un id (deux objets ne peuvent pas avoir le même id dans un même dossier) et un nom (pas obligatoire). Cliquer sur Add.

• Détruire un objet: sur l'onglet "Contents" du dossier parent cocher la case de l'objet, puis sur "Delete".

Page 32: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 41

L'environnement de développementManipulations élémentaires

• Renommer un objet: pour changer son identifiant sans en modifier le titre, ses propriétés en général, le contenu: le sélectionner, puis cliquer sur le bouton Rename.

• Changer le titre d'un objet: aller dans l'onglet "Properties" de cet objet.

• Copier/coller

Page 33: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 42

L'environnement de développementManipulations élémentaires

• Editer le contenu d'un objet: cliquer deux fois sur le nom de l'objet, ou aller à l'ongler "Edit". Toujours cliquer sur "Save Changes" pour que les changements deviennent effectifs

• Editer les propriétés d'un objet: aller à l'onglet "Properties". Attention: les propriétés sont des attributs au sens de la programmation objet; pour un dossier, elles ne peuvent avoir le même nom qu'un objet contenu dans ce dossier,

Page 34: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 43

L'environnement de développementManipulations élémentaires

et il n'est pas possible dans ce dossier de créer un objet du même nom qu'un propriété existante.

• Les propriétés sont gérées automatiquement par Zope : en ajoutant des propriétés à un objet, on autorise les utilisateurs à accéder à ces propriétés et/ou à les modifier, s'ils ont les permissions requises.

• Les types de propriétés correspondent dans la pratique aux types de champs des formulaires HTML.

Page 35: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 44

L'environnement de développementManipulations élémentaires

• Annulation: undoZope intègre un mécanisme d'annulation très efficace. Les objets de Zope sont stockés dans une base de données, dont l'architecture est conçue de manière à garder un historique de toute modification qui y est apportée.

• Cette faculté d'annulation est gérée dossier par dossier, ce qui permet d'avoir toujours une vision des actions relatives au dossier courant.

Page 36: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 45

L'environnement de développementManipulations élémentaires

• Version: permet de modifier une partie du site sans que ces modifications soient accessibles aux autres utilisateurs. Permet de tester les changements avant de les rendre publiques.

• Il est possible de travailler à plusieurs sur une version.

• Dès qu'un objet a été modifié à partir d'une version, il est vérouillé en modification hors de cette version, et ne peut être modifié que dans cette version. Aucun chevauchement n'est possible avec d'autres modifications.

Page 37: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 46

L'environnement de développementEspace de noms

• Espace de nomsZope transforme une URL en appel d'une méthode d'un objet ZODB. Il transmet son namespace à la méthode qui permettra à l'objet de se rendre.

• Il s'agit d'une liste de variables qui permettent à l'objet d'interagir avec son environnement. Il peut contenir:– les attributs et les méthodes définis par l'objet lui-même– les attributs et les méthodes de ses conteneurs récupérés

par l'acquisition

Page 38: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 47

L'environnement de développement Espace de noms

– une variable spéciale, REQUEST, contenant des informations spécifiques à la requête HTTP

– un objet RESPONSE permettant de renvoyer des en-têtes HTTP ou des codes de réponse au navigateur.

– les attributs et méthodes définis au sein de Zope et accessibles par tous les objets.

• La variable REQUEST contient les données de la requête HTTP. C'est la variable la plus utilisée et le meilleur moyen de récupérer des entrées de l'utilisateur, pour les traiter dynamiquement.

Page 39: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 48

L'environnement de développement Espace de noms

• Par example:<FORM ACTION="fomulaire"><TABLE> <TR> <TH>Texte :</TH> <TD><INPUT TYPE="text" NAME="texte"></TD> </TR> <TR>

<TH>Sélection :</TH><TD><INPUT TYPE="checkbox" NAME="select" VALUE="1">

<BR><INPUT TYPE="checkbox" NAME="select" VALUE="2"> <BR><INPUT TYPE="checkbox" NAME="select" VALUE="3"> </TD></TR> <TABLE> <INPUT TYPE="submit" VALUE="Test"></FORM>

Page 40: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 49

L'environnement de développement Espace de noms

• La validation du formulaire provoque un appel de l'URL formulaire. Et donc de l'objet en question. Dans l'objet formulaire, suivant les données entrées par l'utilisateur, les expressions python suivantes peuvent être vraies :

REQUEST.text == "Mon texte" REQUEST.select == "3"

Page 41: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 50

L'environnement de développement Espace de noms

• Par exemple , pour récupérer les valeurs obtenues dans le formulaire précédent, écrire le DTML Document suivant, auquel vous donnez l'id formulaire:

<dtml-var standard_html_header>

<dtml-var expr="_.int(REQUEST.select) + 5"><BR><dtml-var expr="REQUEST.texte">

<dtml-var standard_html_footer>

Page 42: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 51

L'environnement de développement Espace de noms

• Pour voir le contenu de REQUEST, écrire un DTML Document avec ce simple contenu:

<dtml-var standard_html_header>

<dtml-var REQUEST> <dtml-var standard_html_footer>

Page 43: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 52

L'environnement de développementUtilisateurs, rôles et permissions

• Les droits ne sont pas réglés au niveau des utilisateurs, mais à travers des rôles. A chaque utilisateur est affecté un ou plusieurs rôles.

• Trois rôles particuliers:– Administrateur (Manager) dispose de tous les droits– Propriétaire d'un objet (Owner). Permet de déléguer

l'administration de certains objets à leur propriétaire. Il n'y a qu'un seul propriétaire par objet.

– Anonyme (anonymus user), correspondant à un utilisateur pas encore identifié.

Page 44: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 53

L'environnement de développementUtilisateurs, rôles et permissions

• D'autres rôles peuvent être créés.– Lors de la création ou de la modification des

utilisateurs, le responsable peut affecter les rôles qu'il souhaite à chacun d'eux.

– La création de nouveaux rôles se fait dans l'onglet Security des objets concernés: local roles

– Ce rôle apparaît dans tous les sous-objets s'il s'agit d'un objet conteneur. Il n'est pas possible de retirer ce rôle dans les sous-objets.

Page 45: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 54

L'environnement de développementUtilisateurs, rôles et permissions

– Il est possible et très pratique de créer des rôles locaux pour des objets qui ne sont pas des conteneurs (DTML Document en particulier)

• Modification des permissionsDans l'onglet Security de l'objet.

Page 46: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 55

3. Comment marche ?

• Installation• Premiers contacts• L’environnement de développement• L’acquisition• Le DTML par le menu

Page 47: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 56

Acquisition

• L'acquisition est la technologie qui permet le passage des comportements et contenus dynamiques d'un objet Zope à un autre.

• Le concept de l'acquisition est simple: :1.Des objets sont placés à l'intérieur d'autres objets.

2.Ces objets acquièrent le contenu et les comportements de leur conteneur (idem pour ce conteneur etc.)..

Page 48: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 57

Acquisition

• La puissance de l'acquisition réside dans ce partage automatique entre contenu et conteneur.

• En créant Documents et Folders on ne construit pas simplement un site, mais on construit une structure d'information.

Page 49: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 58

Acquisition

• En plaçant un Document dans un Folder, on crée un petit outil de partage d'information entre le Document et le Folder.

• Dans Zope, un Document p.ex. a accès au contenu et au services de tous ses conteneurs. Si un des Folder peut envoyer des mails, le Document le pourra aussi sans que cela apparaisse dans son code..

Page 50: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 59

Acquisition

• Ainsi les objets acquièrent et fournissent des services.

• L'acquisition va dans les deux sens. La réutilisation des services est simple, puisqu'il n'y a rien à faire de spécial pour qu'ils soient disponibles pour d'autres objets.

• Un Document dans un Folder acquière les comportements du Folder.

• Quid pour un Document qui est au centre d'une "poupée russe" faite de différents Folder?. De qui va-t-il acquérir les comportements?

Page 51: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 60

Acquisition

• L'acquisition agit sur toute la hiérarchie. Si nous avons un Document au centre de trois Folder - /Utilisateurs/Nooteboom/Romans/Rituels, le Document Rituels acquière les comportements du Folder Romans, qui acquière les comportements du Folder Nooteboom, et ainsi de suite.

• Chaque objet acquière les comportements d'un objet, ou d'une collection d'objets. Ils peuvent être nombreux, ce qui signifie qu'il bénéficiera d'une panoplie très adaptée.

Page 52: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 61

Acquisition

• Comportements dynamiquesL'acquisition permet que les comportements soient distribués partout dans Zope. Quand on ajoute un objet, il n'y a pas besoin de spécifier dans son code tous ses comportements, mais seulement ceux qui lui sont propres. Ce qui signifie qu'il est possible de changer le comportement d'un objet en le changeant de place dans la hiérarchie.

Page 53: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 62

Acquisition

• Exercice: construire une hiérarchie d'au-moins 3 niveaux (Folders imbriqués) contenant chacun quelques documents. Ecrire un index_html unique, qui dès qu'on pointe vers un Folder en affichera le contenu.

Page 54: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 63

3. Comment marche ?

• Installation• Premiers contacts• L’environnement de développement• L’acquisition• Le DTML par le menu

Page 55: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 64

DTML

• Langage à balise pour modèle de document qui peut:

– Afficher le contenu d'objets Zope– Exécuter des méthodes sur des objet Zope– Afficher des attributs d'objets– Effectuer des tests sur ces variables– Parcourir des boucles à partir de ces

variables– Gérer les exceptions

Page 56: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 65

DTML

• Le code DTML est interprété par– DTML Document– DTML Method

• Le DTML est interprété dans le corps du document, jamais dans ses propriétés (du code écrit dans la propriété title ne sera pas interprété)

• Tous les traitements sont effectués sur le serveur.

Page 57: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 66

Balises du DTML

Balises ouvrantes Balises fermantes

<dtml-var>

<dtml-in> </dtml-in>

<dtml-tree> </dtml-tree>

<dtml-if> <dtml-else><dtml-elif><dtml-endif></dtml-if>

<dtml-unless> </dtml unless>

Page 58: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 67

Balises du DTML

Balises ouvrantes Balises fermantes

<dtml-with> </dtml-with>

<dtml-let> </dtml-let>

<dtml-call> </dtml-call>

<dtml-try> <dtml-except><dtml-else><dtml-finally></dtml-try>

<dtml-raise> </dtml raise>

Page 59: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 68

Balises du DTML

Balises ouvrantes Balises fermantes

<dtml-comment> </dtml-comment>

<dtml-return>

<dtml-sendmail </dtml-sendmail>

<dtml-mime> </dtml-mime>

Page 60: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 69

Attributs name et expr de <dtml-var

• <dtml-var name="title"> et <dtml-var title> sont équivalents.

• <dtml-var "title"> et<dtml-var expr="title"> sont équivalents.

• Il est fortement conseillé de n'utiliser implicitement que l'attribut name et toujours préciser expr= lors de l'utilisation de l'attribut expr.

• <dtml-var> est doté de nombreux attributs qui permettent de spécifier la manière dont les valeurs sont affichées.

Page 61: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 70

Attributs name et expr de <dtml-var

• Avec l'attribut name on ne peut spécifier que des noms de variables (objets, attributs, méthodes).

• L'attribut expr permet d'insérer le contenu d'une expression Python, ou effectuer des calculs simples:<dtml-var expr="24 * 60">

• expr est indispensable pour exécuter des méthodes de l'espace de noms. Pour afficher le titre ou l'identifiant du parent: <dtml-var expr="PARENTS[0].title_or_id ()">

Page 62: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 71

<dtml-if >

• Si l'attribut name fait référence à une propriété ou un document inexistant, sa valeur est considérée comme fausse. C'est la façon la plus pratique de vérifier l'existence d'un document ou d'une propriété. Dans le cas de expr, si un attribut auquel il fait référence n'existe pas, il y a erreur.

Page 63: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 72

<dtml-call> <dtml-return>

• Pour appeler une méthode ou un document sans qu'il se "rende" (pour effectuer un traitement sur le serveur p.ex), on utilise <dtml-call>, qui n'accepte que expr et var comme attributs.

• Pour obtenir en retour une valeur précise, on utilise <dtml-return>, qui accepte les attributs expr et var.<dtml-if condition> <dtml-return "'Oui'"><dtml-else> <dtml-return "'Non'"></dtml-if>

• Attention à la syntaxe des chaînes! Il est interdit d'utiliser des guillemets dans les expressions. Utiliser '…'.

Page 64: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 73

<dtml-call> <dtml-return>

• <dtml-return> peut retourner n'importe quel type de données. Pour renvoyer l'objet magasin : <dtml-return "magasin">

Page 65: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 74

<dtml-in >

• Permet l'itération dans un Folder, dans les propriétés d'un objet etc..

• Le contenu d'un bloc entre les tags in est une sorte de template qui s'applique une fois à chaque item d'une séquence.

Page 66: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 75

<dtml-in propriétés >

• Pour parcourir des listes. • Exemple: dans un Folder magasin créer un DTML Document vide appelé catalogue. Lui affecter une propriété articles de type lines.

• Entrer 5 ou 6 articles.• Dans le corps du DTML Document entrer ce code:<dtml-var standard_html_header><dtml-in articles> <dtml-var sequence-item><BR></dtml-in><dtml-var standard_html_footer>

Page 67: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 76

<dtml-in>

• Cliquer sur l'onglet View.

• <dtml-in > accepte les attributs name et expr.Elle renvoie une erreur si la propriété n'existe pas.

• Pour vérifier qu'il y a un ou des article(s) il suffit d'écrire.<dtml-in articles> <dtml-var sequence-item><BR><dtml-else> <H2>Aucun article</H2></dtml-in>

Page 68: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 77

<dtml-in liste d'objets >

• Il faut stocker les articles dans des objets Zope.

– Créer un dossier articles dans le dossier courant– Puis 1 DTML Document par article. Leur donner un

ID du type Art_01 etc..Supprimer le contenu par défaut.

– Dans la propriété title indiquer le nom de l'article.

Page 69: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 78

<dtml-in liste d'objets >

• Les objets Folder possèdent une méthode objectsIds() qui renvoie la liste des objets qu'ils contiennent (sous forme d'une liste de chaînes)

• <dtml-in "articles.objectIds()"> <dtml-var sequence-item><BR></dtml-in>

• Il est possible de spécifier quels objets sont recherchés:<dtml-in "articles.objectIds(['DTML Document'])"> <dtml-var sequence-item><BR></dtml-in>

Page 70: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 79

<dtml-in liste d'objets >

• Les objets Folder possèdent une méthode objectsValues() qui renvoie la liste des objets qu'ils contiennent (sous forme d'une liste):

• <dtml-in "articles.objectValues(['DTML Document'])"> <dtml-var title><BR></dtml-in>

• Pour obtenir aussi la référence:<dtml-in "articles.objectValues(['DTML Document'])"> <dtml-var id>%nbsp; <dtml-var title><BR></dtml-in>

Page 71: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 80

<dtml-in liste d'objets >

• Pour obtenir en plus le contenu des objets (description qu'il faut entrer dans le corps du DTML Document de chaque article):

<dtml-in "articles.objectValues(['DTML Document'])"> <dtml-var id>%nbsp;<dtml-var title>%nbsp;<dtml-var sequence-item><BR></dtml-in>

Page 72: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 81

<dtml-in liste d'objets >

• Parcourir des objets pour obtenir leur contenu? Dans le dossier magasin créer une DTML Method appelée index_html et y inclure ce code:

<dtml-var standard_html_header><dtml-in "articles.objectValues(['DTML Document'])"> <H1><dtml-var title></H1><dtml-var sequence-item></dtml-in><dtml-var standard_html_footer>

Page 73: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 82

<dtml-in liste d'objets >

• Se placer dans le dossier articles et cliquer sur l'onglet View. Tous les articles apparaîssent les uns à la suite des autres, grâce à l'acquisition.

• Pour détecter le début ou la fin d'une séquence:sequence-start et sequence-end

Page 74: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 83

<dtml-in liste d'objets >

• <dtml.in "articles.objectValues(['DTML Document'])" <dtml-if sequence-start> <TABLE BORDER="1"> <TR><TH>Article</TH></TR> </dtml-if><TR><TD><dtml-var title></TD></TR> <dtml-if sequence-end> </TABLE> </dtml-if><dtml-else> Aucun article</dtml-in>

Page 75: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 84

<dtml-in liste d'objets >

• Pour obtenir l'index de l'élément, utiliser la variable sequence-index– <TR><TD><dtml-var sequence-index> : <dtml-var title></TD></TR>

• Pour parcourir des dictionnaires (liste de valeurs associées à des clefs, comme {'ART_01':'Avion' . 'ART_02' : 'Bateau'} ) on utilise sequence-key pour obtenir le premier indice, et sequence-item pour obtenir le second.

Page 76: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 85

<dtml-in liste d'objets >• <dtml-in "articles.objecItems(['DTML Document'])">

<dtml-if sequence-start> <TABLE BORDER="1"> <TR><TH>Référence</TH> <TH>Article</TH> </TR> </dtml-if><TR> <TD><dtml-var sequence-key></TD>(ou <dtml-var id>) <TD><dtml-var title></TD></TR><dtml-if sequence-end> </TABLE></dtml-if><dtml-else> Aucun article</dtml-in>

Page 77: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 86

<dtml-in liste d'objets >• Exercice: ajouter quelques DTML Documents d'articles, en

ajoutant à certains (pas à tous) une propriété prix de type integer, et ajouter dans le document catalogue une colonne au tableau mentionnant le prix ou affichant "N/A" si aucun prix n'a été défini.

Page 78: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 87

<dtml-in liste d'objets >sort

• Pour trier les objets par ordre de prix croissant: <dtml-in "articles.objecItems(['DTML Document'])" sort="prix">

• Par ordre de prix décroissant: <dtml-in "articles.objecItems(['DTML Document'])" sort="prix" reverse>

Page 79: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 88

<dtml-tree >

• Permet de facilement construire dynamiquement un arbre en HTML pour décrire une structure hiérarchique.

<dtml-var standard_html_header> <dtml-tree> <dtml-var getId></dtml-tree></dtml-var standard_html_footer>

Page 80: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 89

Page Template

• Outil de génération de pages web• Pour que designers et programmeurs puissent travailler

facilement ensemble• Le designer peut faire évoluer le design sans se

préoccuper du contenu des pages• Page Template génère des pages HTML ou XML, pas des

pages dynamiques (apanage de DTML).

Page 81: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 90

Page Template création

• Depuis le add drop-down choisir Page Template, lui donner un id.

• Pour les détails, voir Zope Book p.67ss et 135ss. • Un excellent article décrit en détail le processus:

Page 82: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 91

CMF un portail avec ZOPE

• Exemple: Zopera.org, • Liens:

– http://www.zopera.org/Members/zopera/doc/04_zope_cmf (CMF, CMF francisés, liens cassés…)

– Création d'un skin : http://www.zopera.org/Members/sdebruyne/sdebruyne/CrationdunSkin?portal_skin=Printable

– Docs : http://cmf.zope.org/doc

Page 83: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 92

CMF un portail avec ZOPE

• Dans un nouveau Folder (il est ainsi possible d'avoir plusieurs configurations différentes):

• Ajouter l'objet CMFSite, qui permet d'administrer le site.• Remplir les champs• Il y a 4 pages:

– Home Page– Member Page– News Page– Search Page

Page 84: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 93

CMF un portail avec ZOPE

• Chaque membre peut changer, pour lui, le look de l'espace qu'il peut atteindre. Le site possède un skin par défaut, et les différents skin qu'il met à disposition.

• Pour changer de skin:– Dans CMFSite/portal_skin -> onglet "content"– Ajouter un nouveau Folder (p.ex MonSkin)– Pour changer les couleurs p.ex aller dans

portal_skin/Nouvelle/stylesheet_properties– Sous "Customize" sélectionner p.ex MonSkin et cliquer sur

Customize– "Customizer" votre skin.

Page 85: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 94

CMF un portail avec ZOPE

• Pour mettre ce nouveau skin à disposition des membres, aller à l'ongler Porperties de portal_skin et ajouter :– Name: My Skin – Layers: MySkin, custom, nouvelle, content, generic, control

• Le skin est maintenant ajouté au Préférences.

Page 86: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 95

CMF un portail avec ZOPE

• Pour des changements plus consistants, il va falloir changer le Layout, c'est-à-dire intervenir dans le code des DTML Methods, le plus difficile étant de trouver la bonne.

• Les Folders de portal_skin contiennent toutes les méthodes nécessaires pour les pages CMF. Elles sont sous portal_skin/ onglet Content/generic.

• Pour se faire la main, changer le contenu de standard_html_header, index_html et stabdard_html_footer. Le site entier changera.

Page 87: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 96

CMF un portail avec ZOPE

• c

Page 88: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 97

CMF un portail avec ZOPE

• Pour des changements plus consistants, il va falloir changer le Layout, c'est-à-dire intervenir dans le code des DTML Methods, le plus difficile étant de trouver la bonne.

• Les Folders de portal_skin contiennent toutes les méthodes nécessaires pour les pages CMF. Elles sont sous portal_skin/ onglet Content/generic.

• Pour se faire la main, changer le contenu de standard_html_header, index_html et stabdard_html_footer. Le site entier changera.

Page 89: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 98

CMF un portail avec ZOPE

• Pour des changements plus consistants, il va falloir changer le Layout, c'est-à-dire intervenir dans le code des DTML Methods, le plus difficile étant de trouver la bonne.

• Les Folders de portal_skin contiennent toutes les méthodes nécessaires pour les pages CMF. Elles sont sous portal_skin/ onglet Content/generic.

• Pour se faire la main, changer le contenu de standard_html_header, index_html et stabdard_html_footer. Le site entier changera.

Page 90: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 99

Ressources

• Liens– Le livre Zope : http://www.zope.org/Members/michel/ZB

– CMF : http://cmf.zope.org/doc/introduction.txt

• Sites – http://www.zope.org/– http://cmf.zope.org/– http://www.zopera.org/

Page 91: Qu’est-ce que c’est que ça ? A quoi ça sert ? Comment ça marche ?

F Filliettaz TECFA 02 2002 100

Ressources

• Autres liens intéressants:– E-books : http://www.beehive.de/zope