为z3cform提供的人读验证码
项目描述
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版本,请参阅先前版本。
屏幕截图
安装
获取模块 - 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 并使用 venv 和 pip 测试模块
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。
鸣谢
Makina Corpus Makina Corpus
源代码
源代码托管在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-py3-none-any.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | b91e3f93138eac5a7d3be36aa4b38d14d23650661ee7a65e213d50fd03c94178 |
|
MD5 | c8c1ba523752af7d000baf5c948633e4 |
|
BLAKE2b-256 | 9242ebf1603044fd9ef5c26de9efd139dd012d550b615bc4798256a4b894b185 |