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
+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 #1A page with a link to an image
+ + 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