Basic interfaces and classes set up and running

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@815 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2005-12-03 22:03:19 +00:00
parent a659d8c7de
commit b9dfa307d1
5 changed files with 192 additions and 3 deletions

View file

@ -139,8 +139,8 @@
label="Add Document"
name="AddLoopsDocument.html"
schema="loops.interfaces.IDocument"
content_factory="loops.resource.Document"
fields="title body format"
content_factory="loops.resource.Document"
permission="zope.ManageContent"
/>
@ -156,9 +156,69 @@
label="Edit Document"
name="edit.html"
schema="loops.interfaces.IDocument"
fields="title body format"
for="loops.interfaces.IDocument"
permission="zope.ManageContent"
menu="zmi_views" title="Edit"
/>
<!-- view manager -->
<addform
label="Add View Manager"
name="AddLoopsViewManager.html"
schema="loops.interfaces.IViewManager"
content_factory="loops.view.ViewManager"
permission="zope.ManageContent"
/>
<addMenuItem
class="loops.view.ViewManager"
title="View Manager"
description="A view manager manages views, like nodes, menu items, ..."
permission="zope.ManageContent"
view="AddLoopsViewManager.html"
/>
<containerViews
for="loops.interfaces.IViewManager"
contents="zope.View"
add="zope.ManageContent"
/>
<!-- node -->
<containerViews
for="loops.interfaces.INode"
contents="zope.View"
add="zope.ManageContent"
/>
<addform
label="Add Node"
name="AddLoopsNode.html"
content_factory="loops.view.Node"
schema="loops.interfaces.INode"
fields="title description"
permission="zope.ManageContent"
/>
<addMenuItem
class="loops.view.Node"
title="Node"
description="A node provides access to concepts, possibly hierarchically organized"
permission="zope.ManageContent"
view="AddLoopsNode.html"
/>
<editform
label="Edit Node"
name="edit.html"
schema="loops.interfaces.INode"
fields="title description"
for="loops.interfaces.INode"
permission="zope.ManageContent"
menu="zmi_views" title="Edit"
/>
</configure>

View file

@ -122,6 +122,56 @@
</content>
<!-- view manager and view -->
<interface interface=".interfaces.IViewManager"
type="zope.app.content.interfaces.IContentType" />
<content class=".view.ViewManager">
<implements
interface="zope.app.annotation.interfaces.IAttributeAnnotatable" />
<factory id="loops.ViewManager"
description="View manager" />
<require
permission="zope.View"
interface="zope.app.container.interfaces.IReadContainer" />
<require
permission="zope.ManageContent"
interface="zope.app.container.interfaces.IWriteContainer" />
</content>
<interface
interface=".interfaces.INode"
type="zope.app.content.interfaces.IContentType" />
<content class=".view.Node">
<implements
interface="zope.app.annotation.interfaces.IAttributeAnnotatable" />
<factory
id="loops.Node"
description="Node" />
<require
permission="zope.View"
interface=".interfaces.INode" />
<require
permission="zope.ManageContent"
set_schema=".interfaces.INode" />
<require
permission="zope.View"
interface="zope.app.container.interfaces.IReadContainer" />
</content>
<!-- Register various browser related components, including all views -->
<include package=".browser" />

View file

@ -149,7 +149,7 @@ class IView(Interface):
"""
class INode(IContainer):
class INode(IView):
""" A node is a view that may contain other views, thus building a
menu or folder hierarchy.
"""

View file

@ -10,8 +10,11 @@ from zope.app.intid.interfaces import IIntIds
from interfaces import ILoops
from loops import Loops
from interfaces import IConcept, IConceptManager
from interfaces import IConcept, IConceptManager, IDocument, IResourceManager
from interfaces import INode, IViewManager
from loops.concept import Concept, ConceptManager
from loops.resource import Document, ResourceManager
from loops.view import Node, ViewManager
class Test(unittest.TestCase):
"Basic tests for the loops package."
@ -23,6 +26,14 @@ class Test(unittest.TestCase):
self.assert_(IConcept.providedBy(Concept()))
verifyClass(IConceptManager, ConceptManager)
self.assert_(IConceptManager.providedBy(ConceptManager()))
verifyClass(IDocument, Document)
self.assert_(IDocument.providedBy(Document()))
verifyClass(IResourceManager, ResourceManager)
self.assert_(IResourceManager.providedBy(ResourceManager()))
verifyClass(INode, Node)
self.assert_(INode.providedBy(Node()))
verifyClass(IViewManager, ViewManager)
self.assert_(IViewManager.providedBy(ViewManager()))
def test_suite():

68
view.py Normal file
View file

@ -0,0 +1,68 @@
#
# Copyright (c) 2005 Helmut Merz helmutm@cy55.de
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
"""
Definition of the View and related classses.
$Id$
"""
from zope.app import zapi
from zope.app.container.btree import BTreeContainer
from zope.app.container.contained import Contained
from zope.app.container.ordered import OrderedContainer
from zope.interface import implements
from persistent import Persistent
from interfaces import IView, INode
from interfaces import IViewManager, IViewManagerContained
from interfaces import ILoopsContained
class View(object):
implements(IView, IViewManagerContained)
_title = u''
def getTitle(self): return self._title
def setTitle(self, title): self._title = title
title = property(getTitle, setTitle)
_description = u''
def getDescription(self): return self._description
def setDescription(self, description): self._description = description
description = property(getDescription, setDescription)
def __init__(self, name=None, title=u''):
self.title = title
self.description = description
def getConcepts(self):
return []
class Node(OrderedContainer, View):
implements(INode)
class ViewManager(BTreeContainer):
implements(IViewManager, ILoopsContained)