Dolmen应用程序的布局和页面模型
项目描述
dolmen.app.layout 提供了现成的组件,以获得一个完全功能且高度可扩展的用户界面,用于Dolmen应用程序(见 dolmen.app.site)。
关于Dolmen
Dolmen是一个基于Grok和ZTK的应用程序开发框架,它还提供开箱即用的CMS(内容管理系统)。Dolmen的创建考虑了以下四个主要目标:易于扩展、坚固耐用且快速的内容类型开发、可读性和速度。
入门
我们导入测试所需的所有依赖项
>>> from dolmen import content >>> from grokcore.component import testing >>> from zope.site.hooks import getSite >>> from zope.component import getMultiAdapter >>> from zope.publisher.browser import TestRequest
我们导入API验证所需的所有内容
>>> from zope.interface import verify >>> from dolmen.app.layout import interfaces as API
我们定义并实例化一个上下文对象和一个请求,以便我们的测试可以进行
>>> class Mammoth(content.Content): ... content.name(u'Furry Mammoth') >>> testing.grok_component('mammoth', Mammoth) True >>> root = getSite() >>> root['manfred'] = Mammoth() >>> manfred = root['manfred'] >>> request = TestRequest()
全局接口
>>> from dolmen.app.layout import master>>> API.IGlobalUI.extends(API.IContentProviders) True>>> API.IGlobalUI.providedBy(master) True >>> verify.verifyObject(API.IGlobalUI, master) True
内容提供者
描述
>>> 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. Resources: Viewlet manager including resources.
布局
描述
>>> interfaceDescription(API.IGlobalUI) Master: Base layout using all the `IContentProviders` components to build a coherent yet overridable rendering.
上下文UI
>>> from dolmen.app.layout import viewlets>>> API.IContextualUI.providedBy(viewlets) True >>> verify.verifyObject(API.IContextualUI, viewlets) True
描述
>>> interfaceDescription(API.IContextualUI) ContextualActions: Viewlet rendering contextual actions. FlashMessages: Viewlet displaying site-wide messages.
视图组件
>>> from dolmen.app.layout import models
模型
模型是用于您自己的类的基类。 dolmen.app.layout 提供了一系列现成的模型
>>> API.IModels.providedBy(models) True >>> verify.verifyObject(API.IModels, models) True
描述
>>> interfaceDescription(API.IModels) Index: Page showing as default view on an object. Form: Generic page form. Page: Page embedded in a layout.
默认视图
dolmen.app.layout 默认注册了一些视图,以便您能够与您的 dolmen.content 对象和应用程序交互
>>> API.IBaseViews.providedBy(models) True >>> verify.verifyObject(API.IBaseViews, models) True
描述
>>> interfaceDescription(API.IBaseViews) Edit: Default edit form. Add: Default add form. DefaultView: Display form used as index. Delete: Default delete form.
查询
我们现在可以测试我们的默认视图是否被检索
>>> 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 ...>
添加表单略有不同,因为它依赖于添加视图(有关更多信息,请参阅 dolmen.forms.crud 和 dolmen.content)
>>> from dolmen.forms.crud import Adder >>> adding = Adder(root, request) >>> adding <dolmen.forms.crud.addview.Adder object at ...> >>> adding.traverse("dolmen.app.layout.Mammoth", None) <dolmen.app.layout.models.Add object at ...>
皮肤
dolmen.app.layout 提供了一个浏览器层和皮肤,用作您自定义皮肤的基组件。
>>> from dolmen.app.layout import skin >>> API.ISkin.providedBy(skin) True >>> verify.verifyObject(API.ISkin, skin) True
描述
>>> 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. Resource: Viewlet component used to include resources
致谢
所有 Dolmen 软件包均由 NPAI (http://www.npai.fr) 赞助。
变更日志
1.0 (未发布)
更新为使用 grokcore.layout 而不是 megrok.layout。
1.0b2 (2011-02-01)
更新了依赖关系,以移除对 megrok.resource 的使用,转而使用 fanstatic。
1.0b1 (2010-11-16)
上下文菜单视图现在使用条目的 'url' 属性来计算 URL,就像它应该做的那样。
1.0a2 (2010-11-05)
依赖关系已简化:现在 dolmen.app.layout 不再提供对 megrok.z3ctable 和 zeam.form.composed 软件包的支持。我们现在依赖 grokcore 软件包,而不是 grok 软件包本身。
测试不再使用 zope.testing。
1.0a1 (2010-06-03)
闪存消息现在是通过 grokcore.message 获取的。
测试已被纠正和简化。
现在使用 zeam.form 而不是 z3c.form。
现在使用 dolmen.menu 而不是 megrok.menu。
dolmen.app.layout 现在需要 python2.6 才能运行。这是由于使用了类装饰器。
0.5.1 (2010-02-26)
更正了 Delete 表单的成功消息获取器。它以前会获取属性对象并尝试持久化它。现在,它以正确的方式获取其值。
0.5.0 (2010-02-25)
现在使用最新的 megrok.layout。这消除了对 ApplicationAwareView 混合类的需求。这个版本的 dolmen.app.layout 将仅与 Grok >= 1.1rc1 一起工作。
0.4.0 (2010-02-17)
INotFound 错误不再位于 index.html 视图中。这允许使用透明布局。__parent__ 被设置为 INotFound 对象的 ob 属性。
上下文菜单不再仅限于 IBaseContent 对象。现在它注册为 Interface。
通过移除所有 zope.app 软件包,依赖关系已大大减少。
0.3.1 (2010-01-21)
错误修复:删除表单的成功消息是一个属性,不能直接通过类调用。我们需要使用 fget。
0.3 (2009-12-26)
布局现在提供并使用了一种包含资源的方法,使用 megrok.resourceviewlet。为此添加了两个组件:分别为 ResourcesManager 和 Resource,分别是一个视图管理器和视图基类。
导入了修改以避免使用任何 zope.app 软件包。
0.2.2 (2009-11-03)
现在 configure.zcml 包含 megrok.z3ctable meta.zcml。
更新了 setup.py 中的依赖关系。
0.2.1 (2009-11-02)
更正了删除表单中的闪存消息和重定向。
0.2 (2009-11-02)
添加了删除表单以完成 CRUD 操作。
0.1 (2009-11-02)
初始发布