Dolmen ContentType Extension:Document
menhir.contenttype.document的Python项目详细描述
menhir.contenttype.document为
Dolmen
基于Grok
的应用程序。此文档类型有一个字段
允许所见即所得版本,并为全文搜索建立索引。
模式
此外,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
文本字段称为“正文”,因为它是文档的正文文本:
>>> for attr, doc in IDocument.namesAndDescriptions(): ... print attr, ':', doc body : <zope.schema...Text object at ...>
工厂
为了创建Document
内容,当前用户必须
被授予dolmen.content.Add
权限,从
dolmen.app.security包:
>>> from dolmen.content import require >>> require.bind().get(Document) 'dolmen.content.Add'
表格
所见即所得小部件由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>
指数化
使用ISearchableText
对Document
进行全文索引。
适配器:
>>> 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)
- 更新为使用^{tt7}中的
IDescriptiveContent
$ 而不是dolmen.content中的IBaseContent
存在:文档现在除了^之外还有^ {< CD13> }属性title
。这种变化在索引器中得到了响应。 - 更新的依赖项。
0.1(2010-07-20)
- 初始版本