WebDAV API for Drupal
Student: Fabiano Sant'Ana, http://www.wundo.net
Mentor: James Walker
Synopis:
The WebDAV API module will be an interface to Drupal. It will allow the users to access the Drupal database(contents and configs) from an WebDAV interface. Each Drupal Module will need a hook to work with the WebDAV API, this can be done inside the module or outside using an "complement" module (like in blog and blogapi modules).
What the Drupal earns with this? (Benefits to the Drupal Community)
Freedom.
An backup method, if I'm a Drupal Admin I could copy all the configs and information that are in my site direct from my Windows Explorer (or whatever you use to navigate in folders) to an local folder.
Usability.
A better user interface, 'cause sincerely it's too much better way just open my text editor and write my post then just save this in my Mapped Drupal WebDav directory than write it in my editor then copy and past into Drupal page.
Elegance.
It's very elegant to control the content from my site like if it is a local folder. And I don't need to code, see html tags, or whatever that a dummy don't know how to do. But if you want you can see anyway. :)
Uncountable uses.
My proposal is to do an API (not just it), I really don't know all the things that can be done with this.
Deliverables:
The WebDAV API module.
And Example module, "UploadWebDAV" hook. (The API interface for the upload module)
Project Details:
My proposal is to implement an interface to Drupal using the WebDAV protocol, what allows the users a more friendly way to manage/publish the contents of the system. Based in the RFC 2518 (HTTP Extensions for Distributed Authoring - WebDAV (http://www.ietf.org/rfc/rfc2518.txt)) the module will authenticate using the Drupal Database. The root WebDAV folder will have collections(collections is the name of WebDAV folders) and each collection is a hook to another module.
WebDAV will make the low level things and transmit it to the "hook module". The "hook module" will make the interaction between the "real" module and all the logic work.
For example:
The root folder has a collection named "uploads", when the user try to access it the DAV module will call the "hook module" asking if the user can access it, and if yes, what DAV should show to the user there.
Suppose that there is an file "bio.txt" in the user files, and the user delete it, the DAV module will call the delete procedure in hook module, and the hook module will remove it from the system.
Also I'll make a module to show how to work with the API (What matter if we have a API but no one uses/knows how to use it? ;) ). This module will be a hook to the upload module, and will be the same as it.
Project Schedule:
Until 06/19 - Structure the basics of API.
Until 07/02 - Implement the first WebDAV Request Methods (GET, PUT, POST, MKCOL, etc).
Until 07/16 - Implement the extended WebDAV Methods (PROPFIND, PROPPATCH)
Until 07/30 - Implement Locking related WebDAV Methods (LOCK, UNLOCK)
Until 08/13 - Debug/Implement the Sample Module (uploads WebDAV module)
Until 08/20 - Finish the Sample Module
Until 08/27 - Final Tests/Debug

This could be huge.
At the moment, one of my biggest frustrations with Drupal, or any CMS really, is having to edit complicated HTML/PHP/etc. directly in a web browser. Administering text in a textarea through a web browser is fine for simple blog-style text entries. But there are many of us who want to trick out every page with some pretty advanced HTML/CSS. We have our text editors tricked out so hard that we can markup a heavily structured page in seconds using quick keys and scripted routines.
Sure I can use my preferred text editor(BBEdit) then copy/paste the result into the browser form but that is so busch-league, if for no other reason that I am then maintaining two separate versions of the same file, and every time I want to preview the result in context, I have to shuffle around copy and pasting.
This is such a pain in the ass that instead of trying to maintain many of my more complicated nodes through such a limited web browser interface, I have resorted to setting the input for my node to PHP and replacing the body with an include statement like...
<?php include config_init().'nodes/123.php' ?>I then use WebDAV to mount my remote 'nodes' directory and easily edit my more complicated files with my preferred text editor without having to constantly copy/paste through the browser.
For the most part this works, but it is such a kludge.
Are you saying that this would allow us to use WebDAV to access and maintain individual nodes in the database like flat files? Meaning I could even mount my database with WebDAV to my local file system and edit the markup in my nodes, and save them, as though they were text documents? If so, this would be the answer to a year long quest.
What is the status of this development? Is there a place where we can check in on it?
Re: This could be huge.
Yes, I am. ;)
Now I'm working in the webdav upload module, my next step is implement an "webdav node module"....
You can find more information about the project in my website...
WebDav implementation
I made a very small (but usefull for half a day of work) implementation of this using Pear WebDav server.
At the moment it is only usable to view/modifiy an existing node. You have :
That's it for now. Retrevied data is retreived as html/utf8 but perhaps can be clever to change this to a nice XML structure. Don't know.
It still need a lot of polish and a module packaging. I don't have a clue of how to do that and if it is even possible (it's same problem that xmlrpc, needs its own php file).
Anyway, if someone is interested, you can have the first release here :
http://artisan.karma-lab.net/node/49
I'm interested in your work.
I'm interested in your work. I'm keen to experiment with WebDAV on drupal, either via PEAR or the Google SOC work. I went to your site but couldn't see a release. Can you please provide a URL?
Merci.
beta attached
Sorry about that. Now it should be ok.
drupal.dav 0.2
I just released drupal.dav 0.2 :
- read/write acess for node content
- node folder renaming (meaning changing title)
- By nodes browsing (flat nodes listing)
- By books browsing (hierarchical navigation)
- Moving a node folder to any book chapters folder
- support for KDE kioslave webdav (konqueror, quanta, etc..) and davfs
I tested it without problem but it is still very experimental so be curefull using it (backup & co).
http://antinea.artisan.karma-lab.intra/node/49
CHomping at the bit to try
CHomping at the bit to try this, but no dice on that link.
-zach
--
harkey design
link
I think the link should have been http://artisan.karma-lab.net/node/49
Services
It would be neat if the WebDAV API was implemented using the Services module? Then you could access the WebDAV functionality from Drupal's XMLRPC, AMFPHP, etc.