跳转到主要内容

Plone表单

项目描述

latest release version badge by Badge Fury Travis CI status Coveralls status

此插件 collective.easyform 为表单创建添加了 Plone 内容类型。

EasyForm 通过字段、小部件、动作和验证器(基于 Dexterity)提供 Plone 表单构建器。

表单输入可以保存或通过电子邮件发送。一个简单且用户友好的界面允许非程序员创建自定义表单。

安装

通过将其添加到您的构建文件中安装 collective.easyform

[buildout]

...

eggs =
    collective.easyform

运行构建文件

bin/buildout

最后一步是在“附加组件控制面板”中激活 EasyForm

从 PloneFormGen 迁移

安装 PloneFormGen 后,打开以下 URL

@@migrate-ploneformgen

用法

  • 从工具栏的“添加新”菜单中选择 EasyForm。插入表单标题、描述和其他设置。

  • 添加字段或字段集以创建满足您特定需求的独特表单。有足够的基本字段类型来满足任何需求。

    • 文件上传

    • 文本行(字符串)

    • 整数

    • 是/否

    • 日期,日期/时间

    • 浮点数

    • 选择

    • 富文本

    • 图像

    • 多项选择

    • 文本

    • 密码

    • ReCaptcha

  • 通过设置字段的顺序、定义必填和隐藏字段、选择验证器(如有必要)和其他特定字段类型的设置,继续自定义表单。

点击下面的图片查看简短介绍视频

EasyForm instructional video

使用条件字段

在高级 > 字段依赖于下,您可以定义条件以隐藏字段,并在条件满足时才淡入显示。我们在这里使用 pat-depends,所有选项都在 pat-depends 文档 中有说明。

您还可以在高级 > CSS 类下为每个字段设置 CSS 类字符串。

docs/images/conditional_fields_and_field_css.png docs/images/form_multicolumns.png

由于表单带有 row CSS 类,因此您可以使用现有的 Bootstrap 5 CSS 列表类为字段创建简单的列布局。有关更多信息,请参阅 Bootstrap 网格系统 文档。

对于更复杂的布局,您还可以添加自己的 CSS 类和定义。以下是一个定义带有最多 4 列和不同 col span 的单个字段的表单的 CSS 示例。

.easyformForm fieldset{
  display: grid;
  gap: 1em;
  grid-template-columns: 1fr 1fr 1fr 1fr;
}

.easyformForm .field{
  background-color: #eeeeee;
  padding: 0.5em;
  grid-column: auto / span 2;
}

.easyformForm fieldset > p:first-of-type{
  background-color: transparent;
  grid-column: auto / span 4;
}

.easyformForm .field.formCol14{
  grid-column: auto / span 1;
}

.easyformForm .field.formCol34{
  grid-column: auto / span 3;
}

.easyformForm .field.formCol44{
  grid-column: auto / span 4;
}

ReCaptcha 支持

使用 recaptcha 额外功能安装 collective.easyform

[buildout]

...

eggs =
    collective.easyform [recaptcha]

运行构建文件。在“附加组件控制面板”中,激活 EasyForm 和 ReCaptcha 小部件。

在 ReCaptcha 控制面板中,设置从 https://developers.google.com/recaptcha/ 获得的公钥和私钥值(您可以使用 reCAPTCHA V2)。

在 EasyFrom 控制面板(/@@easyform-controlpanel)中,将“ReCaptcha”字段添加到“允许的字段”。或者,通过将其添加为通用设置 registry.xml 条目来激活它。

<record name="easyform.allowedFields">
  <value purge="False">
    <element>collective.easyform.fields.ReCaptcha</element>
  </value>
</record>

将ReCaptcha字段添加到您想使用它的表单中。使用字段类型ReCaptcha,并保持require未选中。

最后一步,您可能希望避免在感谢页面和邮件发送动作中包含ReCaptcha字段。要做到这一点,编辑表单,转到“感谢页面”设置,禁用“显示所有字段”,然后只包含您想要的字段。同样对于邮件发送者:通过“动作”工具栏菜单打开表单动作并相应地编辑邮件发送设置。

collective.z3cform.norobots支持

使用norobots附加组件安装collective.easyform

[buildout]

...

eggs =
    collective.easyform [norobots]

运行buildout。在“附加组件”控制面板中,安装EasyForm。

在EasyFrom控制面板(/@@easyform-controlpanel)中,将“NorobotCaptcha”字段添加到“允许的字段”。或者,通过将其添加为通用设置的registry.xml条目来激活它。

<record name="easyform.allowedFields">
  <value purge="False">
    <element>collective.easyform.fields.NorobotCaptcha</element>
  </value>
</record>

将NorobotCaptcha字段添加到您想使用的表单中。使用字段类型NorobotCaptcha,并保持require未选中。

最后一步,您可能希望避免在感谢页面和邮件发送动作中包含NorobotCaptcha字段。要做到这一点,编辑表单,转到“感谢页面”设置,禁用“显示所有字段”,然后只包含您想要的字段。同样对于邮件发送者:通过“动作”工具栏菜单打开表单动作并相应地编辑邮件发送设置。

从savedata适配器支持下载XLSX

使用downloadxlsx附加组件安装collective.easyform

[buildout]

...

eggs =
    collective.easyform [downloadxlsx]

这为您提供了使用openpyxl生成XLSX文件将保存数据作为XLSX下载的选项。

动作

表单提交后,您可以选择以下动作之一

  • 邮件发送者

  • 数据存储

  • 自定义脚本

邮件发送者存储发送表单结果的HTML模板。您可以通过在您的站点中添加名为easyform_mail_body_default.pt的文件来覆盖它。如果找不到,则使用此包的default_schemata目录中的默认模板。如果您计划覆盖,请从mail_body_default.pt文件开始,并确保它是一个有效的页面模板。

翻译

此附加组件已被翻译成

  • 巴斯克语

  • 巴西葡萄牙语

  • 德语

  • 荷兰语

  • 英语

  • 法语

  • 意大利语

  • 日语

  • 西班牙语

  • 乌克兰语

源代码和贡献

如果您想帮助开发(改进、更新、错误修复等)collective.easyform,这是一个很好的主意!

您可以通过克隆它或获取对github-collective的访问权限并直接在项目上工作。

请在分支上执行较大更改,并提交Pull Request。

collective.easyform的维护者是Plone Collective社区。

我们感激任何贡献!

对于新版本,请联系Python Package Index页面上提到的所有者或维护者之一。

贡献

许可

本项目采用GPLv2许可。

兼容性

  • 1.x版本针对Plone 4.x

  • 2.x版本针对Plone 5.x及以上

  • 3.x版本针对Plone 5.2

  • 4.x版本针对Python 3上的Plone 6

变更日志

4.2.0 (2024-03-15)

  • 在从PFG迁移时,将字段集描述设置为属性,而不是节点。[thomasmassmann]

  • 为文件和图片上传添加文件大小上传限制。[ThibautBorn]

  • 更新荷兰语翻译。[ThibautBorn]

4.1.6 (2024-03-08)

  • 修复序列化器中的未使用、不正确和未声明的导入。[thet]

4.1.5 (2023-11-03)

  • 在将保存数据包含在序列化器之前,检查“collective.easyform.DownloadSavedInput”权限。[MrTango]

4.1.4 (2023-07-27)

  • 修复从@@saveddata访问folder_contents的问题。[ThibautBorn]

  • 在PloneFormGen迁移过程中,使ReCaptcha字段不是必需的。[ThibautBorn]

4.1.3 (2023-05-16)

错误修复

  • 添加升级步骤和配置文件以更新注册表中的内容类型图标。[maurits]

  • 为操作添加图标表达式。[maurits]

  • 更新西班牙语翻译。[macagua]

4.1.2 (2023-01-02)

  • 为表单定义“编辑”和“查看”图标。(#390)[frapell]

  • 要求至少Python 3.8。测试使用3.8-3.11。[maurits]

4.1.1 (2022-10-28)

  • 修复Likert字段存储值显示问题。[gotcha]

  • 为控制面板工具添加图标。[frapell]

  • 防止RichLabel字段破坏表单。[MrTango]

  • Schemaeditor UI:在保存时关闭模态并重新加载字段(集)。[petschki]

  • 修复了未正确渲染GroupForm小部件的bug(见#370)。[petschki]

4.1.0 (2022-08-10)

新功能

  • 添加对字段级CSS类的支持。[mrtango]

  • 添加对条件字段的支持。[mrtango]

  • 添加Likert量表字段。[gotcha]

  • 添加法语翻译 [mpeeters, laulaz]

  • 使用 collective.easyform.DownloadSavedInput 权限来显示/下载保存的数据 (#357) [laulaz]

  • restapi(de)序列化器,包括保存的数据 [ThibautBorn, gotcha, Mychae1]

  • 在导出中使用“|”作为列表类型的分隔符。[mathias.leimgruber]

错误修复

  • 修复SaveData存储的持久性问题。[mathias.leimgruber] (#259)

  • 添加缺少的翻译字符串 [laulaz]

  • 删除未使用的 migrate_all_forms 设置和记录 (#206) [laulaz]

  • 修改“表单字段”以与最新的schemaeditor一起工作 (#345) [frapell]

增强

  • 标准化“表单字段”和“表单操作”的行为。有一个单一的“保存”按钮,一旦应用更改,将重定向回表单 [frapell]

4.0.0 (2022-04-07)

破坏性更改

  • 仅适用于Plone 6。至少这是唯一经过测试的版本。(稍后编辑变更日志以避免误解,使用3.x针对Plone 5.2)[maurits]

新功能

  • 添加对Plone 6的支持 [pbauer, frappell]

  • 更新字段/操作列表以与Plone 6一起工作 [petschki] (#260)

  • 添加日语翻译,由Ochanomizu大学支持。[terapyon] (#263)

  • 为csv下载提供用户友好的分隔符设置 [ThibautBorn, gotcha] (#267)

  • 添加对plone.formwidget.hcaptcha的支持 [fredvd] (#292)

  • 更新css注册并使用schemaeditor模式 [frapell] (#319)

  • 向表单添加名称属性字段,默认为空,不包括它。这对于表单分析(如matomo)很有用,可以检查此属性。[fredvd] (#328)

  • 下载保存数据的XLSX版本。[mathias.leimgruber] (#285)

  • 添加选项将表单数据追加为xlsx。[mathias.leimgruber] (#287)

错误修复

  • 为csv_delimiter字段添加升级步骤。[fredvd] (267b)

  • 始终显示字段集标题:在标签模式下,它们被autotoc模式隐藏 [laulaz] (#173)

  • 在嵌入式表单上也显示序言和结语文本。[fredvd] (#274)

  • 修复Mailer附件中的字段顺序问题 [MrTango]

  • 可选地添加CSV/XLSX标题到附件 [MrTango] (#323)

  • 修复保存数据表:不显示标签;彩色按钮,轻微清理。[jensens]

  • 在德语翻译中修复错误。[jensens]

  • 修复reCaptcha支持:在安装时包含其zcml。[jensens]

  • 修复验证错误的翻译。[mathias.leimgruber] (#284)

  • 修复RichTextFields的下载错误。[szakitibi] (#288)

3.0.5 (2020-11-17)

错误修复

  • 修复使用zope.interface 5.1+的表单集中的验证器。这解决了问题252。[maurits] (#252)

  • 为了提高安全性,在model编辑器中不解析实体,并移除处理指令。[maurits] (#3209)

3.0.4 (2020-09-26)

错误修复

  • 修复在Zope 5上出现的ModuleNotFoundError: No module named ‘App.class_init’。[agitator] (#251)

3.0.3 (2020-09-09)

错误修复

  • 确保在设置字段或操作后更新目录。修复了问题8。[maurits] (#8)

  • 确保操作URL始终相对于easyform对象。将folder/easyform/folder_contents重定向到folder/folder_contents。当你在表单的子项中时,在工具栏中显示一个“视图”链接。参见问题219PR 239。[maurits] (#219)

3.0.2 (2020-08-17)

错误修复

  • 改进了保存数据的处理(ux表单,仅重定向到适配器)。[jensens (#1)

  • 更多德语翻译。[jensens] (#2)

  • 修复了#217:在表单更新中停止丢失操作错误。[wobsta] (#238)

  • 修复了#182:在操作或字段遍历时操作URL。[jensens] (#239)

3.0.1 (2020-07-29)

错误修复

  • 修复了#235:Module collective.easyform.fields, line 63, in superAdapter IndexError: tuple index out of range。[jensens] (#235)

3.0.0 (2020-07-28)

重大更改

  • 隐藏表单操作中的“描述”字段,因为它没有被使用。尝试省略或使用描述字段的自定义可能需要适应。(#226)

  • 更改“高级”权限的语义并引入新的“技术”权限。为了更好地支持“高级用户”的使用案例,同时不过度加载他们必须具备技术理解才能处理的复杂字段,权限更改如下

    “编辑高级字段”:- IEasyForm.form_tabbing - IEasyForm.default_fieldset_label - IFieldExtender.field_widget - IFieldExtender.validators

    “编辑技术字段”:- IEasyForm.method - IEasyForm.unload_protection - IEasyForm.CSRFProtection - IEasyForm.forceSSL - IMailer.replyto_field - IMailer.xinfo_headers - IMailer.additional_headers (#229)

新功能

  • 使用配置文件而不是ZCML来配置角色,以便更容易进行自定义。(#224)

  • 简化编辑UI:在创建表单时引入一个新的“高级”选项卡,用于不太常用的设置。更改权限,允许编辑器从表单字段值定义接收者,而不仅仅是固定接收者。(#227)

  • 使字段编辑器看起来更美观。(#228)

错误修复

  • 修复接口中的已弃用fieldset导入。(#222)

  • 重写升级bobtemplates.plone样式以获得更好的概览。(#223)

  • 使操作与plone.supermodel/autoform指令更好地兼容。(#225)

  • 修复当前活动语言中easyform内容类型字段默认值的翻译。(#231)

2.2.0 (2020-06-04)

  • 实现PloneFormGen迁移。[buchi, laulaz]

  • 修复了header_injection实现中的错误。[maurits, thet]

  • 按照Plone标准格式化代码:black, isort, zpretty。[thet]

  • 修复了值为None时的验证器:返回有效并让必需处理它[Nimo-19]

2.1.5 (2020-02-09)

  • 移除了硬编码的下载按钮标签检查(#175)[davide-targa]

2.1.4 (2020-02-06)

  • 如果显示感谢页面,则将“easyform-thankspage”CSS类添加到content-core div中。与header_injection字段结合使用,可以仅针对感谢页面样式化元素,例如作为删除空字段集的解决方案(#154)。[fredvd]

  • 在生成数据下载文件时不要附加重新渲染的下载表单(#175)[mamico, tkimnguyen]

  • 修复Travis安装google-chrome-stable的问题[tkimnguyen]

  • PEP8修复[mamico]

2.1.3 (2019-12-11)

  • 巴西葡萄牙语翻译#200 [ericof]

2.1.2 (2019-11-18)

  • 修复README中的损坏图像(部分解决#197)[tkimguyen]

  • 在获取公钥/私钥对时提及reCAPTCHA V2 [tkimnguyen]

2.1.1 (2019-11-18)

注意:如果您部署了2.1.1及以上版本,扩展验证将再次在额外字段集中的字段上生效(它们仅在主/默认字段上生效)。如果那些验证器或默认值最初配置错误,可能会导致一些问题。

  • filter_fields返回字段顺序正确。这修复了默认邮件模板上的顺序。是问题#163的一部分。[maurits]

  • 修复了字段集中字段的验证、行内验证和默认值。参考问题#172#157。[fredvd, maurits]

  • 从点号行为移动到命名行为。[iham]

  • 避免启动时的潜在CannotGetPortalError #164。[laulaz]

  • 添加collective.z3cform.norobots集成 #145。[1letter/gomez]

  • 对于CSV和XML附件,如果值为None,则发送空字符串而不是字符串“None”。[nngu6036]

  • 添加测试以显示recaptcha验证阻止提交。[djay]

  • 修复在附加图像到邮件时发生的UnicodeDecodeError #187。[krissik]

  • 更新recaptcha功能说明。[tkimnguyen]

2.1.0 (2019-04-25)

新功能

  • 代码风格black & isort。[jensens]

  • 为多选字段添加“CheckBoxFieldWidget”,为单选字段添加“RadioFieldWidget”。[petschki]

  • plone.formwidget.recaptcha添加到测试依赖项。[petschki]

  • 添加包含工具栏和文件夹内容的文档类型图标的样式包。[agitator]

  • 在序列化为XML或CSV附件时更好地表示复杂的字段类型,如布尔值和日期。[nngu6036]

错误修复

  • 修复XML或CSV附件中行长度超过998时可能发生的换行错误。[nngu6036]

  • 添加缺少的header_injection实现。[krissik]

2.1.0rc1 (2019-03-19)

新功能

  • 添加对Python 3的支持。[pbauer]

  • a11y:为portalMessage添加角色属性。[nzambello]

错误修复

  • 修复了打开文件时的启动ResourceWarning。[ajung]

2.0.1 (2018-12-04)

  • 西班牙语翻译。[erral]

2.0.0 (2018-10-03)

新功能

  • 在API中添加了新方法:filter_widgets。如果没有选择a,邮件发送器操作将不会尝试渲染其小部件。这在我们想要避免显示一些小部件(如recaptcha)时很有用,这些小部件如果处于错误上下文中可能会损坏。[cekk]

错误修复

  • 将saveddata操作权限从“管理门户”更改为“修改门户内容”,以便“操作”和“视图”具有相同的权限。[eikichi18]

  • 修复2.0.0b4中引入的感谢页面回归。[instification]

  • 修复包含非ASCII字符的电子邮件附件。[tomgross]

2.0.0b7 (2018-09-01)

  • 添加将表单数据以XML格式附加到电子邮件的选项。[nngu6036]

  • 添加一些邮件发送器适配器文档,添加必需的软件包版本固定。[tkimnguyen]

2.0.0b6 (2018-08-20)

  • 错误修复

  • 更新一些旧文档,添加@@get_save_data_adapters视图的文档。[tkimnguyen]

新功能

  • 添加@@get_save_data_adapters视图。[tkimnguyen]

2.0.0b5 (2018-06-22)

错误修复

  • 修复了在感谢页面上显示字段集中的项目。[tomgross]

2.0.0b4 (2018-05-17)

新功能

  • 添加对隐藏字段的支持。[tomgross]

错误修复

  • 修复了2.0.0b3中引入的过滤回归。[tomgross]

2.0.0b3 (2018-05-08)

新功能

  • 添加browserlayer。[jensens]

  • 增强文件验证视图中的类型检查。[tomgross]

  • 巴斯克语翻译。[erral]

  • 更新意大利语翻译。[arsenico13]

  • 允许在数据库中允许默认字段、操作和邮件模板。[tomgross]

  • 添加新的邮件发送器适配器复选框以发送CSV数据附件。[tkimnguyen]

错误修复

  • 在感谢页面上不要覆盖配置的小部件的默认小部件。这修复了#111。包括代码清理。[jensens]

  • 隐藏未用于常规安装的配置文件。[jensens]

  • 将ProtectedEmail和ProtectedTextLine作为可添加字段移除 https://github.com/collective/collective.easyform/issues/94 [fgrcon]

  • 对于感谢页面,也支持showAllincludeEmpties。[thet]

  • 更具体地注册recaptcha验证器,以便它覆盖默认的easyform验证器。修复了在使用plone.formwidget.recaptcha时无效的问题。[thet]

  • 修复因调用“data”时收购问题导致的保存数据的损坏。修复:#87。[sverbois]

  • 修复保存数据、导出、导入的动作URL。[tomgross]

  • 修复邮件模板中的值显示问题 #76。[tomgross]

2.0.0b2 (2017-08-31)

错误修复

  • 更新意大利语翻译。[arsenico13]

  • 添加Products.validation依赖以使其适用于无archetypes的站点。[agitator]

  • 在字段模式编辑器中,根据plone.app.dexterity中的modeleditor修复ACE库的URL。[thet]

  • 修复非ASCII文件名上传时的保存动作 #77。[tomgross]

  • 在字段模式编辑器中,根据plone.app.dexterity中的modeleditor修复ACE库的URL。[thet]

2.0.0b1 (2017-06-14)

新功能

  • 添加文件大小上传验证器。[tomgross]

错误修复

  • 将签名行中断转换为HTML电子邮件。[tomgross]

  • 允许多选字段作为主题字段 https://github.com/collective/collective.easyform/issues/71 [tomgross]

  • 更新德语翻译。[tomgross, jensens]

  • 保留body_pre、body_post和body_footer字段的换行符。将字段类型更改为RichText,使用TextAreaWidget和默认mime_type=’text/x-web-intelligent’。更新默认的邮件模板。[agitator]

  • 对于Plone 5,使用站点电子邮件地址作为默认收件人地址。[tmassman]

  • 更新README。[svx]

  • 允许使用“;”和换行符分隔电子邮件(CC、BCC) https://github.com/collective/collective.easyform/issues/49 [tomgross]

  • 允许在控制面板中管理为c.easyform启用的字段。[karalics]

2.0.0a2 (2016-10-14)

新增

  • 将api.get_fields重命名为api.get_schema [jensens, agitator]

修复

  • 修复字段顺序 [jensens, agitator]

2.0.0a1 (2016-10-13)

新增

  • 更新为Plone 5,不再支持Plone 4.x [agitator]

修复

  • 修复:彻底重写TravisCI设置以真正使用缓存。使用bobtemplates.plone的Travis设置作为最佳实践。[jensens]

  • 在摘要页面上提交表单后不显示重置按钮。[thet]

  • 维护:isort、zca装饰器、autopep8和主要的手动清理。包括结构清理和[jensens, agitator]

1.0a4 (未发布)

新增

  • 将收件人地址字段更改为电子邮件类型,以便正确验证 [davilima6]

  • 使默认的buildout使用Plone 5。更新travis设置,以便测试实际上运行,尽管许多测试仍然失败。[smcmahon]

  • 在注册表中查找email_from_address [kcleong]

  • 将默认的xml配置移出为xml文件。这些文件可以被i18ndude或其他po文件生成器用于翻译字符串。还翻译了字段。[thet]

  • 添加德语翻译。[thet]

  • 允许通过i18n翻译机制定义某些EasyForm默认值。[thet]

  • 重新设计邮件地址格式,避免以name <<account@domain.com>>的形式使用收件人地址,而是使用name <account@domain.com>。[thet]

  • 依赖于plone.schemaeditor > 2.0以实现JS兼容性。[thet]

  • 修复plone.schemaeditor i18n工厂导入。这修复了5.0.1支持。[vangheem]

  • 修复modeleditor.pt标记以使其与barceloneta兼容。[ebrehault]

修复

  • 修复plone.schemaeditor i18n工厂导入。这修复了5.0.1支持

1.0a3 (2015-06-02)

  • 修复模板 [kroman0]

  • 修复字段顺序 #17 [kroman0]

  • 修复Plone 5支持 [kroman0]

  • 修复依赖关系 [kroman0]

  • 正确设置脚本类型 [fredvd]

1.0a2 (2014-06-13)

  • 修复与plone.app.multilingual[dexterity]的冲突 [kroman0]

  • 修复保存数据表单的渲染 [kroman0]

  • 修复并更新测试 [kroman0]

  • 修复下载csv中的Unicode编码 [gborelli]

  • 添加意大利语翻译 [gborelli]

  • 在邮件器覆盖表达式中添加字段参数 [gborelli]

1.0a1 (2014-03-18)

  • 初始发布

项目详情


下载文件

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

源代码发行版

collective.easyform-4.2.0.tar.gz (1.6 MB 查看哈希值)

上传时间 源代码

构建发行版

collective.easyform-4.2.0-py3-none-any.whl (344.6 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面