control navigation menu via layout node types, use traversal adapter for accessing targets via nodes

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2981 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2008-11-13 07:43:52 +00:00
parent 2dd02ede9f
commit 8b8ef4cbcc
7 changed files with 10 additions and 20 deletions

View file

@ -154,8 +154,7 @@ class ResourceAdapterBase(AdapterBase):
storageParams = None storageParams = None
def getChildren(self): def getChildren(self):
for r in self.context.getResources(): return []
yield adapted(r)
# other adapters # other adapters

View file

@ -186,7 +186,7 @@ class IConcept(IConceptSchema, ILoopsObject, IPotentialTarget):
class ILoopsAdapter(IConceptSchema): class ILoopsAdapter(IConceptSchema):
""" Common interface for concept and resource adapters. """ Common interface for concept (and possibly resource) adapters.
""" """
context = Attribute('The underlying persistent object.') context = Attribute('The underlying persistent object.')

View file

@ -56,8 +56,9 @@ class NodeLayoutInstance(LayoutInstance):
li.template = l li.template = l
result.append(li) result.append(li)
return result return result
# sublayouts specified via subnodes # sublayouts specified via subnodes of the current menu node
subnodes = self.context.values() menu = self.context.getMenu()
subnodes = menu.getMenuItems()
names = region.layouts.keys() names = region.layouts.keys()
for n in subnodes: for n in subnodes:
if n.viewName in names: if n.viewName in names:

View file

@ -26,20 +26,15 @@ from zope import component
from zope.cachedescriptors.property import Lazy from zope.cachedescriptors.property import Lazy
from zope.traversing.browser import absoluteURL from zope.traversing.browser import absoluteURL
from cybertools.composer.layout.browser.view import Page
from loops.browser.common import BaseView from loops.browser.common import BaseView
from loops.common import adapted from loops.common import adapted
from loops.i18n.browser import LanguageInfo from loops.i18n.browser import LanguageInfo
from loops.interfaces import IConcept from loops.interfaces import IConcept
from loops.layout.interfaces import ILayoutNode
from loops.versioning.util import getVersion
from loops import util from loops import util
class ConceptView(object): class ConceptView(object):
node = None
def __init__(self, context, request): def __init__(self, context, request):
self.context = context # this is the adapted concept! self.context = context # this is the adapted concept!
self.request = request self.request = request

View file

@ -34,15 +34,9 @@
<!-- target views --> <!-- target views -->
<browser:page
name="index.html"
for="loops.interfaces.IConceptSchema"
class="loops.layout.browser.concept.ConceptView"
permission="zope.View" />
<zope:adapter <zope:adapter
name="layout" name="layout"
for="loops.interfaces.IConceptSchema for="loops.interfaces.ILoopsAdapter
zope.publisher.interfaces.browser.IBrowserRequest" zope.publisher.interfaces.browser.IBrowserRequest"
provides="zope.interface.Interface" provides="zope.interface.Interface"
factory="loops.layout.browser.concept.ConceptView" /> factory="loops.layout.browser.concept.ConceptView" />

View file

@ -50,6 +50,7 @@ class NodeTraverser(ItemTraverser):
target = getVersion(target, request) target = getVersion(target, request)
target = adapted(target, LanguageInfo(target, request)) target = adapted(target, LanguageInfo(target, request))
viewAnnotations['target'] = target viewAnnotations['target'] = target
return target #return target
return self.context
obj = super(NodeTraverser, self).publishTraverse(request, name) obj = super(NodeTraverser, self).publishTraverse(request, name)
return obj return obj

View file

@ -25,7 +25,7 @@ $Id$
from zope.app.container.constraints import contains, containers from zope.app.container.constraints import contains, containers
from zope.interface import Interface from zope.interface import Interface
from loops.interfaces import INodeSchema, IBaseNode, IViewManager from loops.interfaces import INodeSchema, IBaseNode, INode, IViewManager
class ILayoutView(INodeSchema): class ILayoutView(INodeSchema):
@ -34,7 +34,7 @@ class ILayoutView(INodeSchema):
""" """
class ILayoutNode(ILayoutView, IBaseNode): class ILayoutNode(ILayoutView, INode):
contains(ILayoutView) contains(ILayoutView)