跳转到主要内容

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.cruddolmen.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.z3ctablezeam.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。为此添加了两个组件:分别为 ResourcesManagerResource,分别是一个视图管理器和视图基类。

  • 导入了修改以避免使用任何 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)

  • 初始发布

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源分发

dolmen.app.layout-1.0.tar.gz (13.9 kB 查看散列)

上传于 源代码

由以下支持