From f065fca514daa2cab74ba22c22be646eb9044cb2 Mon Sep 17 00:00:00 2001 From: helmutm Date: Mon, 13 Dec 2010 13:02:06 +0000 Subject: [PATCH] support links to media objects git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@4104 fd906abe-77d9-0310-91a1-e0d9ade77398 --- wiki/README.txt | 18 ++++++++++++++++++ wiki/base/link.py | 2 -- wiki/dcu/process.py | 28 +++++++++++++++++----------- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/wiki/README.txt b/wiki/README.txt index 7ea85d3..730c7bf 100644 --- a/wiki/README.txt +++ b/wiki/README.txt @@ -193,3 +193,21 @@ Embed media objects (images) in Wiki text

Back to the Start Page

+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 `_ + ... + ... `Back to the Start Page `_ + ... ''' + + >>> print imagePage2.render(TestRequest()) +

A page with a link to an image

+

Media Object #1

+

Back to the Start Page

diff --git a/wiki/base/link.py b/wiki/base/link.py index 1a2f727..59d247e 100644 --- a/wiki/base/link.py +++ b/wiki/base/link.py @@ -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) diff --git a/wiki/dcu/process.py b/wiki/dcu/process.py index 1ddcbe1..89bb74a 100644 --- a/wiki/dcu/process.py +++ b/wiki/dcu/process.py @@ -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