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:
parent
905fd632b6
commit
208f5338ac
5 changed files with 44 additions and 4 deletions
|
@ -23,6 +23,7 @@ $Id$
|
|||
"""
|
||||
|
||||
from zope import interface, component
|
||||
from zope.app.pagetemplate import ViewPageTemplateFile
|
||||
from zope.app.publisher.browser import getDefaultViewName
|
||||
from zope.cachedescriptors.property import Lazy
|
||||
|
||||
|
@ -31,7 +32,10 @@ from loops.browser.node import NodeView
|
|||
from loops.common import adapted
|
||||
|
||||
|
||||
class ExternalAccessView(NodeView):
|
||||
view_macros = ViewPageTemplateFile('view_macros.pt')
|
||||
|
||||
|
||||
class ExternalAccessRenderer(NodeView):
|
||||
|
||||
@Lazy
|
||||
def adapted(self):
|
||||
|
@ -45,3 +49,14 @@ class ExternalAccessView(NodeView):
|
|||
|
||||
def publishTraverse(self, request, 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'
|
||||
|
|
|
@ -40,11 +40,20 @@
|
|||
<browser:page
|
||||
name="xa"
|
||||
for="loops.interfaces.INode"
|
||||
class="loops.integrator.content.browser.ExternalAccessView"
|
||||
class="loops.integrator.content.browser.ExternalAccessRenderer"
|
||||
permission="zope.View" />
|
||||
|
||||
<browser:containerViews
|
||||
for="zope.app.container.interfaces.IReadContainer"
|
||||
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>
|
||||
|
|
16
integrator/content/view_macros.pt
Executable file
16
integrator/content/view_macros.pt
Executable 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>
|
|
@ -57,7 +57,7 @@ class IExternalCollection(IConceptSchema):
|
|||
title=_(u'Base address'),
|
||||
description=_(u'A base path or URL for accessing this collection '
|
||||
'on the external system'),
|
||||
required=False)
|
||||
required=True)
|
||||
address = schema.TextLine(
|
||||
title=_(u'Relative address'),
|
||||
description=_(u'Optional second (local) part of the '
|
||||
|
|
|
@ -379,7 +379,7 @@ class ExternalFileAdapter(FileAdapter):
|
|||
self.storageName = storageName
|
||||
|
||||
def getData(self):
|
||||
if self.storageName == 'unknown': # object not set up yet
|
||||
if self.storageName in ('unknown', None): # object not set up yet
|
||||
return ''
|
||||
storage = component.getUtility(IExternalStorage, name=self.storageName)
|
||||
return storage.getData(self.externalAddress, params=self.storageParams)
|
||||
|
|
Loading…
Add table
Reference in a new issue