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:
parent
9dcb371b9e
commit
4d52ab345c
4 changed files with 59 additions and 12 deletions
|
@ -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)
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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):
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue