work in progress: BSCW access

git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@2661 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2008-06-03 11:30:37 +00:00
parent 9dcb371b9e
commit 4d52ab345c
4 changed files with 59 additions and 12 deletions

View file

@ -34,17 +34,49 @@ from cybertools.integrator.interfaces import IContainerFactory
listing_macros = ViewPageTemplateFile('listing.pt')
class BSCWView(object):
template = listing_macros
baseUrl = ''
baseId = ''
class BaseView(object):
def __init__(self, context, request):
self.context = context
self.request = request
@Lazy
def title(self):
return self.context.title
@Lazy
def description(self):
return self.context.description
@Lazy
def url(self):
return absoluteURL(self.context, self.request)
@Lazy
def icon(self):
return '%s/++resource++%s.png' % (self.request.URL[0], self.context.icon)
class ItemView(BaseView):
def __init__(self, context, request, parentView):
super(ItemView, self).__init__(context, request)
self.parentView = parentView
@Lazy
def url(self):
url = self.parentView.url
return '%s?id=%s' % (url, self.context.internalPath)
class BSCWView(BaseView):
template = listing_macros
itemView = ItemView
baseUrl = ''
baseId = ''
@Lazy
def listing(self):
return self.template.macros['listing']
@ -60,7 +92,8 @@ class BSCWView(object):
id = self.request.form.get('id', id)
factory = component.getUtility(IContainerFactory, name='bscw')
root = factory(id, server=server, baseUrl=self.baseUrl)
return root.values()
for obj in root.values():
yield self.itemView(obj, self.request, self)
def getUrlForObject(self, obj):
url = absoluteURL(self.context, self.request)

View file

@ -4,8 +4,15 @@
<dl>
<tal:item repeat="item view/content">
<dt>
<a tal:attributes="href python: view.getUrlForObject(item)"
tal:content="item/title" />
<a tal:attributes="href item/url">
<img width="16" height="16"
src="http://localhost:8080/plone/folder_icon.gif"
alt="BSCW Repository"
tal:attributes="src item/icon" />
</a>
<a tal:attributes="href item/url">
<span tal:content="item/title" />
</a>
</dt>
<dd tal:content="item/description">
</dd>

View file

@ -140,6 +140,10 @@ class Item(BSCWProxyBase, Item):
def icon(self):
return self.type.lower()
@Lazy
def type(self):
return 'item'
class File(BSCWProxyBase, File):

View file

@ -97,11 +97,14 @@ The BSCW Repository View
>>> view.baseUrl = 'http://localhost/bscw.cgi/'
>>> view.baseId = '4'
>>> view.content()
[<...ReadContainer...>]
>>> items = list(view.content())
>>> items
[<...bscw.ItemView...>]
>>> view.getUrlForObject(view.content()[0])
>>> items[0].url
'http://127.0.0.1/bscw?id=bs_5'
>>> items[0].icon
'http://127.0.0.1/++resource++folder.png'
Fin de partie