update IntIds utility on rename; always use '@@' prefix for views

git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3857 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2010-05-09 14:24:14 +00:00
parent b1a231f40e
commit 4b33b8f9d4
3 changed files with 13 additions and 7 deletions

View file

@ -70,7 +70,7 @@
<tal:show condition="view/showEditButton">
<div>&nbsp;</div>
<div>
<a tal:attributes="href string:${context/absolute_url}/edit.html">Edit</a>
<a tal:attributes="href string:${context/absolute_url}/@@edit.html">Edit</a>
</div>
</tal:show>
</div>

View file

@ -102,7 +102,7 @@ class CreatePage(object):
for link in lm.query(name=name):
if link.target is None:
link.update(target=page)
self.request.response.redirect('%s/edit.html' %
self.request.response.redirect('%s/@@edit.html' %
absoluteURL(page, self.request))
return False

View file

@ -27,6 +27,7 @@ from BTrees.OOBTree import OOBTree
from persistent.mapping import PersistentMapping
from zope.app.intid import IntIds
from zope.app.intid.interfaces import IIntIds
from zope.app.keyreference.interfaces import IKeyReference
from zope.cachedescriptors.property import Lazy
from zope import component
from zope.component import adapts
@ -89,12 +90,8 @@ class WikiManager(BaseWikiManager):
self.wikiUids.remove(uid)
def renameWiki(self, wiki, newName):
intIds = self.getPlugin(IIntIds)
self.removeWiki(wiki)
intIds.unregister(wiki)
wiki.rename(newName)
intIds.register(wiki)
self.addWiki(wiki)
moveKeyReference(self.getPlugin(IIntIds), wiki)
def listWikis(self):
for uid in self.wikiUids:
@ -166,3 +163,12 @@ class LinkManager(BaseLinkManager):
def getObject(self, uid):
return self.manager.getObject(uid)
def moveKeyReference(intIds, obj):
""" Make sure entry in intIds utility is updated after a move or rename.
"""
key = IKeyReference(obj)
uid = intIds.getId(obj)
intIds.refs[uid] = key
intIds.ids[key] = uid