eZ Publish, WebDAV et import de contenus
Par Clochix le mercredi 16 avril 2008, 22:34 - Technoweb - Lien permanent
Suite de l'exploration de fonctionnalités un peu plus avancées d'eZ Publish avec ses interfaces avec WebDAV et OpenDocument.
WebDAV est une extension du protocole HTTP orientée vers la gestion de fichiers. Elle permet d'accéder à un système de fichiers distant à travers HTTP. eZ Publish fournit nativement une implémentation de webdav qui permet d'accéder aux contenus comme à une arborescence de fichiers. On peut ainsi facilement, par simple copier-coller dans un explorateur de fichier, créer des contenus fichiers, images, ou de n'importe quel type.
Mise en oeuvre
Elle est relativement simple : côté Apache, activer le support WebDAV,
et créer un hôte virtuel redirigeant toutes les requêtes vers le fichier
webdav.php situé à la racine du site. Côté eZ, il suffit, dans le
fichier webdav.ini.append.php de positionner le paramètre
EnableWebDAV à vrai et de préciser les siteaccess
accessibles par webdav dans SiteList. Pour plus de
détails, voir le manuel eZ. Il suffit ensuite de se connecter à l'hôte virtuel
défini pour voir une liste des siteaccess disponibles et naviguer dans
l'arborescence des contenus. Les droits d'accès sont les mêmes que pour une
utilisation par http classique, donc si vous essayez d'accéder à des contenus
protégés, votre client vous demandera de vous identifier avec un compte actif
pour le site.
Par défaut, tous les noeuds sont présentés comme des répertoires, sauf ceux dont un attribut est de type "image", "media" ou "file", qui sont affichés comme des fichiers. Ainsi, si un type de contenu possède un attribut de type image, il apparaîtra dans l'arborescence comme une image. Si le noeud contient plusieurs fichiers, seul le premier sera visible. Tout cela est bien sûr paramétrable.
Créer des contenus
Le fichier upload.ini.append.php permet de paramétrer les
actions à effectuer lorsqu'on colle ou déplace des fichier dans l'arborescence,
depuis un client webdav. En fonction du type MIME du fichier, on pourra créer
directement un contenu ou appeler un gestionnaire spécifique. Voici un exemple
de paramétrage:
[CreateSettings] MimeClassMap[] MimeClassMap[image]=image MimeClassMap[video/quicktime]=quicktime MimeClassMap[application/x-shockwave-flash]=flash DefaultClass=file
Ici, en fonction du type MIME, eZ créera des contenus de classe image, quicktime ou flash. S'il ne reconnaît pas le type, il créera par défaut un fichier.
On définit ensuite pour chaque classe son attribut qui contiendra le fichier, celui qui contiendra le nom du contenu et la façon dont ce nom sera déterminée:
[image_ClassSettings] FileAttribute=image NameAttribute=name NamePattern=<original_filename_base>
Ici, lors de la création d'une image, son nom, stocké dans l'attribut
name, sera le nom du fichier, et le fichier sera stocké dans
l'attribut image.
Mais eZ Publish permet d'aller plus loin, et d'associer certains type de
fichiers à des gestionnaires (handler) qui s'occuperont de créer le
contenu. Par exemple, toujours dans le fichier
upload.ini.append.php
MimeUploadHandlerMap[] MimeUploadHandlerMap[application/vnd.sun.xml.writer]=ezopenofficeupload
Ici, l'upload d'un fichier Open Document Text fera appel à la classe
ezopenofficeupload.
Pour créer un gestionnaire spécifique, il suffit de créer une classe
étendant eZContentUploadHandler et implémentant une méthode
handleFile.
Importer des articles.
eZ fournit une extension, eZODF, fournissant une interface avec le format Open Document Text, qui est la norme internationale en matière de documents contenant du texte formaté. Cette extension permet d'exporter des contenus au format ODT, mais aussi d'en importer, soit en les uploadant, soit en les collant via webdav.
L'import nécessite que les documents respectent un certain formalisme: ils doivent contenir des sections nommées. On définit dans un fichier de paramétrage de l'extension les types de contenus importables, et les liens entre leurs attributs et les sections du document ODT.
Exemple de fichier odf.ini.append.php (extrait)
[ODFImport] DefaultImportClass=article RegisteredClassArray[]=article RegisteredClassArray[]=folder [article] DefaultImportTitleAttribute=title DefaultImportBodyAttribute=body Attribute[title]=title Attribute[intro]=intro Attribute[body]=body Attribute[image]=image [folder] DefaultImportTitleAttribute=name DefaultImportBodyAttribute=description Attribute[name]=name Attribute[short_description]=short_description Attribute[description]=description
On autorise la création d'articles et de dossiers (folder). Quand on passe
un fichier au gestionnaire (par upload ou via webDAV), celui-ci essaie de
déterminer le type de contenu à créer en comparant les noms des sections du
fichier aux attributs définis dans la configuration. S'il ne trouve pas de
correspondance exacte, il créera par défaut un article et mettra le contenu du
fichier dans l'attribut body. Ici, un fichier contenant les
sections "name", "short_description" et "description" créera un dossier. On
peut de cette façon créer des contenus via un traitement de texte, en utilisant
des modèles pour respecter le formalisme des sections, avant de les importer
dans eZ Publish.
L'extension permet également l'import de documents au format propriétaire et fermé de Microsoft Word (.doc). Les documents sont dans ce cas convertis à la volée au format OpenDocument via une version d'Open Office tournant en tâche de fond sur le serveur. Je n'ai pas testé cette solution, et je pense qu'il est bien plus simple de créer des documents directement en odt plutôt que de multiplier le nombre de conversions entre le document original et sa version dans eZ. (dit autrement : word, ça pue, c'est pas libre !)
Commentaires
Bonjour,
Je dois faire un import de donnée (objets touristiques) dans ezpublish. Je précise que je débute totalement.
Les documents que je reçois sont au format Tourinfrance (fichiers xml conçus pour les objets touristiques), je peux transformer ces fichiers en documents xml pour ne garder que ce dont j'ai besoin. le fichier produit sera au format xml. donc ma question :
Est-il possible d'importer des fichier xml avec WebDAV ???
Je n'ai rien trouvé encore qui puisse m'aider dans ma tâche.
Merci pour la réponse.
A mon avis, le plus simple est d'utiliser (ou au minimum de s'inspirer d') une des extensions d'import de contenu dans eZ Publish depuis XML : http://ez.no/fr/developer/contribs/import_export. Passer par WebDAV a ici peu d'intérêt.
Merci pour la réponse.