support links to media objects

git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@4104 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2010-12-13 13:02:06 +00:00
parent f4d1166442
commit f065fca514
3 changed files with 35 additions and 13 deletions

View file

@ -193,3 +193,21 @@ Embed media objects (images) in Wiki text
<p><a class="reference"
href="http://127.0.0.1/demo_wiki/start_page">Back to the Start Page</a></p>
Link to media objects (files) in Wiki text
------------------------------------------
>>> imagePage2 = wiki.createPage('with_image_link')
>>> imagePage2.text = '''
... **A page with a link to an image**
...
... `Media Object #1 <media01.jpg>`_
...
... `Back to the Start Page <start_page>`_
... '''
>>> print imagePage2.render(TestRequest())
<p><strong>A page with a link to an image</strong></p>
<p><a class="reference"
href="http://127.0.0.1/demo_wiki/.media/media01.jpg">Media Object #1</a></p>
<p><a class="reference"
href="http://127.0.0.1/demo_wiki/start_page">Back to the Start Page</a></p>

View file

@ -58,13 +58,11 @@ class LinkProcessor(object):
for link in lm.query(source=self.source, name=self.targetName):
#link = existing.next()
if link.target is not None:
#target = manager.getObject(link.target)
target = self.getTarget(manager, wiki, link.target)
else:
target = None
break
else:
#target = wiki.getPage(targetPageName)
target = self.findTarget(manager, wiki, targetPageName)
link = lm.createLink(name=self.targetName,
source=self.source, target=target)

View file

@ -49,6 +49,17 @@ class Reference(LinkProcessor):
def targetName(self):
return self.context.node['refuri']
def findTarget(self, manager, wiki, name):
target = wiki.getPage(name)
if target is None:
return self.findTargetMedia(manager, wiki, name)
return target
def findTargetMedia(self, manager, wiki, name):
mmName = wiki.getConfig('mediaManager')
mm = component.getAdapter(wiki, IMediaManager, name=mmName)
return mm.getObject(name)
def setURI(self, uri):
self.context.atts['href'] = uri
@ -63,21 +74,16 @@ class Image(Reference):
adapts(HTMLImageNode)
def findTarget(self, manager, wiki, text):
mmName = wiki.getConfig('mediaManager')
mm = component.getAdapter(wiki, IMediaManager, name=mmName)
return mm.getObject(text)
def getTarget(self, manager, wiki, uid):
return manager.getObject(uid)
def setURI(self, uri):
self.context.atts['src'] = uri
@Lazy
def targetName(self):
return self.context.node['uri']
def findTarget(self, manager, wiki, name):
return self.findTargetMedia(manager, wiki, name)
def setURI(self, uri):
self.context.atts['src'] = uri
def markPresentation(self, feature):
pass