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):
|
||||
wiki = self.source.getWiki()
|
||||
manager = wiki.getManager()
|
||||
sourceUid = manager.getUid(self.source)
|
||||
sourceUid = self.source.getUid()
|
||||
lmName = self.source.getConfig('linkManager')
|
||||
lm = wiki.getManager().getPlugin(ILinkManager, lmName)
|
||||
existing = lm.query(source=sourceUid, name=self.targetName)
|
||||
|
@ -120,7 +120,7 @@ class LinkProcessor(object):
|
|||
target = manager.getObject(link.target)
|
||||
else:
|
||||
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)
|
||||
if link.refuri is None:
|
||||
if self.request is not None:
|
||||
|
@ -128,12 +128,15 @@ class LinkProcessor(object):
|
|||
link.refuri = '%s/create.html?linkid=%s' % (
|
||||
absoluteURL(wiki, self.request), link.identifier)
|
||||
else:
|
||||
link.refuri = absoluteURL(target, self.request)
|
||||
link.refuri = self.getTargetURI(target)
|
||||
self.setURI(link.refuri)
|
||||
if target is None:
|
||||
self.markPresentation('create')
|
||||
self.addText('?')
|
||||
|
||||
def getTargetURI(self, obj):
|
||||
return absoluteURL(obj, self.request)
|
||||
|
||||
def setURI(self, uri):
|
||||
raise ValueError('To be implemented by subclass.')
|
||||
|
||||
|
|
|
@ -62,7 +62,9 @@ class WikiManager(BaseConfiguration):
|
|||
return component.getUtility(IIntIds).getId(obj)
|
||||
|
||||
def getObject(self, uid):
|
||||
return component.getUtility(IIntIds).getObject(uid)
|
||||
if uid is None:
|
||||
return None
|
||||
return component.getUtility(IIntIds).getObject(int(uid))
|
||||
|
||||
# configuration
|
||||
|
||||
|
@ -91,6 +93,11 @@ class Wiki(BaseConfiguration):
|
|||
page.wiki = self
|
||||
return page
|
||||
|
||||
def addPage(self, page):
|
||||
self.pages[page.name] = page
|
||||
page.wiki = self
|
||||
return page
|
||||
|
||||
def removePage(self, name):
|
||||
if name in self.pages:
|
||||
del self.pages[name]
|
||||
|
@ -122,6 +129,7 @@ class WikiPage(BaseConfiguration):
|
|||
return self.wiki
|
||||
|
||||
def render(self, request=None):
|
||||
# TODO: move render() method to a view class
|
||||
source = self.preprocess(self.text)
|
||||
tree = self.parse(source, request)
|
||||
result = self.write(tree)
|
||||
|
@ -143,6 +151,9 @@ class WikiPage(BaseConfiguration):
|
|||
def postprocess(self, result):
|
||||
return result
|
||||
|
||||
def getUid(self):
|
||||
return self.getWiki().getManager().getUid(self)
|
||||
|
||||
# configuration
|
||||
|
||||
def getConfigParent(self):
|
||||
|
|
Loading…
Add table
Reference in a new issue