dolmen.app.layout 0.2.2
Layout and page models for Dolmen applications
Latest Version: 1.0b2
dolmen.app.layout provides ready-to-use components to get a fully functional and extensively pluggable User Interface for a Dolmen application (see dolmen.app.site).
About Dolmen
Dolmen is an application development framework based on Grok and ZTK which also provides a CMS (Content Management System) out of the box. Dolmen is being made with four main objectives in mind: easily pluggable, rock solid and fast content type development, readability and speed.
Getting started
We import all the needed dependencies of the tests:
>>> import grok >>> from dolmen.content import Content >>> from zope.component import getMultiAdapter >>> from zope.publisher.browser import TestRequest
We import everything needed for the API verification:
>>> from zope.interface import verify >>> from dolmen.app.layout import interfaces as API
We define and intanciate a Context object and a request for our tests to come:
>>> class Mammoth(Content):
... grok.name('Furry Mammoth')
>>> grok.testing.grok_component('mammoth', Mammoth)
True
>>> root = getRootFolder()
>>> root['manfred'] = Mammoth()
>>> manfred = root['manfred']
>>> request = TestRequest()
Global interface
>>> from dolmen.app.layout import master>>> API.IGlobalUI.extends(API.IContentProviders) True>>> API.IGlobalUI.providedBy(master) True >>> verify.verifyObject(API.IGlobalUI, master) True
Content providers
Description
>>> for name, attr in API.IContentProviders.namesAndDescriptions(): ... print "%s: %s" % (name, attr.getDoc()) Footer: Viewlet manager for the bottom part of the body. AboveBody: Viewlet manager located above the main content. BelowBody: Viewlet manager located below the main content. Header: Viewlet manager involved in rendering the HTML head. Top: Viewlet manager for the top part of the body.
Layout
Description
>>> interfaceDescription(API.IGlobalUI) Master: Base layout using all the `IContentProviders` components to build a coherent yet overridable rendering.
Contextual UI
>>> from dolmen.app.layout import viewlets>>> API.IContextualUI.providedBy(viewlets) True >>> verify.verifyObject(API.IContextualUI, viewlets) True
Description
>>> interfaceDescription(API.IContextualUI) ContextualActions: Viewlet rendering contextual actions. FlashMessages: Viewlet displaying site-wide messages.
View components
>>> from dolmen.app.layout import models
Models
Models are base classes to be used in your own classes. dolmen.app.layout provides a collections of ready-to-use models:
>>> API.IModels.providedBy(models) True >>> verify.verifyObject(API.IModels, models) True
Description
>>> interfaceDescription(API.IModels) Index: Page showing as default view on an object. Form: Generic page form. SubForm: Generic sub-form, used in composed forms. TablePage: Page displaying a table. Page: Page embedded in a layout.
All the models are megrok.layout.IPage components, allowing them to render inside a layout:
>>> from megrok.layout import IPage >>> for name in list(API.IModels): ... model = getattr(models, name) ... print "%s:\t%s" % (name, IPage.implementedBy(model)) Index: True SubForm: True TablePage: True Page: True Form: True
Default views
dolmen.app.layout registers some views, out-of-the-box, to allow you to interact with your dolmen.content objects and your application:
>>> API.IBaseViews.providedBy(models) True >>> verify.verifyObject(API.IBaseViews, models) True
Description
>>> interfaceDescription(API.IBaseViews) Edit: Default edit form. Add: Default add form. DefaultView: Display form used as index. Delete: Default delete form.
Query
We can now test to see if our default views are retrieved:
>>> view = getMultiAdapter((manfred, request), name="index") >>> view <dolmen.app.layout.models.DefaultView object at ...> >>> edit = getMultiAdapter((manfred, request), name="edit") >>> edit <dolmen.app.layout.models.Edit object at ...>
The add form is a bit different, as it relies on an adding view (see dolmen.forms.crud and dolmen.content for more information):
>>> from dolmen.forms.crud import Adder
>>> adding = Adder(root, request)
>>> adding
<dolmen.forms.crud.addview.Adder object at ...>
>>> adding.traverse("dolmen.app.layout.ftests.Mammoth", None)
<dolmen.app.layout.models.Add object at ...>
Skins
dolmen.app.layout provides a browser layer and a skin, to serve as a base component for your own skins:
>>> from dolmen.app.layout import skin >>> API.ISkin.providedBy(skin) True >>> verify.verifyObject(API.ISkin, skin) True
Description
>>> interfaceDescription(API.ISkin) IBaseSkin: Skin providing the IBaseLayer. Can be applied directly or inherited. IBaseLayer: Layer used to register all the Dolmen centric view components.
Form compatibility
>>> from megrok.z3cform.base import IFormLayer >>> skin.IBaseLayer.extends(IFormLayer) True
Credits
All Dolmen packages are sponsorised by NPAI (http://www.npai.fr)
Changelog
0.2.2 (2009-11-03)
- Now the configure.zcml includes the megrok.z3ctable meta.zcml.
- Updated dependencies in setup.py
0.2.1 (2009-11-02)
- Corrected flash messages and redirection in the delete form.
0.2 (2009-11-02)
- Added Delete form to complete the CRUD actions.
0.1 (2009-11-02)
- Initial release
| File | Type | Py Version | Uploaded on | Size | # downloads |
|---|---|---|---|---|---|
| dolmen.app.layout-0.2.2.tar.gz (md5) | Source | 2009-11-03 | 10KB | 365 | |
- Author: Souheil Chelfouh
- Home Page: http://gitweb.dolmen-project.org/
- Keywords: Grok Zope3 CMS Dolmen
- License: GPL
- Platform: Any
- Categories
- Package Index Owner: trollfot
- DOAP record: dolmen.app.layout-0.2.2.xml
