diff --git a/README.txt b/README.txt index 7bfacdd..1eb6180 100755 --- a/README.txt +++ b/README.txt @@ -539,7 +539,11 @@ view for rendering.) >>> doc1.contentType = 'text/restructured' >>> doc1.data = u'Test data\n\nAnother `paragraph `_' + >>> from loops.wiki.base import wikiLinksActive + >>> wikiLinksActive(loopsRoot) + True + >>> view.renderTarget() u'

Test data

\n

Another paragraph

\n' diff --git a/tests/setup.py b/tests/setup.py index aa1b61a..db67352 100644 --- a/tests/setup.py +++ b/tests/setup.py @@ -46,6 +46,7 @@ from cybertools.text.html import HtmlTransform from cybertools.typology.interfaces import IType from cybertools.wiki.base.config import WikiConfiguration from cybertools.wiki.dcu.html import Writer as DocutilsHTMLWriter +from cybertools.wiki.dcu import process from cybertools.wiki.dcu.rstx import Parser as DocutilsRstxParser from cybertools.wiki.tracking.link import LinkManager @@ -76,7 +77,7 @@ from loops.security.setter import BaseSecuritySetter from loops.setup import SetupManager, addObject from loops.type import LoopsType, ConceptType, ResourceType, TypeConcept from loops.view import Node, NodeAdapter -from loops.wiki.link import LoopsLinkProcessor +#from loops.wiki.link import LoopsLinkProcessor from loops.wiki.setup import SetupManager as WikiSetupManager @@ -185,7 +186,8 @@ class TestSite(object): component.provideAdapter(LinkManager) component.provideUtility(DocutilsHTMLWriter(), name='docutils.html') component.provideUtility(DocutilsRstxParser(), name='docutils.rstx') - component.provideAdapter(LoopsLinkProcessor, name='loops') + #component.provideAdapter(LoopsLinkProcessor, name='loops') + component.provideAdapter(process.Reference, name='default') loopsRoot = self.site['loops'] = Loops() setup = SetupManager(loopsRoot) diff --git a/wiki/base.py b/wiki/base.py index e696a3d..5808ef3 100644 --- a/wiki/base.py +++ b/wiki/base.py @@ -43,7 +43,7 @@ class LoopsWikiManager(WikiManager): """ linkManager = 'tracking' - nodeProcessors = dict(reference=['loops']) + #nodeProcessors = dict(reference=['loops']) def __init__(self, context): super(LoopsWikiManager, self).__init__() @@ -58,14 +58,22 @@ class LoopsWikiManager(WikiManager): return util.getUidForObject(obj) def getObject(self, uid): - return util.getObjectForUid(uid) + obj = self.resolveUid(uid) + if obj is None: + return LoopsWikiPage(util.getObjectForUid(uid)) + return obj class LoopsWiki(Wiki): def getPage(self, name): if name.startswith('.target'): + if '?' in name: # TODO: handle this on a general level + name, params = name.split('?', 1) + if '#' in name: + name, anchor = name.split('#', 1) return self.getManager().getObject(int(name[7:])) + return super(LoopsWiki, self).getPage(name) class LoopsWikiPage(WikiPage): @@ -76,5 +84,16 @@ class LoopsWikiPage(WikiPage): self.context = context self.name = getName(context) - def getUid(self): + # IWebResource + + @property + def uid(self): return util.getUidForObject(self.context) + + def getURI(self, request): + ann = request.annotations.get('loops.view', {}) + nodeView = ann.get('nodeView') + if nodeView is not None: + return nodeView.getUrlForTarget(self.context) + return super(LoopsWikiPage, self).getURI(request) + diff --git a/wiki/configure.zcml b/wiki/configure.zcml index 0bcd7b8..1f5f7a2 100644 --- a/wiki/configure.zcml +++ b/wiki/configure.zcml @@ -15,8 +15,11 @@ - + + + diff --git a/wiki/link.py b/wiki/link.py deleted file mode 100644 index 0fd8dc0..0000000 --- a/wiki/link.py +++ /dev/null @@ -1,36 +0,0 @@ -# -# Copyright (c) 2009 Helmut Merz helmutm@cy55.de -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# - -""" -Link manager implementation for loops. - -$Id$ -""" - -from cybertools.wiki.dcu.process import Reference - - -class LoopsLinkProcessor(Reference): - - def getTargetUri(self, obj): - ann = self.request.annotations.get('loops.view', {}) - nodeView = self.viewAnnotations.get('nodeView') - if nodeView is not None: - return nodeView.getUrlForTarget(obj) - return super(LoopsLinkProcessor, self).getTargetUri(obj) - diff --git a/wiki/setup.py b/wiki/setup.py index 21309b8..df3d607 100644 --- a/wiki/setup.py +++ b/wiki/setup.py @@ -31,5 +31,5 @@ class SetupManager(BaseSetupManager): def setup(self): records = self.context.getRecordManager() - links = self.addObject(records, TrackingStorage, 'links', - trackFactory=Link) + if 'links' not in records: + records['links'] = TrackingStorage(trackFactory=Link)