add first specialized view for external content access

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2772 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2008-07-25 22:13:00 +00:00
parent 905fd632b6
commit 208f5338ac
5 changed files with 44 additions and 4 deletions

View file

@ -23,6 +23,7 @@ $Id$
""" """
from zope import interface, component from zope import interface, component
from zope.app.pagetemplate import ViewPageTemplateFile
from zope.app.publisher.browser import getDefaultViewName from zope.app.publisher.browser import getDefaultViewName
from zope.cachedescriptors.property import Lazy from zope.cachedescriptors.property import Lazy
@ -31,7 +32,10 @@ from loops.browser.node import NodeView
from loops.common import adapted from loops.common import adapted
class ExternalAccessView(NodeView): view_macros = ViewPageTemplateFile('view_macros.pt')
class ExternalAccessRenderer(NodeView):
@Lazy @Lazy
def adapted(self): def adapted(self):
@ -45,3 +49,14 @@ class ExternalAccessView(NodeView):
def publishTraverse(self, request, name): def publishTraverse(self, request, name):
return self.adapted()[name] return self.adapted()[name]
class FlashVideo(ConceptView):
@Lazy
def macro(self):
return view_macros.macros['flashvideo']
@Lazy
def startName(self):
return self.adapted.address + '.html'

View file

@ -40,11 +40,20 @@
<browser:page <browser:page
name="xa" name="xa"
for="loops.interfaces.INode" for="loops.interfaces.INode"
class="loops.integrator.content.browser.ExternalAccessView" class="loops.integrator.content.browser.ExternalAccessRenderer"
permission="zope.View" /> permission="zope.View" />
<browser:containerViews <browser:containerViews
for="zope.app.container.interfaces.IReadContainer" for="zope.app.container.interfaces.IReadContainer"
index="zope.View" /> index="zope.View" />
<zope:adapter
name="flashvideo.html"
for="loops.interfaces.IConcept
zope.publisher.interfaces.browser.IBrowserRequest"
provides="zope.interface.Interface"
factory="loops.integrator.content.browser.FlashVideo"
permission="zope.View"
/>
</configure> </configure>

View file

@ -0,0 +1,16 @@
<!-- ZPT macros for loops.integrator.content views
$Id$ -->
<div metal:define-macro="flashvideo">
<h1 tal:attributes="ondblclick item/openEditWindow">
<span tal:content="item/title">Title</span>
</h1>
<div><br />
<a href="." target="_blank" class="button"
tal:define="baseUrl python: view.getUrlForTarget(item.context)"
tal:attributes="href string:$baseUrl/xa/${item/startName}">Open Resource</a>
</div>
<metal:resources use-macro="item/conceptMacros/conceptchildren" />
<metal:resources use-macro="item/conceptMacros/conceptresources" />
</div>

View file

@ -57,7 +57,7 @@ class IExternalCollection(IConceptSchema):
title=_(u'Base address'), title=_(u'Base address'),
description=_(u'A base path or URL for accessing this collection ' description=_(u'A base path or URL for accessing this collection '
'on the external system'), 'on the external system'),
required=False) required=True)
address = schema.TextLine( address = schema.TextLine(
title=_(u'Relative address'), title=_(u'Relative address'),
description=_(u'Optional second (local) part of the ' description=_(u'Optional second (local) part of the '

View file

@ -379,7 +379,7 @@ class ExternalFileAdapter(FileAdapter):
self.storageName = storageName self.storageName = storageName
def getData(self): def getData(self):
if self.storageName == 'unknown': # object not set up yet if self.storageName in ('unknown', None): # object not set up yet
return '' return ''
storage = component.getUtility(IExternalStorage, name=self.storageName) storage = component.getUtility(IExternalStorage, name=self.storageName)
return storage.getData(self.externalAddress, params=self.storageParams) return storage.getData(self.externalAddress, params=self.storageParams)