用于定义下拉列表配置字符串的zcml指令
tau.selectorstrings的Python项目详细描述
τ选择器字符串
简介
此组件分布的目的是双重的;提供有用的 配置要在下拉列表中显示的字符串集群的方法,以及 教别人如何创建新的zcml指令。代码已经 仔细记录以明确其工作原理。
我对选择器字符串的需求来自于我正在设计的另一个组件 将各种文件的集合显示为zope文件夹。我想允许 使用zmi添加此文档文件夹实例的开发人员 (zope管理界面),从目录列表中选择。我没有 希望他们能够进入任意目录,部分原因是为了安全 预防和部分防止打字错误。
这导致了以下zcml指令:
<selectorstring cluster="sitedocs" label="Public Documents" value="/usr/share/public/" /> <selectorstring cluster="sitedocs" label="Family Photos" value="/home/jeff/photos/" />
您可以使用相同或不同的集群名称和 字符串将作为该集群名称下的zope词汇表提供。
一个缺点是每个这样的简单指令都重复集群名称 反复。所以接下来我创建了一个复杂的(嵌套的)指令来将 群集名称:
<selectorcluster name="sitedocs"> <selectorstring label="Public Documents" value="/usr/share/public/" /> <selectorstring label="Family Photos" value="/home/jeff/photos/" /> </selectorcluster>
获取开发版本
除了pypi下载之外,这个 组件通过其project on Github可用。
创建新zcml指令的步骤
zcml指令有两种类型,简单和复杂。简单的指令 独立的,但复杂的支持通过包含一个或多个 其他zcml指令。
一个新的zcml指令,不管是简单的还是复杂的,由四个 件数:
- its name
- the namespace it belongs to
- the schema
- its directive handler
把这些联系在一起的部分是 of)在meta.zcml文件中的指令:
<meta:directive name="selectorstring" schema=".interfaces.ISelectorStringDirective" handler=".zcml_directives.selectorstring_SimpleDirectiveHandler" />
它负责声明新指令的名称并放置 在“zope”名称空间中命名。它本可以把它放进“浏览器” 命名空间或其他有组织意义的空间。
声明复杂类型的指令:
<meta:complexDirective name="selectorcluster" schema=".interfaces.ISelectorClusterDirective" handler=".zcml_directives.selectorcluster_ComplexDirectiveHandler" > <meta:subdirective name="selectorstring" schema=".interfaces.ISelectorStringSubdirective" /> </meta:complexDirective>
使用zcml指令
像任何zcml指令一样,将其放入configure.zcml文件或其他一些文件中 文件包括顶级配置文件site.zcml:
<configure xmlns="http://namespaces.zope.org/zope"> <selectorstring cluster="sitedocs" label="Public Documents" value="/usr/share/public/" /> </configure>
将新指令连接到zope2
在识别指令之前,必须确保其定义 在其meta.zcml中,包含在顶级site.zcml文件中。 这是通过将 zope2\u实例部分如下:
zcml += tau.selectorstrings-meta
这会导致plone.recipe.zope2instance配方创建一个“slug”文件 在你的parts/Zope2_instance/etc/package-includes/下什么都不做 但是包括你的tau/selectorstrings/meta.zcml文件。这包括 由于以下指令自动放入 etc/site.zcml配方文件:
<include files="package-includes/*-meta.zcml" />
更改
版本0.1dev(2010-12-21)
- 初始版本