From 21b6af48b9f931d8f6133cb6adb1bee19ed72982 Mon Sep 17 00:00:00 2001 From: helmutm Date: Sat, 28 Jan 2006 13:09:39 +0000 Subject: [PATCH] Media assets and documents as target objects for nodes: basically OK git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@1043 fd906abe-77d9-0310-91a1-e0d9ade77398 --- README.txt | 32 ++++++++++++++------- browser/configure.zcml | 33 ++++++++++++--------- browser/node.py | 5 ++-- concept.py | 2 ++ interfaces.py | 65 ++++++++++++++++++++++++++++++------------ resource.py | 8 +++++- target.py | 10 +++++-- view.py | 14 +++++++-- 8 files changed, 117 insertions(+), 52 deletions(-) diff --git a/README.txt b/README.txt index 6ec4233..7323476 100755 --- a/README.txt +++ b/README.txt @@ -286,11 +286,6 @@ target may be moved or renamed without any problems.) >>> m111.title u'New title for m111' >>> nodeConfig.targetUri = '.loops/resources/doc1' - -We have to get a new adapter to avoid problems with lazy variables: - - >>> nodeConfig = INodeConfigSchema(m111) - >>> nodeConfig.title = 'New title for m111' >>> m111.target is doc1 True >>> nodeConfig.targetType @@ -327,16 +322,33 @@ application uses a subclass that does all the other stuff for form handling.) >>> isinstance(resources['m1.m11.m111'], Document) True -It is also possible to edit a target's attributes directly in an +A node object provides the targetSchema of its target: + + >>> from loops.interfaces import IDocumentView + >>> from loops.interfaces import IMediaAssetView + >>> IDocumentView.providedBy(m111) + True + >>> IMediaAssetView.providedBy(m111) + False + >>> m111.target = None + >>> IDocumentView.providedBy(m111) + False + >>> m111.target = resources['ma07'] + >>> IDocumentView.providedBy(m111) + False + >>> IMediaAssetView.providedBy(m111) + True + +It is possible to edit a target's attributes directly in an edit form provided by the node: >>> from loops.target import DocumentProxy, MediaAssetProxy - >>> ztapi.provideAdapter(INode, IDocument, DocumentProxy) - >>> ztapi.provideAdapter(INode, IMediaAsset, MediaAssetProxy) + >>> ztapi.provideAdapter(INode, IDocumentView, DocumentProxy) + >>> ztapi.provideAdapter(INode, IMediaAssetView, MediaAssetProxy) - >>> proxy = zapi.getAdapter(m111, IDocument) + >>> proxy = zapi.getAdapter(m111, IDocumentView) >>> proxy.title = u'Set via proxy' - >>> resources['m1.m11.m111'].title + >>> resources['ma07'].title u'Set via proxy' Ordering Nodes diff --git a/browser/configure.zcml b/browser/configure.zcml index 5db0a57..6a0047f 100644 --- a/browser/configure.zcml +++ b/browser/configure.zcml @@ -167,7 +167,7 @@ @@ -184,7 +184,7 @@ @@ -271,8 +271,8 @@ label="Add Node" name="AddLoopsNode.html" content_factory="loops.view.Node" - schema="loops.interfaces.INodeConfigSchema" - fields="title description nodeType targetType targetUri createTarget" + schema="loops.interfaces.INode" + fields="title description nodeType body" class="loops.browser.node.ConfigureView" permission="zope.ManageContent"> @@ -327,20 +327,25 @@ - - +