cp.hennessy@openapp.biz wrote:
Maik Jablonski wrote:
I imagine that there much be an automatic way (or a product for this) but it is not obvious to me.
If your implement your own folder you can override the methods for WebDAV support (see below). With CMFs TypeTool You would probably configure the mapping per site, I'm not sure. Check the CMF source for PUT_factory or MKCOL_handler. One problem remains, which is partly a file system clash. WebDAV client usually doesn't handle collections of different type, because the only sensible is to map it to a Folder. Zope can have collections that are not just Folders but will look like Folders through the client (for instance WebDrive which I use by the way). I'm not sure if this limitation is built in to WebDAV as well, but it's possible (someone from South River Technologies ones told me otherwice). Regards, Johan Carlsson An example of Colliberty Easy Publishers WebDAV support: def MKCOL_handler(self,id,REQUEST=None,RESPONSE=None): """Handle WebDAV MKCOL.""" #This adds a new Collection self.addNewDocument(id, REQUEST=REQUEST,RESPONSE=RESPONSE) def PUT_factory( self, name, typ, body ): """\ Dispatcher for PUT requests to non-existent IDs. Returns an object of the appropriate type (or None, if we don't know what to do). """ try: if name and name.endswith('.pt'): ob = ZopePageTemplate(name, body, content_type=typ) elif typ in ('text/html', 'text/xml', 'text/plain'): ob = DTMLMethod( '', __name__=name ) elif typ=='text/x-python' or (body and body[0]=='#') \ or name.endswith('.pys'): ob = PythonScript( name ) elif typ=='text/easydocument' or name.endswith('.edoc'): from Products.EasyEditor.EasyDocument import EasyDocument ob = EasyDocument( name ) elif typ=='text/easynewsitem' or name.endswith('.enews'): from Products.EasyEditor.EasyNewsItem import EasyNewsItem ob = EasyNewsItem( name ) elif typ=='text/easycontactform' or name.endswith('.eform'): from Products.EasyContactForm.EasyContactForm import EasyContactForm ob = EasyContactForm( name ) elif typ[:6]=='image/' or name[-3:].upper() in TYPEINFOMAP.keys(): ob = EasyImage(name, body, '', content_type=typ) else: ob = EasyFile(name, body, '', content_type=typ) except: return None return ob