make link rendering more flexible, e.g. for using it with loops
git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3246 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
30d6ee0353
commit
6f245e7c5b
2 changed files with 18 additions and 4 deletions
|
@ -111,7 +111,7 @@ class LinkProcessor(object):
|
||||||
def process(self):
|
def process(self):
|
||||||
wiki = self.source.getWiki()
|
wiki = self.source.getWiki()
|
||||||
manager = wiki.getManager()
|
manager = wiki.getManager()
|
||||||
sourceUid = manager.getUid(self.source)
|
sourceUid = self.source.getUid()
|
||||||
lmName = self.source.getConfig('linkManager')
|
lmName = self.source.getConfig('linkManager')
|
||||||
lm = wiki.getManager().getPlugin(ILinkManager, lmName)
|
lm = wiki.getManager().getPlugin(ILinkManager, lmName)
|
||||||
existing = lm.query(source=sourceUid, name=self.targetName)
|
existing = lm.query(source=sourceUid, name=self.targetName)
|
||||||
|
@ -120,7 +120,7 @@ class LinkProcessor(object):
|
||||||
target = manager.getObject(link.target)
|
target = manager.getObject(link.target)
|
||||||
else:
|
else:
|
||||||
target = wiki.getPage(self.targetName)
|
target = wiki.getPage(self.targetName)
|
||||||
targetUid = manager.getUid(target)
|
targetUid = target is not None and target.getUid() or None
|
||||||
link = lm.createLink(self.targetName, sourceUid, targetUid)
|
link = lm.createLink(self.targetName, sourceUid, targetUid)
|
||||||
if link.refuri is None:
|
if link.refuri is None:
|
||||||
if self.request is not None:
|
if self.request is not None:
|
||||||
|
@ -128,12 +128,15 @@ class LinkProcessor(object):
|
||||||
link.refuri = '%s/create.html?linkid=%s' % (
|
link.refuri = '%s/create.html?linkid=%s' % (
|
||||||
absoluteURL(wiki, self.request), link.identifier)
|
absoluteURL(wiki, self.request), link.identifier)
|
||||||
else:
|
else:
|
||||||
link.refuri = absoluteURL(target, self.request)
|
link.refuri = self.getTargetURI(target)
|
||||||
self.setURI(link.refuri)
|
self.setURI(link.refuri)
|
||||||
if target is None:
|
if target is None:
|
||||||
self.markPresentation('create')
|
self.markPresentation('create')
|
||||||
self.addText('?')
|
self.addText('?')
|
||||||
|
|
||||||
|
def getTargetURI(self, obj):
|
||||||
|
return absoluteURL(obj, self.request)
|
||||||
|
|
||||||
def setURI(self, uri):
|
def setURI(self, uri):
|
||||||
raise ValueError('To be implemented by subclass.')
|
raise ValueError('To be implemented by subclass.')
|
||||||
|
|
||||||
|
|
|
@ -62,7 +62,9 @@ class WikiManager(BaseConfiguration):
|
||||||
return component.getUtility(IIntIds).getId(obj)
|
return component.getUtility(IIntIds).getId(obj)
|
||||||
|
|
||||||
def getObject(self, uid):
|
def getObject(self, uid):
|
||||||
return component.getUtility(IIntIds).getObject(uid)
|
if uid is None:
|
||||||
|
return None
|
||||||
|
return component.getUtility(IIntIds).getObject(int(uid))
|
||||||
|
|
||||||
# configuration
|
# configuration
|
||||||
|
|
||||||
|
@ -91,6 +93,11 @@ class Wiki(BaseConfiguration):
|
||||||
page.wiki = self
|
page.wiki = self
|
||||||
return page
|
return page
|
||||||
|
|
||||||
|
def addPage(self, page):
|
||||||
|
self.pages[page.name] = page
|
||||||
|
page.wiki = self
|
||||||
|
return page
|
||||||
|
|
||||||
def removePage(self, name):
|
def removePage(self, name):
|
||||||
if name in self.pages:
|
if name in self.pages:
|
||||||
del self.pages[name]
|
del self.pages[name]
|
||||||
|
@ -122,6 +129,7 @@ class WikiPage(BaseConfiguration):
|
||||||
return self.wiki
|
return self.wiki
|
||||||
|
|
||||||
def render(self, request=None):
|
def render(self, request=None):
|
||||||
|
# TODO: move render() method to a view class
|
||||||
source = self.preprocess(self.text)
|
source = self.preprocess(self.text)
|
||||||
tree = self.parse(source, request)
|
tree = self.parse(source, request)
|
||||||
result = self.write(tree)
|
result = self.write(tree)
|
||||||
|
@ -143,6 +151,9 @@ class WikiPage(BaseConfiguration):
|
||||||
def postprocess(self, result):
|
def postprocess(self, result):
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
def getUid(self):
|
||||||
|
return self.getWiki().getManager().getUid(self)
|
||||||
|
|
||||||
# configuration
|
# configuration
|
||||||
|
|
||||||
def getConfigParent(self):
|
def getConfigParent(self):
|
||||||
|
|
Loading…
Add table
Reference in a new issue