merge branch master into bbmaster

This commit is contained in:
Helmut Merz 2012-01-29 11:27:43 +01:00
commit 36c70374b3
4 changed files with 24 additions and 6 deletions

View file

@ -6,8 +6,13 @@ $Id$
1.1
---
<<<<<<< HEAD
- provide controlling of rendering macro via field instance method getRenderer()
- add getRelations() method to child relation set
=======
- use targetView entry in request annotations for calling views declared
for adapted concept map objects (i.e. type interfaces)
>>>>>>> master
- Lobo layout: provide new part: image grid; make sure image is not repeated if
it already appears in header part
- new special view 'listsubobjects' for nodes

View file

@ -131,6 +131,7 @@ class BaseView(GenericView, I18NView):
actions = {}
icon = None
modeName = 'view'
isToplevel = False
def __init__(self, context, request):
context = baseObject(context)

View file

@ -234,13 +234,16 @@ class ConceptView(BaseView):
def description(self):
return self.adapted.description
@Lazy
def targetUrl(self):
return self.nodeView.getUrlForTarget(self.context)
def breadcrumbs(self):
data = []
if self.breadcrumbsParent is not None:
data.extend(self.breadcrumbsParent.breadcrumbs())
if self.context != self.nodeView.targetObject:
data.append(dict(label=self.title,
url=self.nodeView.getUrlForTarget(self.context)))
data.append(dict(label=self.title, url=self.targetUrl))
return data
@Lazy

View file

@ -51,7 +51,7 @@ from cybertools.typology.interfaces import IType, ITypeManager
from cybertools.util.jeep import Jeep
from cybertools.xedit.browser import ExternalEditorView
from loops.browser.action import actions, DialogAction
from loops.common import adapted, AdapterBase
from loops.common import adapted, AdapterBase, baseObject
from loops.i18n.browser import i18n_macros, LanguageInfo
from loops.interfaces import IConcept, IResource, IDocument, IMediaAsset, INode
from loops.interfaces import IViewConfiguratorSchema
@ -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']
@ -422,9 +429,10 @@ class NodeView(BaseView):
return None
def targetView(self, name='index.html', methodName='show'):
tv = self.viewAnnotations.get('targetView')
if tv is not None:
return tv
if name == 'index.html': # only when called for default view
tv = self.viewAnnotations.get('targetView')
if tv is not None:
return tv()
if '?' in name:
name, params = name.split('?', 1)
target = self.virtualTargetObject
@ -514,6 +522,7 @@ class NodeView(BaseView):
if isinstance(target, BaseView):
return self.makeTargetUrl(self.url, target.uniqueId, target.title)
else:
target = baseObject(target)
return self.makeTargetUrl(self.url, util.getUidForObject(target),
target.title)