YAFOWIL与Plone集成
项目描述
这是 Plone 集成,用于 YAFOWIL
功能
通过 GenericSetup 集成资源
插件小部件可能提供自定义的 JavaScript、CSS、图片等。
此软件包将包含这些资产的目录注册为资源目录。因此,可以从网络浏览器访问它们。注册模式为 ++resource++MODULENAME/...。
“YAFOWIL 表单库” GS 配置文件将 CSS 和 JavaScript 注册表中所有与所谓的“资源组”相关的资源注册。
必须显式启用(!)这些资源组。资源组配置通过门户注册表进行。
您需要提供一个包含 registry.xml 的通用设置配置文件,其中包含资源组的配置,例如。
<!-- yafowil.widget.array --> <record name="yafowil.widget.array.common"> <field type="plone.registry.field.Bool"> <title>Array widget common resources</title> </field> <value>True</value> </record>
记录 name 映射到资源组名称。
查看 yafowil.plone:profiles/demoresources 配置文件的 registry.xml 获取更多示例,或者考虑在插件小部件中引用的资源提供代码,通常包含在 __init__.py 软件包中,以获取可用的资源组。
与翻译的集成
该软件包为 Zope2 i18n 消息添加了一个翻译方法。它是通过定义一个全局预处理器来添加的
请求包装器
此软件包为 YAFOWIL 注册了一个全局预处理器。它通过自己的请求实例包装 Zope2 请求,提供 YAFOWIL 期望的行为。特殊行为
Zope2 提供的文件上传作为 ZPublisher.HTTPRequest.Fileupload 对象是转换为具有以下键的字典
- 文件
从读取数据的文件类似对象
- 文件名
上传的提交名称
- mimetype
上传的类型
- 头部
所有头部
- 原始
保留原始 ZPublisher.HTTPRequest.Fileupload 对象
基础表单
此软件包附带要扩展的基础表单。
以下表单基础类可用
- yafowil.plone.form.BaseForm
未定义 `__call__` 方法:在 ZCML 中定义一个模板或 `__call__` 方法。它提供了一个名为 `render_form` 的方法,该方法处理并渲染表单。
- yafowil.plone.form.Form
在 __call__ 上渲染裸表单。
- yafowil.plone.form.YAMLBaseForm
类似于上面的 BaseForm。期望 form_template 属性指向 YAML 文件和 message_factory 提供用于 YAML 消息字符串的消息工厂。
- yafowil.plone.form.YAMLForm
类似于 YAMLBaseForm 在 __call__ 上渲染裸 YAML 表单。
具体实现可能如下所示
>>> from yafowil.base import factory >>> from yafowil.plone.form import Form >>> class MyForm(Form): ... action_resource = '@@view_name_callable_by_browser' ... ... def prepare(self): ... form = factory( ... 'form', ... name='myform', ... props={ ... 'action': self.form_action, ... }) ... ... # form widgets creation here... ... ... self.form = form
创建 YAML 表单的便利性
>>> from zope.i18nmessageid import MessageFactory >>> from yafowil.plone.form import YAMLBaseForm >>> class MyYAMLForm(YAMLBaseForm): ... action_resource = '@@view_name_callable_by_browser' ... form_template = 'package.name:forms/myform.yaml' ... message_factory = MessageFactory('package.name')
表单类从 Products.Five.BrowserPage 继承,因此它们必须通过 ZCML browser:page 指令注册
<browser:page for="*" name="form_registration_name" class=".forms.MyYAMLForm" template="myyamlform.pt" permission="cmf.ModifyPortalContent" />
使用此基本表单类构建的表单需要模板才能将其插入布局中。它必须在包装模板 `myform.yaml` 中调用。
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" xmlns:tal="http://xml.zope.org/namespaces/tal" xmlns:metal="http://xml.zope.org/namespaces/metal" xmlns:i18n="http://xml.zope.org/namespaces/i18n" lang="en" metal:use-macro="context/main_template/macros/master" i18n:domain="package.name"> <body> <metal:content-core fill-slot="content-core"> <metal:block define-macro="content-core"> <tal:form replace="structure view/render_form" /> </metal:block> </metal:content-core> </body> </html>
在Plone 5.x中,如果不使用BaseForms之一,YAFOWIL的CSS/JS资源将不会自动加载。
为了加载它,请添加以下行
from Products.CMFPlone.resources import add_bundle_on_request ... class MyViewWithYafowil(BrowserView): def __init__(self, context, request): super(MyViewWithYafowil, self).__init__(context, request) add_bundle_on_request(request, 'yafowil')
详细文档
如果您想深入了解:详细的YAFOWIL文档可在 http://yafowil.info 获取。阅读它并学习如何使用YAFOWIL创建示例应用程序。
源代码
源代码位于一个GIT DVCS中,其主要分支位于 github。
贡献者
Jens W. Klein <jens [at] bluedynamics [dot] com>
Peter Holzer <hpeter [at] agitator [dot] com>
Benjamin Stefaner <bs [at] kleinundpartner [dot] at>
Robert Niederreiter <rnix [at] squarewave [dot] at>
历史
3.0.0 (2019-02-19)
在YAFOWIL页面上显式添加资源。不要在每次请求时提供CSS/JS块。没有使用 yafowil.plone.form.* 作为基类的yafoil代码需要最小修改。请参阅README。[jensens]
在查找回退根密钥管理器时,在 CSRFProtectionBehavior 中使用 self.context 而不是 context。[rnix]
以 plone.stableResource 的形式提供资源,以便在浏览器中缓存JS/CSS。[jensens]
Python 3支持:[reinhardt]
替换了UserDict
替换了旧式的相对导入
修复了StringIO导入
修复了文本处理
按请求提供jqueryui,并取消对collective.js.jqueryui的依赖。[agitator]
2.4.1 (2017-03-10)
在加载时减少日志记录的详细程度,从info降低到debug。[jensens]
2.4.0 (2017-03-10)
引入 yafowil.plone.form.CSRFProtectionBehavior。[rnix]
2.3.1 (2016-09-14)
修复yafowil依赖的最小版本。[jensens]
2.3 (2016-09-09)
使用 yafowil.utils.entry_point 装饰器。[rnix]
Plone 5支持。[rnix]
2.2 (2015-10-10)
使用 pkg_resources.get_distribution 而不是捕获 ImportError 来检查TinyMCE是否已安装。[rnix]
将Products.TinyMCE的依赖关系设置为软依赖。[thet]
2.1 (2013-06-03)
将CSS资源的applyPrefix设置为True,以便引用的图像仍可找到。[thet, 2014-05-06]
集成翻译。[rnix, 2014-05-01]
2.0.2
修复资源组名称。[thet]
修复getSite导入,清理。[thet]
2.0.1
为 yafowil.widget.richtext 插件中的 richtext 模板的 title 属性提供默认值,以便提供符合plone集成预期的TinyMCE配置。[rnix]
2.0
通过通用设置集成YAFOWIL资源(包括配置)。[rnix, 2012-10-03]
1.3.1
简化plone的基础表单。[jensens, 2012-05-21]
不安全ZIP![jensens, 2012-04-15]
1.3
GS配置文件标记 - 修复错误的文件名。[rnix, 2012-04-11]
添加包含基础类的 yafowil.plone.form 模块。[rnix, 2012-04-11]
1.2
将其重命名为yafowil.plone - 包名末尾的2似乎让easy_install感到困惑。wtf!?[jensens, 2012-03-20]
1.1
在setup.py中依赖yafowil 1.3并增加版本号。[jensens, 2012-03-20]
1.0
使用新插件基础设施注册资源。现在有一个导入步骤用于通用设置,注册插件提供的所有javascripts和stylesheets。它们在没有任何第三方依赖项的情况下注册。如果资源已注册,则跳过其注册。这样就可以使用xml文件注册或覆盖默认值。[jensens, 2012-02-01]
为插件自动提供browserresources。[jensens, 2012-02-16]
依赖yafowil 1.3插件基础设施。[jensens, 2012-02-15]
示例表单以及Plone的合理默认类和计划。[hpeter, bennyboy, 2012-02-15]
1.0-beta
使其工作。[jensens, rnix, 等人, 2010-12-27]
许可协议
版权所有 (c) 2010-2016,奥地利蓝动联盟,保留所有权利。
在满足以下条件的情况下,允许重新分发和使用源代码和二进制形式,无论是否修改
源代码的重新分发必须保留上述版权声明、本条件列表和以下免责声明。
二进制形式的重新分发必须在本文档和其他随分发提供的材料中复制上述版权声明、本条件列表和以下免责声明。
未经事先书面许可,不得使用BlueDynamics Alliance的名称或其贡献者的名称来认可或推广源自本软件的产品。
本软件由BlueDynamics Alliance提供,“按原样”,不提供任何明示或暗示的保证,包括但不限于对适销性和特定用途的适用性的暗示保证。在任何情况下,BlueDynamics Alliance均不对因使用本软件而产生的任何直接、间接、偶然、特殊、示范性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,无论这种损害是由于何种原因造成的,无论根据何种责任理论,即使被告知本软件可能造成此类损害。
项目详情
yafowil.plone-3.0.0.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | aa1f8aef271bc77d3adb0862afd8f3f94c0246868a9fc07afe301c228344c198 |
|
MD5 | 580f09cb794338ec67ca3a17da6a1b4a |
|
BLAKE2b-256 | 88cca90f9ca54bcf8c1bb0e5efd14979e58f4d5e95910dfa703f8f8e9b2908ff |