directly call target view from node view if target view is marked as top-level
This commit is contained in:
parent
b686716754
commit
2a7a5f8a1d
2 changed files with 9 additions and 1 deletions
|
@ -131,6 +131,7 @@ class BaseView(GenericView, I18NView):
|
|||
actions = {}
|
||||
icon = None
|
||||
modeName = 'view'
|
||||
isToplevel = False
|
||||
|
||||
def __init__(self, context, request):
|
||||
context = baseObject(context)
|
||||
|
|
|
@ -83,6 +83,13 @@ class NodeView(BaseView):
|
|||
viewConfig = getViewConfiguration(context, request)
|
||||
self.setSkin(viewConfig.get('skinName'))
|
||||
|
||||
def __call__(self, *args, **kw):
|
||||
tv = self.viewAnnotations.get('targetView')
|
||||
if tv is not None:
|
||||
if tv.isToplevel:
|
||||
return tv(*args, **kw)
|
||||
return super(NodeView, self).__call__(*args, **kw)
|
||||
|
||||
@Lazy
|
||||
def macro(self):
|
||||
return self.template.macros['content']
|
||||
|
@ -424,7 +431,7 @@ class NodeView(BaseView):
|
|||
def targetView(self, name='index.html', methodName='show'):
|
||||
tv = self.viewAnnotations.get('targetView')
|
||||
if tv is not None:
|
||||
return tv
|
||||
return tv()
|
||||
if '?' in name:
|
||||
name, params = name.split('?', 1)
|
||||
target = self.virtualTargetObject
|
||||
|
|
Loading…
Add table
Reference in a new issue