Date de publication: le jeudi 24 novembre 2011 à 08h49
Dernière modification: par Pascal BOYER le jeudi 24 novembre 2011 à 16h53
Table des matières
- WebDAV
- Configuration
WebDAV is an abbreviation for "Web-based Distributed Authoring and Versioning" (published as an open standard under RFC 2518). WebDAV is a set of extensions to the HTTP protocol which allows users to collaboratively edit and manage files on a web server. This is achieved by making use of a WebDAV compatible client / application. For example, it is possible to use recent versions of KDE's Konqueror or Microsoft's Internet Explorer. Using a WebDAV compatible client, the user connects to the server and is able to browse and manage files in a similar way as with a network share or an FTP server. In other words, what this protocol does is that it makes it possible to browse, create, remove, upload, download, rename, etc. files and directories on a web server. One of the most important advantages of this technology is that it uses port 80 for network traffic. This means that if you are able to surf the site from your workstation, you can also use WebDAV to administer it. It does not require firewall reconfiguration.
WebDAV est l'abréviation de Web-based Distributed Authoring and Versioning (publié en tant que standard ouvert sous le
RFC 2518
). WebDAV constitue un jeu d'extensions du protocole HTTP permettant aux utilisateurs d'éditer et de gérer les fichiers d'un site web de manière collaborative. Cette gestion est réalisée par l'entremise d'un client ou d'une application compatible WebDAV. Il est par exemple possible d'utiliser, sous Linux, une version récente du navigateur libre Konqueror et Internet Explorer sous Windows. Avec ce type d'application, l'utilisateur se connecte au serveur puis parcourt l'arborescence des fichiers qu'il peut alors gérer, tout ceci exactement comme il le ferait avec un partage réseau ou un client FTP. En d'autres termes, ce protocole rend le parcourt, la création, la suppression, le téléchargement ascendant/descendant, le renommage, etc. de fichiers et de répertoires possibles sur un serveur web. L'un des avantages les plus importants de cette technologie réside dans le fait qu'elle utilise le port 80 pour le trafic réseau ce qui signifie que si vous pouvez, depuis votre station de travail, naviguer sur le site alors vous pouvez également utiliser WebDAV pour l'administrer. Qui plus est, aucune reconfiguration du firewall ne sera nécessaire.
eZ Publish and WebDAV / eZ Publish et WebDAV
From version 3.2 and up, eZ Publish provides a built in WebDAV server. This implementation allows users to communicate with eZ Publish using a WebDAV compatible client. Once connected, it is possible to browse and manage the node tree of a site. The tree will be displayed as if it were a filesystem (as directories and files).
Depuis la version 3.2, eZ Publish implémente un serveur WebDAV qui autorise les utilisateurs à communiquer avec eZ Publish via un client compatible WebDAV. Une fois connecté, il devient possible de parcourir et gérer l'arborescence de nœuds du site, l'arbre étant représenté comme s'il s'agissait d'un système de fichiers (répertoires et fichiers).
When a user connects to the eZ Publish WebDAV server for the first time, the system will display a list of the siteaccesses that have been made available for WebDAV. This list can be configured using the "SiteList[]" directive under "[SiteSettings]" in a configuration override for "site.ini". Please note that the system does not ask for a username/password combination at this stage. In other words, anyone with network access will be able to see the names of the available siteaccesses. The following screenshot shows what the user will see if there are two available siteaccesses, "example" and "plain_user".
Lorsqu'un utilisateur se connecte au serveur WebDAV d'eZ Publish pour la première fois, le système affiche la liste des siteaccess accessibles par WebDAV. Cette liste est configurée grâce au tableau SiteList[] de la section [SiteSettings] d'une surcharge du fichier de configuration site.ini. Veuillez noter que le système ne demande pas, à ce stade, d'identifiant et de mot de passe. En clair, quiconque ayant accès au réseau sera en mesure de voir les noms de ces siteaccess. La capture d'écran ci-dessous illustre ce que l'utilisateur voit lorsque deux siteaccess sont accessibles: example et plain_user.
WebDAV - Virtual top folder
WebDAV - Dossier racine virtuel
When a siteaccess is chosen, the system will attempt to authenticate the user by asking for a username/password combination. The next screenshot shows this.
Lorsqu'un siteaccess est sélectionné, le système essaye d'authentifier l'utilisateur en lui demandant, comme le montre cette capture d'écran, un nom d'utilisateur et un mot de passe:
WebDAV - Login
WebDAV - Se connecter
The provided user name and password must belong to a valid eZ Publish user that exists for the selected siteaccess. Furthermore, the user must have sufficient privileges in order to be able to see the contents of the node tree. The following screenshot shows a WebDAV client displaying the contents of the root node of an eZ Publish siteaccess called "plain_user".
Le nom d'utilisateur et le mot de passe fournis doivent être ceux d'un utilisateur eZ Publish existant pour le siteaccess choisi. L'utilisateur doit de plus disposer des droits nécessaires afin de pouvoir visualiser l’arborescence des nœuds. La capture d'écran ci-après montre un client WebDAV présentant le contenu du nœud racine du siteaccess plain_user.
WebDAV - Top level nodes
WebDAV - Nœuds racine
As the screenshot indicates, the user will be able to browse and manage the contents of the "Content" and "Media" top level nodes. The next screenshot shows an example of what the user will see after doing some exploration of the node structure of the "Content" top level node.
Comme le montre la capture d'écran ci-dessus, l'utilisateur pourra parcourir et gérer les contenus des nœuds racine Content et Media. La capture d'écran ci-après illustre ce que voit l'utilisateur après avoir navigué dans l'arborescence du nœud racine Content.
WebDAV - Content node tree
WebDAV - Arborescence des nœuds
Browsing and downloading / Parcourir et télécharger
The default behavior is that all nodes are displayed as directories. The reason for this is because in eZ Publish any object can be placed under any other object by the way of nodes. Displaying the nodes as directories makes it possible to explore the structure of the node tree. However, not all nodes are displayed as directories.
Le comportement par défaut consiste à afficher tous les nœuds comme des répertoires puisque dans eZ Publish tout objet peut être potentiellement placé sous n'importe quel autre objet. Afficher les nœuds sous la forme de répertoires permet donc d'explorer toutes l'arborescence. Cependant, tous les nœuds ne sont pas affichés comme des répertoires.
Nodes that reference objects containing datatypes that store files will be displayed as files instead of directories. This means that for example nodes that make use of the image, media or the file datatype will be displayed as files. When downloaded, eZ Publish will send the file that is contained in the attribute which is represented by a datatype capable of storing a file. If several attributes are represented by such datatypes, it is the contents of the first attribute that will be used.
En effet, les nœuds référençant des objets contenant des datatypes stockant des fichiers seront affichés comme des fichiers et non comme des répertoires. Ceci signifie que, par exemple, des nœuds utilisant des datatypes image, media ou file seront représentés comme des fichiers. Lorsqu'il est téléchargé, eZ Publish envoie le fichier contenu par l'attribut représenté par un datatype capable de stocker un fichier. Si plusieurs attributs sont représentés par de tels dataypes alors c'est le contenu du premier attribut qui sera utilisé.
The "FolderClasses[]" directive in "webdav.ini" can be used to configure which types of nodes that should be shown as directories in the WebDAV client. The default configuration assures that nodes referencing folder objects are always displayed as directories. Adding a class that makes use of a datatype capable of storing a file will result in an override of the behavior described in the previous paragraph. In other words, this setting makes it possible to display different types of nodes as directories even if they contain files.
Le tableau FolderClasses[] du fichier webdav.ini sert à configurer les types de nœuds à afficher comme des répertoires dans les clients WebDAV. La configuration par défaut permet aux nœuds référençant des objets dossier d'être toujours représentés en tant que répertoires. Ajouter une classe utilisant un datatype capable de stocker un fichier aura pour conséquence de surcharger le comportement décrit dans le précédent paragraphe. En d'autres termes, ce tableau permet d'afficher différents types de nœuds comme des répertoires même lorsqu'ils contiennent des fichiers.
Uploading / Uploader
Any type of file can be uploaded to the system. Files will be stored using instances of the file class. In other words, every time a file is uploaded, eZ Publish will create a file object where the file attribute will contain the uploaded data. In addition, a node will be created at the location where the file was uploaded in the tree. This is the default behavior. However, not all file types will be created as file objects.
N'importe quel type de fichier peut être téléchargé vers le système qui les stockera dans des instances de la classe file. Donc, chaque fois qu'un fichier est téléchargé, eZ Publish crée un objet file dont l'attribut file contient le fichier téléchargé. Par ailleurs, un nœud sera créé à l'emplacement du téléchargement du fichier dans l'arborescence. Bien que ceci corresponde au comportement par défaut, tous les types de fichiers ne seront pas créés en tant qu'objets file.
It is possible to configure the system so that it creates different kinds of objects based on the type of the uploaded file. For example, the default configuration makes sure that uploaded images are created as image objects. This behavior is controlled by mapping MIME types to classes. The mappings can be configured using the "MimeClassMap[]" directive under "CreateSettings" in a configuration override for "upload.ini". The "DefaultClass" directive determines which class that should be used if there is no suitable mapping. This is usually set to "file", which means that unrecognized file types will be created as file objects. The following example shows the default mappings.
Il est possible de configurer le système afin qu'il crée différentes sortes d'objets en fonction du type de fichier téléchargé. La configuration par défaut s'assure, par exemple, que les images téléchargées créeront des objets image. Ce comportement est contrôlé en faisant correspondre les types MIME à des classes, cette correspondance étant définie par le tableau MimeClassMap[] de la section CreateSettings d'une surcharge du fichier de configuration upload.ini. Le paramètre DefaultClass, qui détermine la classe utilisée lorsqu'aucune correspondance ne convient, a couramment pour valeur file ce qui signifie que tout ficher non reconnu créera un objet file. Les lignes suivantes sont les correspondances par défaut:
MimeClassMap[] MimeClassMap[image]=image MimeClassMap[video/quicktime]=quicktime MimeClassMap[video/x-msvideo]=windows_media MimeClassMap[video/vnd.rn-realvideo]=real_video MimeClassMap[application/vnd.rn-realmedia]=real_video MimeClassMap[application/x-shockwave-flash]=flash
Each entry in the "MimeClassMap[]" array must be further specified using a block that reveals details about the class that is being mapped to. The blocks must contain the following information:
Chaque entrée du tableau MimeClassMap[] doit être précisée par un bloc détaillant la classe avec laquelle réaliser la correspondance. Le bloc doit contenir les informations suivantes:
-
The identifier of the target class (appended with "_ClassSettings").
L'identifiant de la classe cible (terminé par _ClassSettings).
-
The class attribute identifier which will get the file data.
L'identifiant de l'attribut de classe qui devra contenir le fichier
-
The class attribute identifier which will get the name.
L'identifiant de l'attribut de classe qui devra contenir le nom du fichier
-
A pattern that defines the name of the object.
Un motif définissant le nom de l'objet.
The following example shows the default class map block for images.
Voici l'exemple du bloc de correspondance de classe par défaut pour les images:
[image_ClassSettings] FileAttribute=image NameAttribute=name NamePattern=<original_filename_base>
The example above will tell eZ Publish that when an image is uploaded, the actual file data should be put into an attribute identified by the string "image". The name of the image should be stored using an attribute called "name" (as before, it is the identifier of the attribute that is used). The "NamePattern" tells the system about how it should generate the name for uploaded images. It may contain plain text and special tags enclosed by angle brackets ("<" and ">"). The following table reveals the tags that can be used.
L'exemple ci-dessus informe eZ Publish que lorsqu'une image est téléchargée, le fichier image doit être placé dans un attribut identifié par la chaîne de caractère image. Le nom de l'image sera stocké dans l'attribut nommé name (là encore, il s'agit de l'identifiant de l'attribut utilisé). Le paramètre NamePattern indique au système comment générer le nom de l'image téléchargée. Il peut contenir du texte plain text et des balises spéciales placées entre crochets ("<" et ">"). Le tableau ci-dessous présente les balises qu'il est possible d'utiliser:
|
Tag Balise | Description |
|---|---|
| original_filename |
The name of the uploaded file, like it was on the local machine (for example "test.jpg". Le nom du fichier téléchargé tel qu'il est sur la machine locale (par exemple test.jpg). |
| original_filename_base |
The name of the uploaded file without an extension (for example "test"). Le nom, sans l'extension, du fichier téléchargé (par exemple test). |
| original_filename_suffix |
The extension of the uploaded file (for example ".jpg"). L'extension du fichier téléchargé (par exemple test.jpg). |
| mime_type |
The MIME type of the uploaded file (for example "image/jpeg"). Le type MIME du fichier téléchargé (par exemple image/jpeg). |
Custom upload handling / Gestion personnalisée du téléchargement
It is possible to use custom upload handlers in order to process uploaded files in a special way. Custom upload handlers must be provided as extensions. A handler must be automatically triggered whenever a certain type of file is uploaded to the system. This can be done by making use of the "MimeUploadHandlerMap[]" directive under "[CreateSettings]" in "upload.ini". For example, the following line will make sure that uploaded images (regardless of type) are handled by a class called "ezimageuploadhandler" located in "ezimageuploadhandler.php".
Il est possible d'utiliser des gestionnaires personnalisés de téléchargement, obligatoirement fournis sous la forme d'extensions, afin d'appliquer un traitement particulier aux fichiers. Un gestionnaire doit être automatiquement déclenché chaque fois qu'un certain type de fichier est téléchargé vers le système. Ceci peut être réalisé grâce à l'utilisation du paramètre MimeUploadHandlerMap[] de la section [CreateSettings] du fichier upload.ini. La ligne ci-dessous permet, par exemple, de s'assurer que les images téléchargées soient gérées par la classe ezimageuploadhandler du fichier ezimageuploadhandler.php.
MimeUploadHandlerMap[image]=ezimageuploadhandler
It is also possible to have only a specific type of file be processed by the upload handler. The following example demonstrates how to only handle JPEG images.
Il est également possible de n'avoir qu'un type particulier de fichier qui soit traité par le gestionnaire de téléchargement. Voici un exemple illustrant comment ne traiter que les images JPEG.
MimeUploadHandlerMap[image/jpeg]=ezimageuploadhandler
The upload handler itself must be put in a directory called "uploadhandlers" in an extension, like this:
Le gestionnaire lui-même doit être placé dans le répertoire uploadhandlers de l'extension, comme ceci:
eZ Publish
|
-extensions
|
-example
|
-uploadhandlers
|
-ezimageuploadhandler.php
The following code shows the skeleton of a custom upload handler.
Le code suivant montre le squelette d'un gestionnaire personnalisé:
class eZExampleUploadHandler extends eZContentUploadHandler { function eZExampleUploadHandler() { $this->eZContentUploadHandler( 'Example file handling', 'example' ); } /*! Handles the uploading of example files. */ function handleFile( &$upload, &$result, $filePath, $originalFilename, $mimeInfo, $location, $existingNode ) { // Implement your import/conversion routine here copy( $filepath, "var/cache/example.jpeg" ); } }
Table des matières
- WebDAV
- Configuration
Commentaires














