Skip to main content

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_FOR
  • HTTP_X_FORWARDED_PORT
  • REMOTE_ADDR
  • PATH_INFO
  • HTTP_USER_AGENT
  • HTTP_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 ✅

Installation 🔧

  1. Clone this repository.

    git clone git@github.com:plone/form-block.git
    cd form-block/backend
    
  2. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

plone_formblock-1.0.0a2.tar.gz (133.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

plone_formblock-1.0.0a2-py3-none-any.whl (89.5 kB view details)

Uploaded Python 3

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

Hashes for plone_formblock-1.0.0a2.tar.gz
Algorithm Hash digest
SHA256 059ff2452349d79a0e007c80527758d02d771baf9d22f8ab75c7bbff534a2612
MD5 744069087518f97e1d832bb7938d388c
BLAKE2b-256 0c2cf184add43539b0b53ceb7857a70cd532af520b9eef28b8fa60b9da3d4e47

See more details on using hashes here.

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

Hashes for plone_formblock-1.0.0a2-py3-none-any.whl
Algorithm Hash digest
SHA256 c91288c9e1821bb556638bfb29630c2cdeb93aba309d0c3c2f59f6e2c6670c66
MD5 f8e03f8ef211afd4eacff86430bf4e9f
BLAKE2b-256 6686c310b2d0202affd415eceee62308fa3b4b3774df5a34b4b641d27d946d47

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page