Plone support for JSON schema based block forms.
Project description
plone.formblock
A Plone add-on supporting the creation of forms inside blocks.
Features
Send submissions by email
When the Send action is enabled on a form block, each submission is emailed to the configured recipients. The subject, sender and recipients are configured on the block, and the submitted values are rendered into the message body.
Store submissions
When the Store data action is enabled, each submission is stored on the content object. Stored submissions can be reviewed, exported to CSV and cleared directly from the form block editor in Volto.
Captcha support
Captcha support requires a specific name adapter that implements ICaptchaSupport. This product contains implementations for:
- HCaptcha (plone.formwidget.hcaptcha)
- Google ReCaptcha (plone.formwidget.recaptcha)
- Custom questions and answers (collective.z3cform.norobots)
- Honeypot (collective.honeypot)
Each implementation must be included, installed and configured separately.
To include one implementation, you need to install the egg with the needed extras_require:
- plone.formblock[recaptcha]
- plone.formblock[hcaptcha]
- plone.formblock[norobots]
- plone.formblock[honeypot]
During the form post, the token captcha will be verified with the defined captcha method.
Honeypot configuration
If honeypot dependency is available in your installation, the honeypot validation is enabled and selectable in forms.
Default field name is protected_1 and you can change it with an environment variable. See the collective.honeypot configuration for details.
Attachments upload limits
Forms can have one or more attachment field to allow users to upload some files.
These files will be sent via mail, so it could be a good idea setting a limit to them. For example if you use GMail as mail server, you can't send messages with attachments > 25MB.
There is an environment variable that you can use to set that limit (in MB):
export FORM_ATTACHMENTS_LIMIT=25
By default this is not set.
The upload limit is also passed to the frontend in the form data with the attachments_limit key.
Content-transfer-encoding
It is possible to set the content-transfer-encoding for the email body, settings the environment variable MAIL_CONTENT_TRANSFER_ENCODING:
export MAIL_CONTENT_TRANSFER_ENCODING=base64
This is useful for some SMTP servers that have problems with quoted-printable encoding.
By default the content-transfer-encoding is quoted-printable as overridden in Products.MailHost
Email subject templating
You can also interpolate the form values to the email subject using the field id, in this way: ${field_name}
Header forwarding
It is possible to configure some headers from the form POST request to be included in the email's headers by configuring the httpHeaders field in your Volto block.
The @plone/volto-form-block package allows the following headers to be forwarded:
HTTP_X_FORWARDED_FORHTTP_X_FORWARDED_PORTREMOTE_ADDRPATH_INFOHTTP_USER_AGENTHTTP_REFERER
Installation
Install plone.formblock with uv:
uv add plone.formblock
Or with pip:
pip install plone.formblock
Create the Plone site.
make create-site
Contribute
Prerequisites ✅
- An operating system that runs all the requirements mentioned.
- uv
- Make
- Git
- Docker (optional)
Installation 🔧
-
Clone this repository.
git clone git@github.com:plone/form-block.git cd form-block/backend
-
Install this code base.
make install
License
The project is licensed under GPLv2.
Credits and acknowledgements 🙏
This add-on is built on top of the awesome collective.volto.formsupport developed by RedTurtle Technology.
The current version of the codebase was developed by kitconcept GmbH and sponsored by the Fachhochschule Nordwestschweiz.
Generated using Cookieplone (2.0.0b3) and cookieplone-templates (6678734) on 2026-06-10 18:43:35.112495. A special thanks to all contributors and supporters!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file plone_formblock-1.0.0a2.tar.gz.
File metadata
- Download URL: plone_formblock-1.0.0a2.tar.gz
- Upload date:
- Size: 133.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
059ff2452349d79a0e007c80527758d02d771baf9d22f8ab75c7bbff534a2612
|
|
| MD5 |
744069087518f97e1d832bb7938d388c
|
|
| BLAKE2b-256 |
0c2cf184add43539b0b53ceb7857a70cd532af520b9eef28b8fa60b9da3d4e47
|
File details
Details for the file plone_formblock-1.0.0a2-py3-none-any.whl.
File metadata
- Download URL: plone_formblock-1.0.0a2-py3-none-any.whl
- Upload date:
- Size: 89.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c91288c9e1821bb556638bfb29630c2cdeb93aba309d0c3c2f59f6e2c6670c66
|
|
| MD5 |
f8e03f8ef211afd4eacff86430bf4e9f
|
|
| BLAKE2b-256 |
6686c310b2d0202affd415eceee62308fa3b4b3774df5a34b4b641d27d946d47
|