Introduction
collective.z3cform.norobots provides a “human” captcha widget based on a list of questions/answers.
This captcha can be used as a plone.app.discussiom captcha plugin.
The widget is based on z3c.form.TextWidget.
Requirements
tested with Plone 4.0 as a plugin for plone.app.discussion, should work with Plone 3
plone.app.z3cform
Installation
Just a simple easy_install collective.z3cform.norobots is enough.
Alternatively, buildout users can install collective.z3cform.norobots as part of a specific project’s buildout, by having a buildout configuration such as:
[buildout]
...
eggs =
collective.z3cform.norobots
...
[instance]
...
zcml =
collective.z3cform.norobots
In portal_setup, apply the profile collective.z3cform.norobots:default.
Add a new question
In the Plone Property Sheet “norobots_properties” (portal_properties/norobots_properties), add a new property:
Name: The question id (ex: "question4") Value: your_question::the_answer (ex: "What is 10 + 12 ?::22") Type: string
Answer can contain multiple values delimited by semicolon:
Name: The question id (ex: "question8") Value: your_question::the_answer;another_answer (ex: "What is 5 + 5 ?::10;ten") Type: string
Usage
You can use this widget setting the “widgetFactory” property of a form field:
from zope import interface, schema
from z3c.form import interfaces, form, field, button, validator
from plone.app.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.app.z3cform's Form wrapper
NorobotsFormView = wrap_form(NorobotsForm)
# Register Norobots validator for the correponding field in the IContactInfo interface
validator.WidgetValidatorDiscriminators(NorobotsValidator, field=INorobotsForm['norobots'])
for more information see contact_info.py in the plone_forms directory in the package.
Possible problems
I have the following error: “We already have: zope.schema 3.5.4 but z3c.form 2.4.1 requires ‘zope.schema>=3.6.0’.” => You should add this extra version restriction to your buildout: http://good-py.appspot.com/release/plone.app.z3cform/0.5.0
I have the following error when launching the tests: “ImportError: No module named lxml.html” => In order to run the tests you need lxml. You can add for example “z3c.form [test]” to your buildout. See http://plone.293351.n2.nabble.com/Custom-Dexterity-Widgets-td5594532.html for more details.
Credits
Changelog
1.3.1 (2012-03-28)
Add simplified chinese translation [Aijun Jian]
1.3 (2012-02-27)
Allow multiple answers for a question [naro]
Added danish translation [tmog]
1.2.1 (2010-11-05)
Added german translation [petschki]
1.2 (2010-10-31)
Fix tests for Plone 4 [sylvainb]
Added Czech translation [naro]
1.1 - 2010-09-15
Support for using as a plone.app.discussion captcha plugin (Plone 4) [Petri Savolainen]
Finnish translations [Petri Savolainen]
1.0
Initial release [sylvainb]
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file collective.z3cform.norobots-1.3.1.zip.
File metadata
- Download URL: collective.z3cform.norobots-1.3.1.zip
- Upload date:
- Size: 39.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0a50fc1edf040b1e0c55c6e46f8a7e8d62bfc4bcb6ca143682b0c0bdedcc9f4c
|
|
| MD5 |
b58db76db628fa78a1f6810fcc59a15f
|
|
| BLAKE2b-256 |
9f41bb30c6ce0fcb0598776f1d7d04e619e517a5035fc32308ff60f6bf9c6561
|