diff --git a/integrator/browser/bscw.py b/integrator/browser/bscw.py index 0d84519..4007ab5 100644 --- a/integrator/browser/bscw.py +++ b/integrator/browser/bscw.py @@ -29,7 +29,8 @@ from zope import component from zope.cachedescriptors.property import Lazy from zope.traversing.browser import absoluteURL -from cybertools.integrator.bscw import ContainerFactory +from cybertools.integrator.base import mimeTypes +from cybertools.integrator.bscw import ContainerFactory, File from cybertools.integrator.interfaces import IContainerFactory from cybertools.integrator.interfaces import IItemFactory, IFileFactory @@ -70,11 +71,23 @@ class ItemView(BaseView): super(ItemView, self).__init__(context, request) self.parentView = parentView + @Lazy + def baseName(self): + return self.context.icon + @Lazy def url(self): + if isinstance(self.context, File): + return self.downloadUrl url = self.parentView.url return '%s?id=%s' % (url, self.context.internalPath) + @Lazy + def downloadUrl(self): + urlInfo = self.context.externalURLInfo + extension = (mimeTypes.get(self.context.contentType) or ['bin'])[0] + return '%s/d%s/%s.%s' % (urlInfo.baseUrl, urlInfo.path, self.title, extension) + @property def breadCrumbs(self): parents = list(self.context.parents) diff --git a/integrator/bscw.py b/integrator/bscw.py index 38d373f..8a374e9 100644 --- a/integrator/bscw.py +++ b/integrator/bscw.py @@ -206,7 +206,6 @@ class ReadContainer(BSCWProxyBase, ReadContainer): return sorted((self.get(k) for k in self), key=lambda x: (x.itemType != 'Folder', x.title.lower())) - def __len__(self): return len(self.keys())