跳转到主要内容

石圈内容类型扩展:文档

项目描述

menhir.contenttype.document 为基于 DolmenGrok 的应用程序提供以文本为中心的内容。此文档类型有一个允许WYSIWYG编辑的字段,并自动索引以进行全文搜索。

模式

一个 Document 有一个专门的模式定义一个文本字段,除此之外还有基本的 IDescriptiveSchema

>>> from dolmen.app.content import IDescriptiveSchema
>>> from menhir.contenttype.document import IDocument

>>> IDocument.isOrExtends(IDescriptiveSchema)
True

>>> from dolmen.content import schema
>>> from menhir.contenttype.document import Document

>>> IDocument in schema.bind().get(Document)
True

文本字段称为“body”,因为它代表文档的主体文本

>>> for attr, doc in IDocument.namesAndDescriptions():
...   print attr, ':', doc
body : <zope.schema...Text object at ...>

工厂

为了创建一个 Document 内容,当前用户必须从 dolmen.app.security 包中授予 dolmen.content.Add 权限

>>> from dolmen.content import require
>>> require.bind().get(Document)
'dolmen.content.Add'

表单

WYSIWYG小部件由 dolmen.widget.tinymce 提供,使用javascript库TinyMCE和jQuery。添加表单和编辑表单将显示小部件,因为 menhir.contenttype.document 提供了一个 FieldsCustomizer 适配器(请参阅 dolmen.forms.crud 文档)

>>> from dolmen.forms.crud import Edit
>>> mydoc = Document(title=u'Some title', body=u"Some body")

>>> from zope.publisher.browser import TestRequest
>>> request = TestRequest()

>>> editform = Edit(mydoc, request)
>>> editform.update()

>>> editform.fields['body'].mode
<Marker TINYMCE.INPUT>

索引

一个 Document 使用一个 ISearchableText 适配器进行全文索引

>>> from zope.index.text.interfaces import ISearchableText
>>> indexer = ISearchableText(mydoc)
>>> indexer.getSearchableText()
(u'Some title', u'', u'Some body\n\n')

>>> mydoc.body = u'<p>Rich content comes in <strong>HTML</strong></p>'
>>> indexer.getSearchableText()
(u'Some title', u'', u'Rich content comes in **HTML**\n\n')

>>> mydoc.description = u"I'm described"
>>> indexer.getSearchableText()
(u'Some title', u"I'm described", u'Rich content comes in **HTML**\n\n')

视图

一个 Document 有自己的索引视图,允许它以简单的方式渲染,而不使用默认字段名称(请参阅 dolmen.forms.crud

>>> from zope.component import getMultiAdapter
>>> view = getMultiAdapter((mydoc, request), name='index')

>>> from dolmen.app.layout import Page
>>> isinstance(view, Page)
True

>>> print view.content()
<div class="document">
  <h1>Some title</h1>
  <p>Rich content comes in <strong>HTML</strong></p>
</div>

变更日志

0.2 (2011-02-14)

  • 更新为使用来自 dolmen.app.contentIDescriptiveContent,而不是来自已不存在的 dolmen.contentIBaseContent:现在文档除了 标题 外还有一个 描述 属性。此更改已在索引器中得到反映。

  • 更新了依赖项。

0.1 (2010-07-20)

  • 首次发布

项目详情


下载文件

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

源分布

menhir.contenttype.document-0.2.tar.gz (5.5 kB 查看哈希值)

上传时间

由以下组织支持