Plone网站设置向导,包含内容创建和预设配置的包系统。
项目描述
ftw.inflator
本包帮助预定义Plone站点的设置,包括内容创建(使用通用设置)、定义多个包和安装新站点时使用包的向导。
特性
一个简化的站点设置向导。该向导可以自定义和品牌化。
用于定义设置配置中变体的包系统。
一个通用的设置站点创建导入步骤,可以在包中用于创建初始内容。它可以在不使用设置向导和包系统的情况下使用。
安装
将ftw.inflator添加到您的buildout配置中
[instance]
eggs +=
ftw.inflator
Dexterity支持
要创建dexterity对象(内容创建),请安装dexterity附加组件
[instance]
eggs +=
ftw.inflator [dexterity]
兼容性
Plone 4.3
Plone 5.1
设置向导
在Zope应用的manage_main视图中,有一个额外的按钮用于安装您的产品。它将引导到站点设置向导,其中可以选择ID和包。
设置向导允许从一组预定义的包中选择一个。请参阅包部分,了解如何定义包的详细信息。
向导自定义
产品名称和标志可以轻松通过ZCML自定义
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:inflator="http://namespaces.zope.org/inflator"
i18n_domain="my.package">
<include package="ftw.inflator" file="meta.zcml" />
<inflator:customize
product="Product Name"
image="resources/product-logo.png"
/>
</configure>
包系统
包定义了一个在创建新Plone站点时自动应用的一系列配置文件。
它有一个基础配置文件(默认为Plone默认基础配置文件,没有默认内容)。
定义包
包在ZCML中定义
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:inflator="http://namespaces.zope.org/inflator"
i18n_domain="my.package">
<include package="ftw.inflator" file="meta.zcml" />
<inflator:bundle
title="ftw.inflator example bundle one"
profiles="plonetheme.sunburst:default
my.policy:default
my.policy:init-content"
/>
</configure>
ZCML属性
- 标题
包的(可翻译)标题,在设置向导中显示。
- 配置文件
一个或多个通用设置配置文件(没有profile-前缀)。
- 描述(可选)
包的描述,在设置向导中显示。
- 基础(可选)
创建Plone站点的通用设置基础配置文件。默认为Products.CMFPlone:plone,默认的Plone基础配置文件,没有内容创建。使用Products.CMFPlone:plone-content将生成默认示例内容。
- 标准(可选)
通过使用标准标志(standard="True")您可以定义产品包。在稍后注册自定义包而没有标记为标准的情况下,它们将在设置向导中出现在标准包之上,并且顶部被选中。
完整的ZCML示例
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:inflator="http://namespaces.zope.org/inflator"
i18n_domain="ftw.inflator">
<include package="ftw.inflator" file="meta.zcml" />
<inflator:bundle
title="MyProduct with sunburst"
description="Installs MyProduct with the sunburst theme and plone default content"
profiles="plonetheme.sunburst:default
my.product:default"
base="Products.CMFPlone:plone-content"
standard="True"
/>
</configure>
设置语言
当使用默认添加站点视图安装Plone站点时,语言在Products.CMFPlone:plone-content中设置,它还创建示例内容。这使得在没有创建示例内容的情况下设置语言变得困难。
为了解决此问题,ftw.inflator提供了一个ftw.inflator:setup-language通用设置配置文件,旨在在设置包时使用。您可以将它添加到包配置文件列表中。这将把Plone站点的语言设置为设置向导中选择的语言。不建议将其用作依赖项(在metadata.xml中),因为它不打算用于现有的Plone站点。
在包定义中的示例用法
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:inflator="http://namespaces.zope.org/inflator"
i18n_domain="my.package">
<include package="ftw.inflator" file="meta.zcml" />
<inflator:bundle
title="ftw.inflator example bundle one"
profiles="ftw.inflator:setup-language
my.policy:default"
/>
</configure>
内容创建
内容创建允许在任意通用设置配置文件夹中定义一个 content_creation 文件夹,其中包含定义要创建的内容的 JSON 文件。当应用通用设置配置时,将创建内容。
内容创建特性
基于 JSON 的定义
支持树结构
字符串国际化
构造任何架构原型的 FTIs 实例
添加文件和图像字段
创建主题标准
在创建时执行工作流转换
创建有地域性的工作流策略
设置属性
设置约束类型
设置每个对象提供的接口
重新索引目录
定义并锁定本地角色
结构
将一个 content_creation 文件夹添加到您的通用设置配置中。所有内容创建配置都在此文件夹中。您可以添加任意多的 *.json-文件 - 它们将被按排序文件名的顺序读取和执行(使用整数前缀排序它们很容易)。
文件夹创建示例
要创建内容,创建一个 JSON 文件(例如 profiles/default/content_creation/01-foo-folder.json),并插入一个 JSON 语法列表的哈希(字典)。每个哈希创建一个新对象。例如,在 /Plone/foo 创建一个标题为“Foo”的文件夹
[
{
"_path": "foo",
"_type": "Folder",
"title": "Foo"
}
]
树形结构示例
对于嵌套结构,有时定义 JSON 为树很有用。使用树结构,不需要重复父路径
[
{
"_path": "foo",
"_type": "Folder",
"title": "Foo",
"_children": [
{
"_id": "bar",
"_type": "Folder",
"title": "Bar"
},
{
"_path": "bar/qux",
"_type": "Folder",
"title": "Bar"
}
]
}
]
请确保根节点有一个 _path,并且 _children 列表中的所有节点都有一个 _id 或一个 _path。子节点 _path 被认为是相对于父节点的相对路径。然后路径将自动连接。
国际化
使用 key:translate(domain) 语法在键中,相应的字符串值将被翻译成 Plone 网站当前默认语言。在安装带有填充器的包并创建内容时,请确保在创建内容之前安装通用设置配置 ftw.inflator:setup-language。这将确保语言配置正确。
示例
[
{
"_path": "foo",
"_type": "Folder",
"title:translate(my.domain)": "Foo",
"_children": [
{
"_id:translate(my.domain)": "bar",
"_type": "Folder",
"title": "Bar"
}
]
}
]
多语言支持
当安装 plone.app.multilingual 时,可以为每种语言生成翻译内容。翻译基于 key:translate(domain) 语法(见上文)并可以在常规 .po 文件中翻译。
示例
[
{"_multilingual": [
"en",
"de"],
"_contents": [
{
"_id": "foo",
"_type": "Folder",
"title:translate(my.domain)": "Foo"
}
]}
]
确保“_multilingual”列表中的每种语言已在 portal_languages.xml 中配置为受支持的语言
<?xml version="1.0"?>
<object>
<default_language value="en"/>
<supported_langs>
<element value="en"/>
<element value="de"/>
</supported_langs>
</object>
使用 plone.app.multilingual 的默认设置来设置语言文件夹。
plone.app.multilingual 使用特殊的门户类型作为语言根文件夹和语言无关文件夹。有时使用自定义门户类型作为根和语言无关文件夹很有用。您可以通过 _folder_type 和 _folder_type_language_independent 属性选择自定义类型
[
{"_multilingual": [
"en",
"de"],
"_folder_type": "my.custom.type",
"_folder_type_language_independent": "my.custom.type",
"_contents": []
}
]
创建/设置属性
属性可以轻松创建。如果已经存在属性(因为对象已经存在),它将被更新。
示例
[
{
"_path": "foo",
"_type": "Folder",
"title": "Foo",
"_properties": {
"layout": ["string", "folder_listing_view"]
}
}
]
配置约束类型
要配置文件夹上的可添加类型,请使用 _constrain_types 关键字
[
{
"_path": "foo",
"_type": "Folder",
"title": "Foo",
"_constrain_types": {
"locally": ["Folder", "Document"],
"immediately": ["Folder"]
}
}
]
提供附加接口
通过传递 _interfaces 中的点分名称列表,这些接口将被自动提供(alsoProvides)由创建的对象
[
{
"_path": "foo",
"_type": "Folder",
"title": "Foo",
"_interfaces": [
"ftw.inflator.tests.interfaces.IFoo",
"remove:foo.bar.interfaces.IBar"
]
}
]
通过在点分名称前加上 remove:,可以直接提供的接口被删除(noLongerProvides)。
文件和图像
使用 :file 后缀可以轻松填充文件和图像字段,提供指向要“上传”的文件的相对路径
[
{
"_path": "files/example-file",
"_type": "File",
"title": "example file",
"file:file": "files/examplefile.txt"
}
]
可以更改文件名(尽管这不适用于同一 Dexterity 项目上的多个文件)
[
{
"_path": "files/example-file",
"_type": "File",
"title": "example file",
"file:file": "files/lkdfahjkewrhiu.txt",
"file:filename": "important.txt"
}
]
工作流转换
使用 _transitions 关键字,可以在内容创建时执行工作流转换
[
{
"_path": "foo",
"_type": "Folder",
"title": "Foo",
"_transitions": "publish"
}
]
位置性工作流策略
当安装了有地域性的工作流策略时,可以使用 _placefulworkflow 关键字在文件夹上激活它们
[
{
"_path": "intranet",
"_type": "Folder",
"title": "Intranet",
"_placefulworkflow": ["intranet", "intranet"]
}
]
您需要安装通用设置配置文件 Products.CMFPlacefulWorkflow:CMFPlacefulWorkflow 以使用区域化工作流策略。
注释
使用 _annotations,可以在对象上设置简单的注释。类型为 dict 的值被转换为 PersistentMapping,类型为 list 的值递归转换为 PersistentList。示例
[
{
"_path": "intranet",
"_type": "Folder",
"title": "Intranet",
"_annotations": {"foo": {"bar": [1, 2, 3]}}
}
]
部件
可以通过使用 _portlets 键轻松定义小部件,预期为字典(portlet_manager : 配置)。可以定义上下文小部件分配(assignments)并设置继承设置(blacklist_status)。
[
{
"_path": "foo",
"_type": "MyType",
"title": "Foo",
"_portlets": {
"plone.leftcolumn": {
"blacklist_status": {
"context": "block",
"user": "show",
"group": "acquire"
},
"assignments": [
{"id": "new_navigation",
"portlet_type": "portlets.Navigation",
"name": "New Navigation",
"bottomLevel": 0,
"includeTop": false,
"topLevel": 1}
]
}
}
}
]
UUID查找
有时您需要另一个对象的 UUID。由于 UUID 在创建对象时随机生成,因此您无法在 .json 文件中预测它。UUID 查找在这里帮您解决这个问题
[
{
"_path": "foo",
"_type": "MyType",
"title": "Foo",
"relations": "resolveUUID::bar"
}
]
使用 resolveUUID::path 语法,值被替换为具有 path 的对象的 UUID。您可以在值前加一个 / 使其相对于站点根目录,否则它相对于定义在其中的项(例如上面的示例中的“Foo”)。
路径查找
有时您需要通过路径解析已创建的对象。resolve-path 部分在这里帮您解决这个问题
[
{
"_path": "foo",
"_type": "MyType",
"title": "Foo",
"relations": "resolvePath::bar"
}
]
使用 resolvePath::path 语法,值被替换为解析后的对象。您可以在值前加一个 / 使其相对于站点根目录,否则它相对于定义在其中的项(例如上面的示例中的“Foo”)。
本地角色示例
您可以按照以下方式配置本地角色和阻止本地角色
[
{
"_path": "foo",
"_type": "MyType",
"title": "Foo",
"_ac_local_roles": {
"admin": [
"Owner"
]
},
"_block-local-roles": true
}
]
有关详细信息,请参阅: https://collectivejsonmigrator.readthedocs.io/en/latest/ac_local_roles.html
导入单个项目
导入器配置的 transmogrifier 配置可以在代码中使用 single_item_content_creation 配置来导入单个项
item = {'_path': 'foo',
'_type': 'Folder',
'title': 'Foo'}
mogrifier = Transmogrifier(portal)
mogrifier(u'ftw.inflator.creation.single_item_content_creation',
jsonsource=dict(item=item))
链接
版权
本软件包由 4teamwork 版权所有。
ftw.inflator 根据 GNU 通用公共许可证,版本 2 许可。
变更日志
1.12.1 (2019-11-26)
删除旧通用设置依赖项 Products.PloneLanguageTool。[jone]
修复 ftw.testing >= 2.0 的测试。[buchi]
1.12.0 (2019-11-08)
用 collective.jsonmigrator 替换已停止使用的 collective.blueprint.jsonmigrator。[djowett-ftw]
1.11.0 (2019-06-13)
实现覆盖默认 plone.app.multilingual 根和语言无关文件夹类型的能力。[elioschmutz]
修复 Plone 4 与 plone.app.multilingual 2.x 的兼容性,这应该是新 Plone 4 项目的默认值。[elioschmutz]
1.10.0 (2019-03-19)
Plone 5.1 兼容性 [mathias.leimgruber, jone, busykoala, njohner]
停止支持 Plone 4.2。[busykoala]
1.9.0 (2018-05-14)
添加小部件更新器部分,允许创建小部件。[phgross]
1.8.1 (2016-08-12)
修复 Plone 5 中的多语言导入错误。[Guido A.J. Stevens]
1.8.0 (2016-05-20)
即使已经安装了站点,也显示安装按钮。[raphael-s]
停止支持 Plone 4.1。[jone]
使“:filename”键后缀更改文件名。[jone]
1.7.0 (2016-03-15)
内容创建:记录进度。[jone]
1.6.0 (2016-03-04)
修复多语言导入错误。[elioschmutz]
添加创建单个项的 transmogrifier 配置。[jone]
1.5 (2015-04-22)
使用 ftw.profilehook 而不是自定义导入步骤(setuphandlers)。[jone]
添加解析路径的对象部分。[deiferni]
1.4 (2014-06-05)
添加本地角色定义和阻止本地角色。[phgross, deif]
1.3.2 (2014-03-10)
将相对路径支持添加到初始内容子节点。[deif]
1.3.1 (2014-01-27)
添加对 dexterity 文件创建的支持。[deif]
1.3.0 (2014-01-21)
实现设置多语言根文件夹属性的支持。[deif]
1.2.1 (2014-01-16)
修复未解决的泛型设置导入步骤依赖。只有当安装了plone.app.multilingual时,“languagetool”才可用。[jone]
1.2 (2013-12-11)
实现内容创建的plone.app.multilingual支持。[jone]
1.1.2 (2013-05-30)
确保在应用我们的补丁之前应用Products.CMFPlone ZMI补丁。[jone]
1.1.1 (2013-05-24)
支持将UTF-8编码的字符串作为:translate()的值。[treinhard]
1.1 (2013-02-27)
实现UUID查找。[jone]
将Dexterity支持添加到内容创建中。使用ftw.inflator[dexterity]附加组件。[jone]
在创建类型之后运行内容创建。[jone]
将网站创建移动到包类中,这样就可以在不使用视图的情况下创建带有包的网站。这对于测试或自动化设置很有用。[jone]
使用key:translate(domain)键语法支持国际化。[jone]
添加对嵌套树结构的支持。[jone]
1.0.1 (2013-02-13)
修复不良页面模板表达式。[jone]
1.0 (2013-02-13)
初始实现。[jone]
项目详情
ftw.inflator-1.12.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 534113d74fbe4c7bd65d3005d7c7c15343f2eb4cdfb2905690785ee9df618d8b |
|
MD5 | 6c8b10b770f6c5e04c7adcd6b90253c2 |
|
BLAKE2b-256 | 3574300692926788a0cb3d2c4640560c3d24a9818c4d772903af9e7792918472 |