跳转到主要内容

为z3cform提供的人读验证码

项目描述

Plone Meta Workflow https://codecov.io/gh/collective/collective.z3cform.norobots/graph/badge.svg?token=DgZ7MzmVMr Latest Version Egg Status https://img.shields.io/pypi/pyversions/collective.z3cform.norobots.svg?style=plastic:alt:Supported-PythonVersions

collective.z3cform.norobots

概述

collective.z3cform.norobots提供了一个基于问题/答案列表的“人读”验证码小部件。

此验证码可用于

  • 作为 plone.app.discussion (Plone Discussions) 验证码插件

  • 作为 z3c form 字段

  • 作为自定义表单中的宏

  • 作为带有 collective.pfg.norobots 的 PloneFormGen 字段

此小部件基于 z3c.form.TextWidget。

自版本1.4起,问题配置使用专用控制面板(使用 plone.app.registry)而不是简单的属性表单。一个升级步骤提供了从早期版本的迁移。

界面支持以下语言翻译:捷克语 [cs]、丹麦语 [da]、德语 [de]、巴斯克语 [eu]、西班牙语 [es]、芬兰语 [fi]、法语 [fr]、荷兰语 [nl]、简体中文 [zh_CN]、意大利语 [it] 和俄语 [ru]。

要求

我已经在Plone 4.3.10和Plone 5.0.5上测试了此版本。自版本2.0起支持Plone 6。

有关旧版Plone版本,请参阅先前版本。

屏幕截图

Screenshot Screenshot

安装

获取模块 - pip基础

collective.z3cform.norobots 添加到您的 requirements.txt

获取模块 - buildout基础

collective.z3cform.norobots 添加到您的 plone.recipe.zope2instance buildout部分,例如。

[instance]
...
eggs =
    Plone
    ...
    collective.z3cform.norobots

...

zcml =
    ...
    collective.z3cform.norobots

或者,您可以在自己的产品 setup.py 中将其添加为依赖项

install_requires=[
    ...
    'collective.z3cform.norobots',
],

启用模块

在“插件”控制面板中,安装“Norobots captcha字段(collective.z3cform.norobots)”。

添加新问题

在“Norobots小部件设置”控制面板中,在“Norobots问题::答案”字段中添加新行

your_question::the_answer

Example : What is 10 + 12 ?::22

答案可以包含多个值,由分号分隔

your_question::the_answer;another_answer

Example : What is 5 + 5 ?::10;ten

快速测试?

检出 collective.z3cform.norobots 并使用 venvpip 测试模块

python3 -m venv ./venv
source venv/bin/activate
(venv) pip install mxdev
(venv) pip install -r requirements-mxdev.txt
(venv) pip install cookiecutter
(venv) cookiecutter -f --no-input --config-file instance.yml https://github.com/plone/cookiecutter-zope-instance
(venv) runwsgi -v instance/etc/zope.ini

转到 http://localhost:8080,添加新的Plone站点并安装collective.z3cform.norobots(见上文)。

启动测试

(venv) pip install tox
(venv) tox

启动代码覆盖率

(venv) tox -e coverage

然后在浏览器中打开htmlcov/index.html

作为 plone.app.discussion (Plone Discussions) 验证码插件的使用

在“讨论”控制面板中,激活匿名评论然后选择“Norobots”作为验证码。这将为匿名用户启用验证码。

在z3c form中的使用

您可以通过设置表单字段的“widgetFactory”属性来使用此小部件设置

from zope import interface, schema
from z3c.form import interfaces, form, field, button, validator
from plone.z3cform.layout import wrap_form

from collective.z3cform.norobots.i18n import MessageFactory as _
from collective.z3cform.norobots.widget import NorobotsFieldWidget
from collective.z3cform.norobots.validator import NorobotsValidator

class INorobotsForm(interface.Interface):
    norobots = schema.TextLine(title=_(u'Are you a human ?'),
                               description=_(u'In order to avoid spam, please answer the question below.'),
                               required=True)

class NorobotsForm(form.Form):
    fields = field.Fields(INorobotsForm)
    fields['norobots'].widgetFactory = NorobotsFieldWidget

# wrap the form with plone.z3cform's Form wrapper
NorobotsFormView = wrap_form(NorobotsForm)

# Register Norobots validator for the corresponding field in the IContactInfo interface
validator.WidgetValidatorDiscriminators(NorobotsValidator, field=INorobotsForm['norobots'])

在您的 configure.zcml 中,您必须添加以下适配器,以使验证生效。

<adapter factory=".contact_info.NorobotsValidator" />

有关更多信息,请参阅 plone_forms 目录中的 contact_info.py

要激活此示例,请将 <include package=".plone_forms" /> 添加到包的 configure.zml 文件中,并打开 http://localhost:8080/Plone/@@z3cform-contact-info

作为自定义表单中的宏的使用

请参阅通过 @@norobots_macro 浏览器页面提供的 browser/norobots_macro.pt

可能出现的问题

  • 在一个新的Plone 5.0.5中,即使在选择了 Norobots 作为验证码的情况下,验证码小部件也不会在评论表单中显示。安装另一个验证码,如 plone.formwidget.captcha,可以解决这个问题(sic!)!在我从Plone 5.0.4更新到5.0.5的网站上,一切正常。

  • 当启动测试时,我遇到了以下错误:“ImportError: No module named lxml.html” => 为了运行测试,您需要lxml。您可以将“z3c.form [test]”添加到您的buildout中。有关更多详细信息,请参阅 http://plone.293351.n2.nabble.com/Custom-Dexterity-Widgets-td5594532.html

鸣谢

源代码

源代码托管在Github上。

如何贡献和提交补丁?

源代码问题跟踪器托管在Github上。

贡献者

  • Sylvain Boureliou [sylvainb]

  • Mikel Larreategi [erral]

  • Aijun Jian

  • Radim Novotny [naro]

  • Thomas Clement Mogensen [tmog]

  • Peter Mathis [petschki]

  • Petri Savolainen [petri]

  • Helmut Toplitzer

  • Luca Fabbri [keul]

  • Andrea Cecchi [cekk]

  • [[serge73]]

  • [[1字母]]

变更日志

3.0 (2024-06-12)

  • 重构包以基于pip的安装

  • 通过plone/meta更新配置

  • 重构norobots小部件为bootstrap5表单控件,带有浮动标签

  • 添加测试 [[1字母]]

2.1 (2022-08-18)

  • 在Volto中添加显示控制面板的适配器 [[erral]]

2.0 (2022-03-21)

  • 添加Plone 6支持,移除 <includeDependencies />

  • 更新测试

  • 代码维护

  • 更新setup,tox.ini [[1字母]]

  • 由于此版本不再测试,移除Plone 5.0分类器 [[thet]]

  • 根据Plone标准格式化代码:black,isort,zpretty [[thet]]

  • 添加卸载配置文件 [[thet]]

  • 更新为Python3 [[1字母]]

  • 添加plone.autoform.directives对Widget的支持

  • 为Widget添加css类 [[1字母]]

  • 添加缺失的英文翻译文件 [[thomasmassmann]]

  • 更新翻译 [[thomasmassmann]]

1.4.4 (2016-07-20)

  • 添加俄语翻译 [[serge73]]

1.4.3 (2016-07-08)

  • 添加HTML表单宏 [[cekk]]

1.4.2.2 (2013-04-25)

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

1.4.2.1 (2013-01-17)

  • 添加荷兰语翻译 [[maartenkling]]

1.4.2 (2012-10-03)

  • 添加与collective.pfg.norobots的兼容性:允许使用Norobots captcha与PloneFormGen一起使用 [[sylvainb]]

  • 修复小部件模板,以允许在plone.app.discussion表单中答案错误时良好重定向 [[sylvainb]]

  • 将源代码移动到“src”目录 [[sylvainb]]

  • 更新测试,buildouts并添加测试覆盖率。Plone 4.0不再受支持 [[sylvainb]]

  • 将MessageFactory名称更改为让Plone拾取翻译 [[erral]]

  • 更新巴斯克语翻译并添加西班牙语翻译 [[erral]]

1.4.1 (2012-07-02)

  • 修复包含非ASCII字符的问题时的Unicode错误 [[sylvainb, Helmut Toplitzer]]

1.4 (2012-06-22)

  • 使用plone.app.registry代替属性表进行问题配置。现在可以使用专用控制面板添加问题 [[sylvainb]]

  • 添加升级步骤(1 -> 2),以将问题从旧属性表复制到plone.app.registry [[sylvainb]]

  • 修复小部件模板以用于plone.app.discussion(当只有验证码错误时,没有重定向到评论表单)。 [[sylvainb]]

  • 更新翻译(添加了一些新字符串)。 [[sylvainb]]

  • 添加巴斯克语翻译 [[erral]]

1.3.1 (2012-03-28)

  • 添加简体中文翻译 [[Aijun Jian]]

1.3 (2012-02-27)

  • 允许对一个问题的多个答案 [[naro]]

  • 添加丹麦语翻译 [[tmog]]

1.2.1 (2010-11-05)

  • 添加德语翻译 [[petschki]]

1.2 (2010-10-31)

  • 修复Plone 4的测试 [[sylvainb]]

  • 添加捷克语翻译 [[naro]]

1.1 (2010-09-15)

  • 支持作为plone.app.discussion captcha插件使用(Plone 4) [[Petri Savolainen]]

  • 芬兰语翻译 [[Petri Savolainen]]

1.0 (2010-01-13)

  • 初始发布 [[sylvainb]]

项目详情


下载文件

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

源代码分发

collective.z3cform.norobots-3.0.tar.gz (69.6 kB 查看散列值)

上传时间 源代码

构建分发

collective.z3cform.norobots-3.0-py3-none-any.whl (58.3 kB 查看散列值)

上传于 Python 3

支持者

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