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 1.1
--- ---
<<<<<<< HEAD
- provide controlling of rendering macro via field instance method getRenderer() - provide controlling of rendering macro via field instance method getRenderer()
- add getRelations() method to child relation set - 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 - Lobo layout: provide new part: image grid; make sure image is not repeated if
it already appears in header part it already appears in header part
- new special view 'listsubobjects' for nodes - new special view 'listsubobjects' for nodes

View file

@ -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)

View file

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

View file

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