doc/dev/plugins/form/CHANGELOG.md

1195 lines
45 KiB
Markdown
Raw Normal View History

# v6.0.0
## 03/28/2022
1. [](#improved)
* Added log warning when trying to access form by non-unique name
* Optimized form caching by not initializing the forms in `onPageProcessed` event anymore
* **BACKWARD COMPATIBILITY**: As form initialization has been delayed, logic relaying on `onPageProcessed` with forms may not work anymore
1. [](#bugfix)
* Fixed select field where option is iterable (#558)
* Fixed `FormPlugin::getForm()` to properly search the current page first
* Fixed `FormPlugin::getForm()` to ignore fallback if the page was given as parameter
* Fixed dynamic forms to work with cache turned on
* Fix nested `toggleable`: originalValue now checks with `??` instead of `is defined`
# v5.1.7
## 03/14/2022
1. [](#new)
* Added `access` support for buttons
2. [](#bugfix)
* Fixed tabs in the frontend to ensure JS is loaded
# v5.1.6
## 02/07/2022
1. [](#bugfix)
* Fixed Select field when using OptGroups, not allowing key/values [#541](https://github.com/getgrav/grav-plugin-form/issues/541)
* Support for translatable OptGroup labels in Select field [#540](https://github.com/getgrav/grav-plugin-form/issues/540)
# v5.1.5
## 01/24/2022
1. [](#bugfix)
* Fixed case in selectize field where custom new entries would not be stored in non `multiple` lists
# v5.1.4
## 11/16/2021
1. [](#bugfix)
* Fixed buttons no longer rendered [#537](https://github.com/getgrav/grav-plugin-form/issues/537)
* Allow `select` field to customize `autocomplete` attribute
# v5.1.3
## 10/26/2021
1. [](#new)
* Require **Grav 1.7.24**
* Added support to disable a form, making it readonly
* Added `|value_and_label` Twig filter to convert options to value/label pairs
1. [](#improved)
* Improved Twig function `include_form_field()` to allow the second parameter to be an array of layouts
# v5.1.2
## 09/29/2021
1. [](#improved)
* Improved support for Twig 2/3
# v5.1.1
## 09/14/2021
1. [](#new)
* Require **Grav 1.7.21**
1. [](#bugfix)
* Fixed accidental admin plugin requirement for YAML filter in the form
* Fixed `GravForm.config` JS to have correct `current_url` and `current_params` settings
* Fixed custom file upload and remove routes
* Fixed bug where uploading file has no effect [#349](https://github.com/getgrav/grav-plugin-form/issues/349)
* Fixed field with numeric field name in `prepare_form_fields()` [#530](https://github.com/getgrav/grav-plugin-form/issues/530)
# v5.1.0
## 08/31/2021
1. [](#new)
* Require **Grav 1.7.19**
* Added support for custom form layouts
* Added Twig function `prepare_form_fields()` and `prepare_form_field()` to prepare form fields and field array
* Added Twig function `include_form_field()` to get all include paths for the field type
* Make `nonce` to a customizable field
1. [](#bugfix)
* Fixed bad cookie value for remembering the position of nested tabs
# v5.0.3
## 06/15/2021
1. [](#improved)
* Removed the windows `\r\n` line breaks + extraneous escaping in `data.txt.twig`
* Use `base64_encode` filter rather than function
# v5.0.2
## 04/23/2021
1. [](#improved)
* Better message for invalid nonce [#513](https://github.com/getgrav/grav-plugin-form/issues/513)
* Better error if `Form::getPage()` gets called too early [#518](https://github.com/getgrav/grav-plugin-form/issues/518)
* Added support for custom Toggle id
# v5.0.1
## 03/17/2021
1. [](#improved)
* Updated `de` language [#510](https://github.com/getgrav/grav-plugin-form/pull/510)
* Better field type definitions for avatar and file fields
1. [](#bugfix)
* Fixed toggle highlight when there's no value
* Fixed wrong selected values in `select` field with integer and boolean values
* Fixed changelog display [#502](https://github.com/getgrav/grav-plugin-form/pull/502)
# v5.0.0
## 02/17/2021
1. [](#new)
* Requires **Grav 1.7.0**
* Allow admins to temporarily disable form process actions by setting the value to `false` [#481](https://github.com/getgrav/grav-plugin-form/pull/481)
1. [](#improved)
* Add `id` attribute to hidden field [#495](https://github.com/getgrav/grav-plugin-form/pull/495)
* Escape text as YAML in multi-line textarea [#464](https://github.com/getgrav/grav-plugin-form/pull/464)
1. [](#bugfix)
* Fixed reCaptcha v3 incompatibility with multiple forms on the same page sharing different actions [#416](https://github.com/getgrav/grav-plugin-form/issues/416)
* Toggle fields do not save `false` if they are `toggleable` [#497](https://github.com/getgrav/grav-plugin-form/issues/497)
* Data template fixes [#494](https://github.com/getgrav/grav-plugin-form/pull/494)
* Fix deprecated Twig method
# v4.3.1
## 01/31/2021
1. [](#improved)
* Updated deprecated `Twig_SimpleFunction` code
* Added Lithuanian translation [#485](https://github.com/getgrav/grav-plugin-form/pull/485)
1. [](#bugfix)
* Fixed state of the checkbox if no value is provided
* Fixed evaluating default value in `hidden` field (thanks @NicoHood)
* Fixed default value to come from the `Form` in overridable field (thanks @NicoHood)
* Fix for disabling `client_side_validation` [#482](https://github.com/getgrav/grav-plugin-form/pull/482)
* Fix for translations in `select` field in data template [#475](https://github.com/getgrav/grav-plugin-form/pull/475)
* PHPDoc fixes
# v4.3.0
## 12/14/2020
1. [](#new)
* Added a new condition attribute for tab for logic to process if it should display or not
1. [](#improved)
* Added priority to form translations/config
1. [](#bugfix)
* Fix admin access check [#463](https://github.com/getgrav/grav-plugin-form/pull/463)
# v4.2.0
## 12/02/2020
1. [](#improved)
* Added support for arbitrary `attributes` on `form`, `textarea` and `checkbox` and `buttons`. [#447](https://github.com/getgrav/grav-plugin-form/issues/447) [#448](https://github.com/getgrav/grav-plugin-form/issues/448)
* Better support for array field key/value when either key or value are left empty
* Allow data-* form parameters to be used as <form> attributes. [#336](https://github.com/getgrav/grav-plugin-form/pull/336)
* Allow action param when including form partial [#410](https://github.com/getgrav/grav-plugin-form/pull/410)
* Also support validate min/max for textarea [#455](https://github.com/getgrav/grav-plugin-form/pull/455)
* Translate form labels also in text file [#444](https://github.com/getgrav/grav-plugin-form/pull/448)
1. [](#bugfix)
* Fixed KeepAlive issue where too large of a session value would fire the keep alive immediately
* Fixed stringable objects breaking the inputs
* Remove unused route variable from `file` field
* Fix condition for required attribute in toggle field [#451](https://github.com/getgrav/grav-plugin-form/pull/451)
* Fix form data template when select field is set to multiple [#452](https://github.com/getgrav/grav-plugin-form/pull/452)
* Fix has-errors for select and other fields [#454](https://github.com/getgrav/grav-plugin-form/pull/454)
* Fix #453 section title level [#459](https://github.com/getgrav/grav-plugin-form/pull/459)
# v4.1.2
## 10/07/2020
1. [](#bugfix)
* Added some missing class attributes
# v4.1.1
## 09/01/2020
1. [](#bugfix)
* Key field should not escape the value
# v4.1.0
## 07/29/2020
1. [](#new)
* Support JSON based form submissions
1. [](#improved)
* Improved handling of error messages with more details + translation [#428](https://github.com/getgrav/grav-plugin-form/pull/428) [#429](https://github.com/getgrav/grav-plugin-form/pull/429)
* Various improvements for nested form data in `data.html.twig` and `data.txt.twig`
* Use `|length` rather than `|count` twig filter
* Various language updates
1. [](#bugfix)
* Disabled the EXIF library for Dropzone for fixing the orientation as it was getting applied twice [#1923](https://github.com/getgrav/grav-plugin-admin/issues/1923)
* Forked Dropzone fo fix issue with Resize + EXIF orientation [#1923](https://github.com/getgrav/grav-plugin-admin/issues/1923)
# v4.0.10
## 06/08/2020
1. [](#improved)
* Updated languages
1. [](#bugfix)
* Fixed redirect causing empty form on homepage forms with no action set
# v4.0.9
## 06/03/2020
1. [](#bugfix)
* Fixed bad `id` attribute on `checkbox` field [#421](https://github.com/getgrav/grav-plugin-form/issues/421)
* Show the `description` span even for an empty description [#313](https://github.com/getgrav/grav-plugin-form/pull/313)
# v4.0.8
## 04/30/2020
1. [](#bugfix)
* Fixed issue with `force_bool` in `toggle` field to be more robust
# v4.0.7
## 04/27/2020
1. [](#new)
* Added ability to hide form fields in `data.html.twig` and `data.txt.twig` with `field.store: false`
1. [](#improved)
* Updated node dependencies
* Added new `force_bool: true|false` option to `toggle` field to cast strings for use in BC situations
1. [](#bugfix)
* Fix markdown links in changelog [#415](https://github.com/getgrav/grav-plugin-form/pull/415)
# v4.0.6
## 03/19/2020
1. [](#new)
* CHANGE: Form labels are now displayed in `raw` format so you can use HTML in them
* Added support for `name` attribute on buttons [#411](https://github.com/getgrav/grav-plugin-form/issues/411)
1. [](#improved)
* Added support for `classes` option in `avatar` field
* Recompiled JS with latest NPM libraries
1. [](#bugfix)
* Fixed password field outputting the contents to HTML (will now always be empty when loading the page)
* Escape default output in `formdata.html.twig` [#384](https://github.com/getgrav/grav-plugin-form/issues/384)
* Better JS rendering of captcha field scripts for VueJS template compatibility
# v4.0.5
## 03/05/2020
1. [](#bugfix)
* Fixed form actions that post to page anchors should not have current base_url added (e.g. `#contact-us`)
* Fixed toggleable buttons no longer holding false state [#406](https://github.com/getgrav/grav-plugin-form/issues/406)
# v4.0.4
## 02/25/2020
1. [](#bugfix)
* Fix for `enctype` in multipart forms [#408](https://github.com/getgrav/grav-plugin-form/issues/408)
# v4.0.3
## 02/11/2020
1. [](#new)
* Pass phpstan level 1 tests
# v4.0.2
## 02/03/2020
1. [](#improved)
* Allow checkbox field to have custom value, default to 1
1. [](#bugfix)
* Fixed `toggle` field not working with `toggleable: true`
* Fixed fatal error when form type is disabled
# v4.0.1
## 01/02/2020
1. [](#improved)
* Improve Grav 1.7 support by not using deprecated `$page->modular()` call
* Use form scope if it is defined
1. [](#bugfix)
* Fixed bad HTML in select, radio, key, toggle, checkbox ad textarea when using tabindex attribute
* Fixed bad looking `tabs` field with a single tab in admin
# v4.0.0
## 11/06/2019
1. [](#new)
* Added `tabindex` to global attributes of default field
* Add ability to Sanitize SVGs on upload (Grav 1.7+ required)
1. [](#improved)
* Deprecate `select_optgroup` as `select` can handle optgroups now
* Added missing tabindex checks
* Refactored field inheritance to make things more reliable
* Removed jQuery dependency for the reCaptcha field and VanillaJS-ified it instead
* Removed a stray `dump()` command
* Refactored the base `templates/forms/default` twig templates to make things more extensible
* Added a new `templates/forms/layouts` set of twit templates to allow for easier customization
1. [](#bugfix)
* Fixed `Badly encoded JSON data` warning when uploading files [grav#2663](https://github.com/getgrav/grav/issues/2663)
* Fixed a number of escaping issues [#368](https://github.com/getgrav/grav-plugin-form/issues/368)
# v3.0.9
## 09/19/2019
1. [](#improved)
* Removed jQuery dependency for the reCaptcha field and VanillaJS-ified it instead
* Updated to ReCaptcha library version `1.2.3`
1. [](#bugfix)
* Fixed `Badly encoded JSON data` warning when uploading files [grav#2663](https://github.com/getgrav/grav/issues/2663)
# v3.0.8
## 08/14/2019
1. [](#improved)
* Change form save action location to `user-data://` stream [#353](https://github.com/getgrav/grav-plugin-form/issues/353)
* Updated `eu`, `fr` and `pl` language
* Make `Form::initialize()` chainable
* Added `folder` option to `save:` action with fallback
1. [](#bugfix)
* Fixed Submit & Redirect not working as expected [#355](https://github.com/getgrav/grav-plugin-form/issues/355)
* Fixed oversensitive refresh prevention [#354](https://github.com/getgrav/grav-plugin-form/issues/354)
* Fixed issue with Form JS when pipeline is enabled [grav#2592](https://github.com/getgrav/grav/issues/2592)
* Fixed `accept` for SVG in file field [#364](https://github.com/getgrav/grav-plugin-form/pull/364)
* Fixed issue with plugin not returning expected form [#309](https://github.com/getgrav/grav-plugin-form/pull/309)
* Fixed form message not showing up after reset process
* Fixed form fields inside a single tab not using value from the form object if it is available
* Fixed file form field failing resolution checks in certain circumstances
# v3.0.7
## 07/01/2019
1. [](#bugfix)
* Fixed file upload when `$grav['user']` is not set [#352](https://github.com/getgrav/grav-plugin-form/issues/352)
* Fixed label markdown being escaped [#356](https://github.com/getgrav/grav-plugin-form/pull/356)
# v3.0.6
## 06/24/2019
1. [](#bugfix)
* Fixed regression breaking forms external to the page in some sites
* Fixed regression with form action in sub-path folders
# v3.0.5
## 06/21/2019
1. [](#new)
* Added support for form state saving with dynamic unique id appended to the URL
1. [](#improved)
* Avoid creating form state if there is no data to be saved
1. [](#bugfix)
* Fixed missing check for maximum allowed files in `files` field
* Fixed unique form ids getting cached, they should change on every page reload
# v3.0.4
## 06/14/2019
1. [](#improved)
* Captcha field: fail silently and display error in console if site_key was not defined
* Support inline-errors, prepend, append in `textarea`
1. [](#bugfix)
* Use less-strict comparison when checking version 3 [#344](https://github.com/getgrav/grav-plugin-form/issues/344)
# v3.0.3
## 05/09/2019
1. [](#new)
* Added Text `field.copy-to-clipboard` which can be used by admin plugin
1. [](#bugfix)
* Fixed Flex route issue in list page
* Fix flex-height of signature field
* Fix for broken `field.recaptcha_site_key` [#344](https://github.com/getgrav/grav-plugin-form/issues/344)
* Fix for checkbox data lang string [#343](https://github.com/getgrav/grav-plugin-form/issues/343)
* Fix for duplicate inline error messages [#337](https://github.com/getgrav/grav-plugin-form/issues/337)
* Fixed bad folder permissions when creating folder for file uploads
# v3.0.2
## 04/22/2019
1. [](#new)
* Support for Google Recaptcha theme (light/dark) doesn't work in v3 yet.
1. [](#improved)
* Visual upgrade for form field descriptions [#335](https://github.com/getgrav/grav-plugin-form/pull/335)
1. [](#bugfix)
* Fixed issue with `recaptcha_not_validated` property not being used
# v3.0.1
## 04/15/2019
1. [](#new)
* Added support for form task in blueprint
1. [](#bugfix)
* Fix url field output in list view
# v3.0.0
## 04/11/2019
1. [](#new)
* Allow streams in `file` field widget [#119](https://github.com/getgrav/grav-plugin-form/issues/119)
* Use new unified `|t` translate filter in all fields
* Google reCAPTCHA v3 support added
* Google reCAPTCHA v2 Invisible support added
* Added mutliple forms with reCAPTCHA support
* Form no longer extends `Grav\Common\Iterator` (may have some backward compatibility issues with plugins, likely not)
* Form now uses `NestedArrayAccessWithGetters` (with '/' separator) and `FormTrait` traits
* Added `view`, `key`, `ignore`, `section`, `toggle`, `tabs` and `tab` form fields
* Added support for `toggleable` inputs, which can be disabled/enabled by user
* Added `$grav['forms']` to allow plugins to better use forms [#307](https://github.com/getgrav/grav-plugin-form/pull/307)
* Added support for custom form types
* Forms can now remember their state after page reload with YAML `datasets: store-state: true` set in the fields
* Added `clear-state` AJAX task
* Added task to clear form flash
* Added support for file-upload and file-remove tasks
* Added ability to set a custom `clear_redirect_url` on a form
* Added `Form::setMessage()` method
* Added new form field templates for edit list table
* Requires Grav 1.6.0-beta.7 (and optionally Admin 1.9.0-beta.7)
* Backwards incompatibility: Do not allow static `Form::getNonce()` call, only `$form->getNonce()` works now
* Backwards incompatibility: All form field twig files are required to extend `field.html.twig` to work properly
* Allow using custom nonce field/action by setting `nonce.name` and `nonce.action` inside the form YAML
* Added `html: true` support for form buttons (will not escape the button value)
* Added `toggle`, `tabs` and `tab` form fields
* Added support for toggleable inputs, which can be disabled/enabled by user
* Added proper support for hiding form fields in blueprints by using dynamic property like `security@: admin.foobar` to any field
1. [](#improved)
* Make fields `formname`, `uniqueid` and `honeypot` non-inputs in form validation
* Update all Form classes to rely on `PageInterface` instead of `Page` class
* Removed `media.upload_limit` references
* Added field type `hidden` to `ip` and `timestamp` actions
* Improved the `hidden` field logic to support `value` or `default` set
* Set the message globally on `messages` object when using a redirect in form
* Improved logic for finding the current form
* Added support for data-sets in `textarea` and `select` fields
* Simplify `shouldProcessForm()` logic
* Do not cache flat forms list, regenerate it instead
* Fixed some inconsistencies on how blueprints are handled
* Improved uploads handling, added new `upload: true|false` process
* Make `Form` implement `FormInterface`
* Added `field.size` in `array`, `select`, and `textarea`
* Enable forms in admin plugin
* Removed submit of unchecked fields in frontend
* Make sure that the images in the file field are not cached in browser
* Updated code to use PHP 7.1 features
* Added some extra blocks to `file` field to make it more extensible
* Added `field.classes` to form field to allow customization
* Used Google reCAPTCHA API all token validation
* Better filename and mime type handling
* Now using the new core Grav language prefix
* Make all form fields to extend `field.html.twig`
1. [](#bugfix)
* Fixed old way to access form name
* Fixed minor bugs
* Fixed null date/time in list view
* Fixed forms not being cached properly
* Fixed issue with `selectize`, automatically selecting an unintended value
* Throw exception if you try to `add` to a file and don't provide `filename` [#324](https://github.com/getgrav/grav-plugin-form/issues/324)
* Fixed file field saving with nested name
* Fixed file saving if destination folder does not exist
* Fixed FormFlash object not getting deleted on form post
* Regression: Fixed ignored form action [#318](https://github.com/getgrav/grav-plugin-form/issues/318)
* Regression: Fixed modular form submit not triggering the action sometimes
* Fixed modular form submits without defined `action: /path` inside the form
* Fixed form processing in nested modular pages
* Fixed container fields breaking values from the child fields
* Fixed form fields not accepting object values
* Fixed some form fields having no value for nested field sets
* Fixed double escaping of `file` type input JSON value
* Fixed double locking of file when calling processor save
* Fixed some missing backwards compatibility
* Fixed some issues with flashed form
* Fixed Twig 2 compatibility issue
* Fixed files uploading before captcha check
* Fixed files uploading before data has been stored
* Fixed some issues with reCAPTCHA v3
* Fixed error responses when file actions fail in the form
* Pass unique_id when uploading files if available
# v2.16.4
## 12/14/2018
1. [](#improved)
* Better handling of invalid file names during upload
* Better MIME type checking of files during file upload
* Do not rely on jQuery for merging languages from form fields [#290](https://github.com/getgrav/grav-plugin-form/issues/290) [#291](https://github.com/getgrav/grav-plugin-form/issues/291)
2. [](#bugfix)
* Remove jQuery dependency in form.html.twig (#290)
3. [](#new)
* Added Object.assign-polyfill (#291)
# v2.16.3
## 09/21/2018
1. [](#improved)
* Use `Url:post()` to get the `$_POST` variable (allows common security checks/filtering for the POST data)
* Various JS tweaks and enhancements
1. [](#bugfix)
* Fixed issue where `select` set up as `multiple` and with `selectize: create: true` would not properly merge newly created values on rendering.
# v2.16.2
## 08/23/2018
1. [](#improved)
* Switched to new Grav `Yaml` class to support Native + Fallback YAML libraries
* Simple styling fixes for `array` field
1. [](#bugfix)
* Fixed issue with translations of placeholder text in `array` field
# v2.16.1
## 08/20/2018
1. [](#new)
* Fixed a regression issue with `file` & `array` field
# v2.16.0
## 08/20/2018
1. [](#new)
* Added new `form.keep_alive` option to keep session alive [#275](https://github.com/getgrav/grav-plugin-form/issues/275)
* Added `array` field for frontend use
1. [](#improved)
* Improving compatibility `autocomplete` spec [#274](https://github.com/getgrav/grav-plugin-form/pull/274)
# v2.15.1
## 06/20/2018
1. [](#improved)
* Including EXIF JS library in the modules dependencies to fix orientation when uploading images
1. [](#bugfix)
* Fix HTML data template for checkboxes fields where 'use' property is "keys" [#258](https://github.com/getgrav/grav-plugin-form/pull/258)
# v2.15.0
## 05/31/2018
1. [](#new)
* Added support for `Uri::post()`
* Added support for `autocapitalize`, `inputmode`, and `spellcheck` options in field definitions
# v2.14.1
## 05/15/2018
1. [](#bugfix)
* Fixed regression with select field, causing issues with filepicker field [grav-plugin-admin#1441](https://github.com/getgrav/grav-plugin-admin/issues/1441)
# v2.14.0
## 05/11/2018
1. [](#new)
* Make `pagemedia` field available outside of pages context
* Added option on fields to disable displaying of label (`display_label: false`)
* Moved Dropzone HTML into an overridable Twig template
* Added support for image upload delete in Dropzone `file` field
1. [](#improved)
* Added support for `optgroup` within select field
* Save forms only once (stops extra work being done)
* Allow file field to pass dropzone options
* Added datasets support to fields
* Added `field.classes` support to display field
1. [](#bugfix)
* Removed overridden class in `password` field
* Worked around forms being lost if form cache expired before page cache, see [#240](https://github.com/getgrav/grav-plugin-form/pull/240)
* Fixed default form in dynamically created page if header uses `forms` instead of old `form` field
* Escape placeholder text in default field
# v2.13.3
## 04/13/2018
1. [](#new)
* Added support to save form data in raw format (yaml or json)
* Added new `timestamp` action to add a timestamp field
# v2.13.2
## 04/12/2018
1. [](#new)
* Added event `onFormPrepareValidation` to allow some pre-processing before form validation
* Added new `postfix` and `dateraw` options to "Save" action
1. [](#improved)
* Added support for `nest_id` boolean flag to `fieldset` field to nest sub-fields with name of fieldset
* Added classes attribute to `spacer` field
1. [](#bugfix)
* Fixed `Form::setFields()` causing validation to fail on added and removed fields
# v2.13.1
## 03/21/2018
1. [](#improved)
* CAPTCHA fallback to `cURL` if `Fopen` is not allowed [#224](https://github.com/getgrav/grav-plugin-form/pull/244)
* Use `visibility:hidden` rather than `display:none` for honeypot field [#235](https://github.com/getgrav/grav-plugin-form/pull/235)
* Added support for markdown in checkbox field [#233](https://github.com/getgrav/grav-plugin-form/pull/233)
* Added option to control `inline_css: true|false` for fields such as honeypot
* Added class and CSS for honeypot field
# v2.13.0
## 03/09/2018
1. [](#new)
* Forced registration of `Form` page template for admin
* Implemented support for `resolution` setting for images in file field
* Implemented support for `resizeWidth`, `resizeHeight`, `resizeQuality` and updated Dropzone to latest version
* Added a new `signature` field
1. [](#improved)
* Force an `onPageProcessed()` event if page cache expires before form cache [#240](https://github.com/getgrav/grav-plugin-form/pull/240)
1. [](#bugfix)
* Fixed an issue where unlimited size `0` was not being set properly in File field
* `field.description` now translated and displays properly
# v2.12.0
## 02/22/2018
1. [](#new)
* Added toggle to enable/disable client-side HTML5 validation
* Added toggle to enable/disable inline-error messages
1. [](#improved)
* Reformatted `form.php` plugin class for better readability
1. [](#bugfix)
* Fixed an issue with in-content Twig forms not working because forms were not initialized yet
# v2.11.5
## 02/16/2018
1. [](#new)
* Added support for `form: process: - call: ['Class', 'method']` for custom form handling
1. [](#bugfix)
* Fixed regression in v2.11.4: Call to a member function post() on null [grav#1720](https://github.com/getgrav/grav/issues/1720)
# v2.11.4
## 02/15/2018
1. [](#improved)
* Stopped Chrome from auto-completing admin user profile form [grav#1847](https://github.com/getgrav/grav/issues/1847)
* Start using composer to autoload classes
* Added support for `switch` to be treated as checkbox
1. [](#bugfix)
* Fixed missing form submit in dynamically created pages
# v2.11.3
## 01/31/2018
1. [](#new)
* Added support for `file` in **Display** field. Allows the ability to read a file and output it, works in combination with `|markdown` filter
* Added `minlength` and `maxlength` to **Textarea** field [#231](https://github.com/getgrav/grav-plugin-form/pull/231)
# v2.11.2
## 01/22/2018
1. [](#new)
* Added support for markdown in all form fields for `label`, `help`, and `description` when `markdown: true` is set on field
# v2.11.1
## 12/18/2017
1. [](#improved)
* Updated default fields to make them more consistent with class names
# v2.11.0
## 12/05/2017
1. [](#new)
* Added ability to set `novalidate: true` on form definition to turn off all HTML5 form validation
1. [](#improved)
* Improved logic to handle dynamically added forms to be more reliable
* Added Dutch Translation [#207](https://github.com/getgrav/grav-plugin-form/pull/207)
* Improved both HTML and JSON error output by utilizing `form.status`
* Code Cleanup
1. [](#bugfix)
* Fix AJAX response message and wrong status [#211](https://github.com/getgrav/grav-plugin-form/pull/211)
* Escaped YAML to form save action to prevent parsing errors [#206](https://github.com/getgrav/grav-plugin-form/pull/206)
* Fixed RU translations [#204](https://github.com/getgrav/grav-plugin-form/pull/204)
* Fixed nonce check fail not setting status to `error` [#213](https://github.com/getgrav/grav-plugin-form/issues/213)
* Fixed validation fail not setting status to `error` [#209](https://github.com/getgrav/grav-plugin-form/issues/209)
* Catch ValidationException to avoid potential fatal error
* Fixed regression issue on reset fields
* Removed `required` attribute in individual checkboxes as it forces all to be checked
* Security fix to ensure file uploads are not manipulated mid-post - thnx @FLH!
# v2.10.0
## 10/26/2017
1. [](#new)
* Added ability to 'remember' field values in cookie between submissions [#200](https://github.com/getgrav/grav-plugin-form/pull/200)
1. [](#improved)
* Added back improved `filesize` option that falls back to PHP file upload limits by default [#202](https://github.com/getgrav/grav-plugin-form/issues/202)
* Added missing file upload options into blueprints and language files
* Added the ability for a form to have an `http_response_code` and use it for `form-messages.html.twig` (requires Grav v1.3.6+)
# v2.9.3
## 10/11/2017
1. [](#improved)
* Removed `filesize` plugin configuration in favor of `system.media.upload_limit`
* Consolidated `field.classes` and `field.wrapper_classes` in radio/checkbox/checkboxes [#193](https://github.com/getgrav/grav-plugin-form/issues/)
* Remove trailing slash from form action [#195](https://github.com/getgrav/grav-plugin-form/issues/195)
* Improved `honeypot` validation check [#198](https://github.com/getgrav/grav-plugin-form/issues/198)
# v2.9.2
## 09/30/2017
1. [](#improved)
* Improved Polish translation
1. [](#bugfix)
* Added missing `@input: false` attributes to some non-display fields [#189](https://github.com/getgrav/grav-plugin-form/issues/189)
# v2.9.1
## 09/14/2017
1. [](#bugfix)
* Fixed backwards compatibility issue with conditional field [#188](https://github.com/getgrav/grav-plugin-form/pull/188)
# v2.9.0
## 09/07/2017
1. [](#new)
* Added **Refresh Prevention** capabilities (Not enabled by default) [#184](https://github.com/getgrav/grav-plugin-form/issues/184)
* Added support for field `attributes` [#176](https://github.com/getgrav/grav-plugin-form/pull/176)
* Added global variables for setting form classes
* Added support for new `select_optgroup` form field [#165](https://github.com/getgrav/grav-plugin-form/issues/165)
1. [](#improved)
* Moved messages output into partial to allow style overriding
* Logic cleanup
* Updated Italian and Russian translations
1. [](#bugfix)
* Fixed an issue with conditional field not always displaying properly
* Only add Twig form variable if not already set
* Fixed issue with multiple forms on a page failing on Captcha client-side validation [#182](https://github.com/getgrav/grav-plugin-form/issues/182)
* Fixed issue with Ajax forms return full form HTML on error [#163](https://github.com/getgrav/grav-plugin-form/issues/163)
# v2.8.2
## 08/18/2017
1. [](#new)
* Added new `columns` and `column` fields for controlled form layout
# v2.8.1
## 08/15/2017
1. [](#improved)
* Added extra class support to the default field for more flexible styling
# v2.8.0
## 07/16/2017
1. [](#bugfix)
* Fixed a typo in the spanish translation [#167](https://github.com/getgrav/grav-plugin-form/pull/167)
# v2.8.0-rc.2
## 06/22/2017
1. [](#improved)
* Add default client-side validation for captcha, with error popup [#139](https://github.com/getgrav/grav-plugin-form/issues/139)
* Added key observe for select
* Added Czech translation
1. [](#bugfix)
* Bug fix for radio type form field [#154](https://github.com/getgrav/grav-plugin-form/pull/154)
* Remove double escaping [#155](https://github.com/getgrav/grav-plugin-form/issues/154)
# v2.8.0-rc.1
## 05/22/2017
1. [](#new)
* Bundled as RC release for Grav/Admin RC releases
# v2.7.1
## 05/22/2017
1. [](#improved)
* Force modular sub-pages with forms to set `$never_cache_twig = true` to improve form processing reliability [#153](https://github.com/getgrav/grav-plugin-form/issues/153)
* Use new `Utils::getPagePathFromToken()` method
# v2.7.0
## 05/16/2017
1. [](#bugfix)
* Fix issue with dynamically added forms (Registration, Profile, Comments, etc) not processed [#149](https://github.com/getgrav/grav-plugin-form/issues/149)
* Fixed issue with nested values not being repopulated on form error [#140](https://github.com/getgrav/grav-plugin-form/issues/140)
# v2.6.0
## 05/04/2017
1. [](#new)
* Allow form item replacement in redirect location [#144](https://github.com/getgrav/grav-plugin-form/issues/144)
1. [](#bugfix)
* Fix regression with file uploads introduced in 2.5.0
# v2.5.0
## 04/24/2017
1. [](#new)
* Support proper form handling with nested fields [#141](https://github.com/getgrav/grav-plugin-form/issues/141)
1. [](#bugfix)
* Added check for valid Grav forms before trying to create a form object
# v2.4.0
## 04/19/2017
1. [](#new)
* Added the ability for front-end forms to use advanced blueprint features such as `data-*@` and `config-*@`
* Added support for dynamically added pages to process forms properly
* Added a new avatar field for displaying account avatar
* Added method to get all `data` from a form
* Support `task` in button types
1. [](#improved)
* Added `step` to range field [#136](https://github.com/getgrav/grav-plugin-form/issues/136)
* Added a new default ajax handler twig template
* Moved twig events to always process even if forms are not defined
* Some code cleanup
* Handle `null` with session-based form
* Added support for append/prepend to number field
1. [](#bugfix)
* Always process form events as long as a `$_POST` exists [login #101](https://github.com/getgrav/grav-plugin-login/issues/101)
* Various fixes for `file` field
* Allow manually added pages to process forms and upload files
* Fixed issue with nested fileds not showing up in `data.*.twig` templates
# v2.3.1
## 03/23/2017
1. [](#bugfix)
* Only include `outerclasses` DIV if defined [#135](https://github.com/getgrav/grav-plugin-form/issues/135)
# v2.3.0
## 03/17/2017
1. [](#new)
* Ability to process any form on any page via `action:`. Super useful if you want to handle form processing on some other non-form page (or Ajax)
* Added the ability for the form to set the `template:` to use to render the form processing response.
1. [](#bugfix)
* Fix `number` field so it works with min value `0` [#130](https://github.com/getgrav/grav-plugin-form/issues/130)
# v2.2.0
## 03/13/2017
1. [](#new)
* Added new `fieldset` form field [#125](https://github.com/getgrav/grav-plugin-form/issues/125)
* Added new `conditional form field` to show fields only if some `condition` is set
1. [](#improved)
* Added the option to have outer-classes on buttons [#124](https://github.com/getgrav/grav-plugin-form/issues/124)
* Added the option to disable fields label if not defined [#126](https://github.com/getgrav/grav-plugin-form/issues/126)
# v2.1.1
## 02/17/2017
1. [](#improved)
* Better default output for select, checkbox and checkboxes fields in the form destination page and in the emails sent via form submit [#121](https://github.com/getgrav/grav-plugin-form/issues/121)
# v2.1.0
## 02/10/2017
1. [](#improved)
* Reworked logic so form caching is based on `Pages::getPagesCacheId()`
* Added `url` option for button field
1. [](#bugfix)
* Fixed issue with `honeypot` field not throwing exception properly
# v2.0.10
## 02/08/2017
1. [](#improved)
* Optimistically set 'status' to `success` when requesting a form via Ajax. Form processing listeners should take care of setting status to something else
1. [](#bugfix)
* File uploads are now adding a `__form-file-uploader__` POST field to better allow identifying them with Ajax
* Require jQuery when using the File field, as it's needed by the form.min.js file required in the file upload functionality
# v2.0.9
## 01/24/2017
1. [](#bugfix)
* Translate the labels in data.html.twig [https://github.com/getgrav/grav-plugin-comments/issues/38](https://github.com/getgrav/grav-plugin-comments/issues/38)
* Fixed file input when `System` > `Twig` > `Autoescape` is set to `Yes`
# v2.0.8
## 12/13/2016
1. [](#new)
* RC released as stable
* Added a new `honeypot` field for form anti-spam protection
# v2.0.8-rc.1
## 11/26/2016
1. [](#bugfix)
* Fixed Forms 2.0 changes for registration form [#101](https://github.com/getgrav/grav-plugin-form/issues/101)
* Fixed errant reference to Grav DI container in Form#getPagePathFromToken [#105](https://github.com/getgrav/grav-plugin-form/issues/105)
* Fixed issue with spacer fields being displayed first, not in order [#104](https://github.com/getgrav/grav-plugin-form/issues/104)
# v2.0.7
## 11/17/2016
1. [](#improved)
* Added method to set all data in a form
* Added params to form action URL
* Added ability to add ids to buttons and to set them disabled
1. [](#bugfix)
* Moved Files Upload GC logic to function in front-end only
# v2.0.6
## 10/19/2016
1. [](#bugfix)
* Fixed translations for `display` field
* Fixed [#95](https://github.com/getgrav/grav-plugin-form/issues/95) multilanguage forms submission
* Fixed duplicate textarea class tag [#98](https://github.com/getgrav/grav-plugin-form/issues/98)
# v2.0.5
## 09/15/2016
1. [](#bugfix)
* Fix passing updating the header through event, no need for return value
# v2.0.4
## 09/15/2016
1. [](#improved)
* Allow filling the page header form dynamically (e.g. use case: Comments plugin)
# v2.0.3
## 09/12/2016
1. [](#improved)
* Use `Page::slug()` for form name if not set in the form itself (better backwards compatibility)
# v2.0.2
## 09/08/2016
1. [](#improved)
* Added support for Grav's autoescape twig setting
* Allow to add additional markup fields in form and field twig overrides
* Updated the french language translation
# v2.0.1
## 09/07/2016
1. [](#bugfix)
* Fixed a backwards compatibility issue with Admin forms
# v2.0.0
## 09/07/2016
1. [](#new)
* Forms now supports multiple forms per page!
* Access forms from any other page within the current page
* Instantiate forms directly in page content with Twig processing enabled
* New Twig function to get forms data from any other page
* Ability to use Twig in saved filename
* Reworked the `file` field. All files get uploaded via Ajax and are stored upon Submit. Fully backward compatible, `file` field now includes also a `limit` and `filesize` option. The former determines how many files are allowed to be uploaded when in combination with `multiple: true` (default: 10), the latter determines the file size limit (in MB) allowed for each file (default: 5MB)
1. [](#improved)
* Added several missing HTML5 form input field types [#87](https://github.com/getgrav/grav-plugin-form/issues/87)
* Added Support for CSS id in form definition
# v1.3.2
## 08/10/2016
1. [](#improved)
* Added Romanian translation
1. [](#bugfix)
* Fixed an issue with Recaptcha secret throwing errors [#84](https://github.com/getgrav/grav-plugin-form/pull/84)
# v1.3.1
## 07/27/2016
1. [](#improved)
* Added support for multiple emails in `email` field (add `multiple: true` to enable)
1. [](#bugfix)
* Fixed backward incompatibility with forms submission and data retrieval [getgrav/grav#933](https://github.com/getgrav/grav/issues/933)
# v1.3.0
## 07/14/2016
1. [](#improved)
* When uploading a file through a form, if the file is already existing prepend the current day and time to the filename instead of overwriting it.
# v1.3.0-rc.4
## 06/21/2016
1. [](#bugfix)
* Fixed running on Grav 1.0.x
# v1.3.0-rc.3
## 06/17/2016
1. [](#new)
* Set hints for checkboxes options and allow field descriptions
# v1.3.0-rc.2
## 06/08/2016
1. [](#new)
* Allow to process Twig in a hidden field, by setting `evaluate: true`
# v1.3.0-rc.1
## 06/01/2016
1. [](#improved)
* French updated
# v1.3.0-beta.6
## 05/23/2016
1. [](#new)
* Added support for advanced blueprint functionality in forms
* Added site-wide form options to set Google Captcha site + secret keys [#34](https://github.com/getgrav/grav-plugin-form/pull/34)
* Session-based 'flash' storage of form for redirects [#48](https://github.com/getgrav/grav-plugin-form/issues/48)
* Added ability to **append** to file if you include a `process: save: body:` template attribute [#65](https://github.com/getgrav/grav-plugin-form/issues/65)
1. [](#improved)
* Support `keyname` form format like admin forms
* Added backwards compatibility for Captcha field
* Added 'markdown-notices' style output for better errors
* Added `Forms::getValue()` method to retrieve values programatically
* Changed `datetime` form field to simply extend `text` until implemented
* Updated french language
1. [](#bugfix)
* Refactored the files upload logic
* Missing Language string
* Fixed errors not getting output
# v1.3.0-beta.5
## 05/12/2016
1. [](#improved)
* Moved form/field.html.twig file to the default folder, to be more easily extended in themes
# v1.3.0-beta.4
## 05/04/2016
1. [](#new)
* Added support for `prepend` and `append` field attributes for Text input
# v1.3.0-beta.3
## 05/03/2016
1. [](#bugfix)
* Fix for select field admin translation
# v1.3.0-beta.2
## 04/27/2016
1. [](#bugfix)
* Fix for autoescape in spacer and display form fields
* Fix issue with form reset action [#66](https://github.com/getgrav/grav-plugin-form/pull/66)
# v1.3.0-beta.1
## 04/20/2016
1. [](#new)
* Added the HTML5 `range` input field with `min` and `max` parameters
1. [](#improved)
* Allow to override classes in Form definition for the form element
* Add more blocks in the Form twig template, so classes can be overridden more easily in themes
* Reworked some fields to fit the new Admin
* Use `scope` for form fields to allow fields to be excluded from the data by adding `input@: false` to their definition
* Added german translation
* Allow to add inline Twig to the form message definition
1. [](#bugfix)
* Fixed the form action URL for home page forms
* Fix stopping form events propagation, correctly stop when one event is stopped
* Allow to translate the fields placeholders and the form message
* Fix captcha javascript function ordering. Also, render it in the site active language
* Support attribute `for="id"` on label for checkbox
* Fix select fields with the multiple option enabled
* Fixed select options escaping with autoescape on - [#502](https://github.com/getgrav/grav-plugin-admin/issues/502)
# v1.2.2
## 02/11/2016
1. [](#bugfix)
* Fixed case issue when including form file.
# v1.2.1
## 02/11/2016
1. [](#new)
* Allow placeholder for **select** field
1. [](#improved)
* Use common language strings in blueprints
* Use `for` attribute in labels
* Improved `README.md`
* Code lint
1. [](#bugfix)
* Moved `nl2br` to correct place or will break for arrays
# v1.2.0
## 01/06/2016
1. [](#bugfix)
* Correctly merge the file field configuration
* restore full file information save
# v1.1.0
## 12/18/2015
1. [](#new)
* Croatian translation
* Added id, style, and disabled options to select fields
1. [](#improved)
* Allow adding form labels and help text as lang strings
* Allow translating field content
* Allow translating button and checkbox labels
* Allow adding classes to the form field container with `field.outerclasses`
* Updated French translation
1. [](#bugfix)
* Fixed error message on file upload
* Fixed overriding defaults for the file type in forms
# v1.0.3
## 12/11/2015
1. [](#improved)
* Updated languages
* Allow an action to stop processing
1. [](#bugfix)
* Fix captcha validation
* Fix issue where Form was unsetting valid page
# v1.0.2
## 12/01/2015
1. [](#bugfix)
* Fixed merge of defaults settings
* Support for arrays in `data.txt.twig`
* Fixed blueprint for admin
# v1.0.1
## 12/01/2015
1. [](#new)
* New **file upload** field
* Added modular form template
* Spanish translation
* Hungarian translation
* Italian translation
# v1.0.0
## 11/21/2015
1. [](#new)
* Server-side validation of forms #11
* Added french translation
* Added **nonce** form security
1. [](#improved)
* Show a more meaningful error when the display page is not found
* Added links to learn site for form examples
* Label can be omitted
* Allow user to set the CSS class for buttons
1. [](#bugfix)
* Fixed multi-language forms
* Checkbox is translatable
* Minor fixes
# v0.6.0
## 10/21/2015
1. [](#bugfix)
* Fixed for missing attributes in textarea field
* Fixed checkbox inputs
# v0.5.0
## 10/15/2015
1. [](#new)
* New `operation` param to allow different file saving strategies
* Ability to add new file saving strategies
* Now calls a `process()` method during form processing
1. [](#improved)
* Added server-side captcha validation and removed front-end validation
* Allow `filename` instead of `prefix`, `format` + `extension`
1. [](#bugfix)
* Fixed radio inputs
# v0.4.0
## 9/16/2015
1. [](#new)
* PHP server-side form validation
* Added new Google Catpcha field with front-end validation
1. [](#improved)
* Add defaults for forms, moved from the themes to the Form plugin
* Store multi-line fields with line endings converted to HTML
# v0.3.0
## 9/11/2015
1. [](#improved)
* Refactored all the forms fields
# v0.2.1
## 08/24/2015
1. [](#improved)
* Translated tooltips
# v0.2.0
## 08/11/2015
1. [](#improved)
* Disable `enable` in admin
# v0.1.0
## 08/04/2015
1. [](#new)
* ChangeLog started...