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 = {} |     actions = {} | ||||||
|     icon = None |     icon = None | ||||||
|     modeName = 'view' |     modeName = 'view' | ||||||
|  |     isToplevel = False | ||||||
| 
 | 
 | ||||||
|     def __init__(self, context, request): |     def __init__(self, context, request): | ||||||
|         context = baseObject(context) |         context = baseObject(context) | ||||||
|  |  | ||||||
|  | @ -83,6 +83,13 @@ class NodeView(BaseView): | ||||||
|         viewConfig = getViewConfiguration(context, request) |         viewConfig = getViewConfiguration(context, request) | ||||||
|         self.setSkin(viewConfig.get('skinName')) |         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 |     @Lazy | ||||||
|     def macro(self): |     def macro(self): | ||||||
|         return self.template.macros['content'] |         return self.template.macros['content'] | ||||||
|  | @ -424,7 +431,7 @@ class NodeView(BaseView): | ||||||
|     def targetView(self, name='index.html', methodName='show'): |     def targetView(self, name='index.html', methodName='show'): | ||||||
|         tv = self.viewAnnotations.get('targetView') |         tv = self.viewAnnotations.get('targetView') | ||||||
|         if tv is not None: |         if tv is not None: | ||||||
|             return tv |             return tv() | ||||||
|         if '?' in name: |         if '?' in name: | ||||||
|             name, params = name.split('?', 1) |             name, params = name.split('?', 1) | ||||||
|         target = self.virtualTargetObject |         target = self.virtualTargetObject | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue