Version History & Roadmap

Form Reform

jl_form_reform - v9.3.8 - resources v9.3.0

ConcreteCMS Marketplace v9.3.8

9.3.8 - Update call to core spam detect (passing User object allowed bug in core spam logging to manifest). Provide alias for misspelled getCurrrentStepIndex().

9.3.7 - Fix disable/enable of rich text in multistep ajax form.

9.3.6 - Compatibility with Captcha by Cloudflare Turnstile.

9.3.5 - Extend handlers now conditional. New Extend from Table handler to translate a value from a lookup table.

9.3.4 - Compatibility with Radio Captcha. Improve garbage collection in session store.

9.3.3 - Fix encryption for cookie store (strong encryption got lost somewhere in a previous update). If your application uses already submitted forms from the cookie store, you can configure continued reading of unencrypted cookies by setting the configuration key jl_form_reform.cookie_store.accept_unencrypted to 1. Set yourself a reminder to clear it again in a few weeks time.

9.3.2 - Resources v9.3.0, all plugin objects are now unique and no longer replicated. Fix undeclared file_name_proforma in Save to CSV when updating from pre 9.3.2 without edit/save of submit pipeline. Make ckEditor instance in documentation for pipeline read only.

9.3.1 - New Transform Error handler. New Geofence Continent and Geofence Country blocks. Redirect and Send Email handlers now conditional. Change timing to use hrtime (in preference to microtime). Fix 'Cid' in session and cookie store. Add rel="nofollow" to form and button elements. Refactor to provide FileStore class, also used by companion packages. Resources updated to 9.2.35.

9.3.0  - New handlers: Sort Form Data, Save to File, Fire Event. Save to CSV now saves grouped data. Hints for field names in Submit block. Refinement of Masked Text, Address Lookup and Country State controls to facilitate placeholder help and hints. Resources updated to 9.2.34.

9.2.11 - New form control: Color Picker input. Update resources to 9.2.32 to fix race with google maps api.

9.2.10 -  Required and validation options for select controls. New form control Custom Text. 

9.2.9 - Update resources to 9.2.29. Alias PermissionKey to avoid autoloader confusion with AttributeKey.

9.2.8 - New form controls: Uppercase, Lowercase, Handle, NumericMasked Text.

9.2.7 - Compatibility with Friendly Captcha. Option to shuffle choices for checkbox, radioset and select lists, matrices and combi inputs.

9.2.6 - Update resources to 9.2.27.

9.2.5 - Provide OviDigital\JsObjectToJson\JsConverter class required by all blocks using the Icon Picker.

9.2.4 - Prevent Submit block validation from whoopsing when spoofed.

9.2.3 - Enhancements to selection/choices tab of edit dialogues. Developer integration for Submit block.

9.2.2 - New form controls: Star Rating, Like, Up-Down Vote. Additional CSS styling for 'required' markers after failed validation. If updating, you will need to reset validation​.supplementary_css in Dashboard > System & Settings > Form ReformAdvanced Configuration to take advantage of the additional CSS required marker styling.

9.2.1  - Resources updated to 9.2.24, improvements to named settings and compatibility with Stored Settings Manager.

9.2.0 - With so much new functionality through v9.1.x it was about time for v9.2. Form Reform 9.2 also adds many new capabilities. New Require Form and Prohibit Form blocks. Refactor time offsets to accommodate DST. Fix dashboard edit of default form store entries. IterateData handler for generic iteration over multi-value data lists/arrays. New Checkbox List CombiRadioset Combi and Select Combi input blocks. Wider availability of Bootstrap switch option for checkboxes. Tidy up of handler icons.

9.1.12 - Fix {{data_values}} dot expansion for list inputs filling attributes. Update resources to 9.2.23.

9.1.11 - Fix no-persistence issue with php8. Fix stuck radioset required option. Prevent empty matrix width.
Refactor of attribute extraction in User and Page {{data_values}}.

9.1.10 - Fix {{data_values}} back compatibility issue with 8.5.12.

9.1.9 - New Text Suggestions input block. Additional validation in matrix input edit dialogues. Fix telephone number validation for '/'. Enable lazy block install to log and recover from broken blocks.

9.1.8 - Config option jl_form_reform.email.validation.minimal to only do php email validation and skip core validator. Fix back compatibility of {{data_values}} help with core 8.5.12.

9.1.7 - Microtime recorded with debug trace. Fallback if unable to autoload fileset picker. Send Email handler now has global options for severity of address validation. Panic mode.

9.1.6 - Refactor {{data_values}} to automatically detect extensions. Refactor {{data_values}} help system. New {{data_values}} categories for thumbnail images. Expand support for b64 embedded images and thumbnails in send mail handler.

9.1.5 - Integrate help for Form Reform Image Picker. Provide hooks for Form Reform Developer extension. Block specific {{data_values}} now imported into group iteration symbols.

9.1.4 - Extend repeatable groups functionality to support forthcoming Form Reform Image Picker extension. Fix secondary error when integrating to a theme without button sizes. Spinners now have size adjustment. More granular spam detection. Textarea now has minimum height option. Rich Text form input. Resources updated to v9.2.21. Fix handler loading issue from /application/src.

9.1.3 - New Wait handler. New Comment handler. Spam/hack checking in select, checkbox and radioset inputs. Extend From List now handles repeatable groups. New data value category {{all_group}} to list inputs across a group.

9.1.2 - New {{empty}} data values category. Fix php8 issue with filling data from user or page attributes. Clarification added to Extend handlers about what gets saved with the form.

9.1.1 - Fix php8 issue when form submission endpoint called illegally by bot. Update resources to v9.2.19.

9.1.0 - New Repeatable Group form control. New handlers to iterate through items in repeatable groups. Enable import from quarantine to be handled by subsequent form steps. Persist quarantined file controls after error. Facilitate new Save to Express handler - to be in separate Form Reform Attributes package. Refactor {{place_holders}} for ease of future extension. New documentation template to show submit pipelines. Indentation of control structures in submit pipelines. Update resources to v9.2.17.

9.0.24 - New Set Error Conditional handler. Refactor ConditionIF handler.

9.0.23 - Compatibility with core v9.2.0. Update resources to v9.2.14.

9.0.22 - New Extend From List handler to concatenate a list of values into a single value. Fix php8 issue with dashboard latest view override.

9.0.21 - Fix checkbox list bootstrap3 template for php8.

9.0.20 - Fix issue with kitchen sink if Google API key not installed. Option for 'back to previous state' in Next State handler. Option to submit without front end validation.

9.0.19 - Option to disable individual handler steps. New handler Clear Data Category

9.0.18 - Fix php8 issue for empty labels introduced by v9.0.17. Improve accuracy of elapsed time calculation for form submission.

9.0.17 - Required and validation options for checkbox list, radioset, and associated matrix inputs. Fix help for condition engine in php8. Refactor label display into common element.

9.0.16 - Fallback options for address lookup input. Revise email, telephone and url validation to facilitate empty inputs.

9.0.15 - Add timing data to submission for use with Anti-Spammer Master integration. b64 and JSON encode session data. Extended tests in condition engine. Support {{place_holders}} in validation messages, labels, placeholders, prefixes, suffixes, required messages.

9.0.14 - Implement single point for registration and loading of Google Maps api.

9.0.13 - Fix php8 issue for Snapshot inputs without placeholder text. Fix secondary error upon throwing exception in recordPipelineData.

9.0.12 - Widen accepted characters within {{place_holders}} to facilitate use in default values.

9.0.11 - Extend Form Data handler can now add to any category. New handler Extend With Text Item to facilitate building more complex text as extended data.

9.0.10 - Refactor of lazy block install/update, now simpler and uses database configuration.

9.0.9 - Development only.

9.0.8 - Send Email handler now supports sending email with embeded and attached images and other files.

9.0.7 - Drag & Drop file upload, Webcam and Screengrab input controls through integration with Snapshot. Import From Quarantine form handler. Clear Quarantine form handler. Update JtFResources v9.2.7.

9.0.6 - New dashboard page for editing advanced configuration. Improved form block identification with form inputs in stacks. The Cookie Store can be unreliable when using Redirect.

9.0.5 - Dodge whoops if a stack providing form components is deleted.

9.0.4 - New form inputs: Address Lookup (Google places API), Radio Matrix, Checkbox Matrix, Latitude/Longitude, Grouped Select, State Select. New form handler: Address Geocode (Google geocode API). Update JtFResources v9.2.5. Bug fixes: Telephone input validation, IP Geocode initial locations, Support/import.

9.0.3 - Fix missing asset in documentation "kitchen sink" template. Update JtFResources to v9.2.1. Make form listing of blocks specific to FormBlockController base class.

9.0.2 - Improvements to lazy block install/update.

9.0.1 - Facilitate Form Reform Display.

9.0.0 - PRB approval release.


Review and development versions

0.4.9 - Fix $bID check in php8.1.

0.4.8 - Enhancement to results search class to facilitate Form Reform Display addon.

0.4.7 - blocks_used template now lists ANY_FORM on the page.

0.4.6 - Fix BlocksInForm for non-default form name on v8.

0.4.5 - Form field help in submit block. Styling for invalid inputs on non-BS5 themes.

0.4.4 - Input validation classes.

0.4.3 - New form submit routing to support clean URLs for regular submits and submit buttons in stacks for regular and AJAX submits.

0.4.2 - Update resources to v9.1.22.

0.4.1 - Extend presentation of install/update progress across block dialogues. Fix saving and implementation of process_data_values for form input data.

0.4.0 - Improved and refactored handler dialogues. IP address detection through proxy. More explanation about lazy install in pre/post install screens. Lazy updater.

0.3.22 - Fix php8 issue in progress reporting at end of ConditionIf handler.

0.3.21 - Change .css route to remove .css file type. Change rendering of label/required etc. for improved layout consistency. New docs template for Kitchen Sink Required. Redirect block now supports #fragments.

0.3.20 - Fix issue with {{visitor:locale}} placeholder, values are keys.

0.3.19 - Fix php8 $fv issue in save to CSV. Fix issue with growing lists not saving all items introduced with v0.3.15

0.3.18 - Unescape html in {{place_holders}}

0.3.17 - Fix php8 compatibility of lazy install.

0.3.16 - Lazy install of blocks to allow installation on slower sites/servers. Some adjustment to uninstall and upgrade (but not lazy in the same way).

0.3.15 - Fix issue with rich text containing un-matched double quote ".

0.3.14 - Mostly to do with install/uninstall on v8. Also some fixes to Captcha in ajax.

0.3.10 - Improve support for unicode in form inputs. Prefix page/block location to log reports.

0.3.9 - Fix corrupted JS in Redirect handler.

0.3.8 - Fix styling of radio buttons spoiled by v0.3.7. Clarify and improve logging and debug states for Submit button. 

0.3.7 - php8 compatibility. Debug modes now compatible with AJAX forms. Further consolidation of common code across form blocks.

0.3.6 - Add route to controller. Remove unnecessary commas in function calls. Remove <?php at end of some files.

0.3.5 - Development version

9.0.6 - Fix object display for php8.2 in default results list.

9.0.5 - Support display of forms saved to attributes, files and csv. Fix 'Cid' to 'cid'.

9.0.4 - Fix sequencing issue with updating Universal Content Puller integration

9.0.3 - New Completion List block. Update Form Reform first. Requires Form Reform v9.2.0. Fix linking to page from results blocks.

9.0.2 - Display user attribute textarea. Improve display for list values.

9.0.1 - Change to Universal Content Puller detection for more flexible install.

9.0.0 - PRB approval release.


Review and development versions

0.2.5 - Fix aliases and a few undeclared's in case php8 decides it doesn't like them.

0.2.4 - Fix filtering for cookie/session store and php8.

0.2.3 - Support for nested array data using dot notation.

0.2.2 - Ensure form_reform_display block type set is used.

0.2.1 - Add missing use for Arr class in table output.

0.2.0 - Refactor common code. Fix block cache settings. Submit for marketplace approval.

0.1.3 - Blocks to display form results from cookie or session storage.

0.1.1 - php8.1 compatibility.

0.1.0 - Autoloader race issue.

0.0.6 - Development version.

9.0.0 - PRB approval release.


Review and development versions

0.1.2 - Fix skewed dashboard page in v8.

0.1.1 - Optional required tags.

0.1.0 - Ready for marketplace review.

0.0.4 - Development version.

Form Reform Dynamics

jl_form_reform_dynamics - v0.2.1

0.2.1 - Update minimum dependency on Form Reform. Update some comments on api use. Add is_array() test to value of query param in DynamicsAPI.

0.2.0 - Php8.2 compatibility.

0.1.2 - Use text-indigo as the convention for handler calling an external API.

0.1.1 - Trim white space from ends of dynamics parameter names. Ensure global API settings are kept consistent when multiple handlers are edited in the same pipeline.

0.1.0 - Available for direct sale, please contact me for details.

9.0.14 - Save to Express and Save to Current User handlers - new ah control to populate with attribute handle.

9.0.13 - Update minimum dependency on Form Reform. Align garbage collection with Form Reform.

9.0.12 - New form handler Save to Page Attribute. Fix 'Cid' to 'cid'.

9.0.11 - Accommodate null $required_input_classes.

9.0.10 - Required and validation options for select control.

9.0.9 - Option to shuffle choices.

9.0.8 - Renamed to 'Form Reform Attributes, Express and Users'. New User Groups handler to manage user groups. (Previously named Form Reform Save to Attributes)

9.0.7 - Update Form Reform before updating Form Reform Save to Attributes. Requires Form Reform 9.2.0. Refactor time offsets to accommodate DST.

9.0.6 - Support display update to 9.0.2.

9.0.5 - Guard user attribute handlers against erroneous use when a user is not logged in.

9.0.4 - Fix default parameters in v8 compatibility for kitchen sink demo.

9.0.3 - Fix back compatibility with kitchen sink demo for c8.5.12

9.0.2 - New form input blocks for ease of working with options attribute.

9.0.1 - Fix back compatibility issue for c8.5.12

9.0.0 - PRB approval release.


Review and development versions

0.7.2 - Fix issue with undefined constant for priority of initial data.

0.7.1 - Require form reform >= 9.1.0.

0.7.0 - Ready for marketplace review.

9.0.3 - Compatibility with Enlil Page List and Enlil Page Tease. For any users who have added their own picker options to jl_form_reform.image_picker.source_types, you may need to clear this configuration value so to allow Form Reform Image Picker to set the new and extended defaults before adding your own options again.

9.0.2 - Fix type mismatch when comparing $bID in ajax action.

9.0.1 - Accommodate null $required_input_classes.

9.0.0 - Release/approval version


Review and development versions

0.0.10 - Handler to Extend From File Properties.

0.0.9 - Style placeholders with italic to match bootstrap. Reduce effect of scale transform on larger screens.

0.0.8 - Trick autoload for form reform built in documentation. Provide data-fid fallback for legacy picker. Tidy up repeater animation on add/remove. Compatibility with touch gallery default template. Fix thumb button behaviour with repeatable input groups.

0.0.7 - Extend {{DataValues}} for image URLs and for repeatable groups.

0.0.6 - Development and testing. An extension for Form Reform to facilitate picking an image from Omni Gallery with the capability to be configured to pick images from other galleries and sliders.

9.0.0 - Release/approval version.


Review and development versions

0.0.5 - Fix typo in help text.

0.0.4 - Pretty much ready for review.

9.0.5 - Developer Analysis template for documentation block to expose developer analysis to visitors. Primarily for demonstration on c5magic.co.uk.

9.0.4 - Update minimum dependency on Form Reform. Detect mismatched {{...}}.

9.0.3 - Load CK assets for read-only display of rich text inputs. Add block types to reports.  Add key to reports.

9.0.2 - Pipeline analysis. Toolbar analysis button (stethoscope).

9.0.1 - Css for rating/like/vote inputs in block dialogue explorer.

9.0.0 - Release/approval version


Review and development versions

0.1.0 - Extend handling for option lists in Block Dialogue Explorer. Added titles to edit/view tabs in Block Dialogue Explorer.

0.0.9 - New dashboard page Block Dialogue Explorer. A quick way to review form block dialogues and views.

0.0.8 - Fix spelling of frequency.

0.0.7 - Handlers to detect some form building mistakes.

0.0.6 - New dashboard page Plugin Dialogue Explorer. A quick way to review the dialogues of all form handler plugins.

0.0.4 - Development and testing. A growing suite of debug resources to assist those developing blocks, handlers and more complex forms for Form Reform.

Form Reform is under continuing active development. You can expect frequent updates introducing new features.

Roadmap

Some thoughts about the Form Reform roadmap and what is on the way.

Form Input blocks

  • Rich text. v9.1.4
  • File upload. v9.0.7
  • Repeatable groups of inputs (add another group, remove a group, shuffle) v9.1.0
  • Combi input - select, checkbox or radio with 'other' text option. Suggestions attached to text input, v9.1.9. Combi versions of checkbox list, select and radioset v9.2.0.
  • Grouped select - Select with choices in option groups. v9.0.4
  • Postcode / Zip address lookup address input. v9.0.4
  • Star rating. v9.2.1
  • Image picker version of radioset or checkbox list. Possible integration with Omni Gallery to make any gallery into an image picker. Form Reform Image Picker
  • Select from options of an attribute. Form Reform Save to Attributes v9.0.2
  • Color Picker v9.2.11
  • Two level select - think of a fully configurable pair of selects like country/state.
  • Tree select / topic select.
  • Signature.
  • Calendar picker.
  • Date/time range.
  • Date series.
  • User select/pick.
  • Group select/pick.
  • Page select/pick.

Interaction

  • Dependent fields on a smaller scale than multi-part forms, such as show/enable an input depending on a checkbox, radio or select option. Combi versions of checkbox list, select and radioset v9.2.0.
  • Connection between select, radio or checkbox changes and form submission, so a form submits when a connected input changes.
  • Connection between select, radio or checkbox changes and form state, so a specific option changes the form state in the same way that an AJAX submission could.

Supporting blocks

  • Front end search of form submissions.
  • Edit/update my form submissions.
  • Summary displays for like, rating and up/down vote.

Form Handlers

  • Save to Express. Form Reform Attributes, Express and Users
  • Save to user attributeForm Reform Attributes, Express and Users
  • No repeats - a handler that blocks a form from being submitted more than once. This is already implemented to some extent, but could benefit from an explicit handler. Use case for voting, reviews, etc. Implemented as Prohibit Form block in v9.2.0.
  • Handler to require another form to be completed first. Implemented as Require Form block in v9.2.0.
  • Enable/Disable a handler, can be useful for testing, stage sites, temporary changes. v9.0.19
  • Concatenate/Implode to take a list of strings or {{place_holders}}, filter null and implode about another string or {{place_holder}}, assigning the result to a further {{place_holder}}. v9.0.22
  • Conditionally set an error. v9.0.24
  • Add/remove/move user between groups. Form Reform Attributes, Express and Users v9.0.8.
  • Save to JSON file. v9.3.0
  • Save to XML file. v9.3.0
  • Save to text file. v9.3.0
  • Sort form data - manually configure the order in which input_names are held and hence processed and saved. v9.3.0
  • Fire concrete event. 9.3.0
  • Translation map/table. Map from one set of values to another v9.3.5
  • Save to Page attribute. Form Reform Save to Attributes v9.0.12
  • Login (use Form Reform to design a custom site login form)
  • Create PDF document from boilerplate.
  • Publish to page (beneath parent page, page type/template)
  • Publish to calendar event.
  • Payment systems, PayPal, Stripe and similar. Possible integration with Community Store payment handlers.
  • Register a user.
  • Make a page list.
  • Search for a page with core search or Search++.

Macros

  • Run Macro form handler to run a previously stored sequence of handlers.
  • {{macro:k}} placeholders for passing in parameters.
  • Dashboard interface to build macro sequences of form handlers.

Integration

General UI

  • Comment section in handlers - for a user-entered comment . v9.1.2

Additional Pages

Reform the way you add new input controls

If you need a specialized template or a custom input element, you can design new templates  or new block types for form elements as you would any block type.

Blocks are easy for third party addition or extension. Block templates and are the first thing any Concrete CMS developer learns to code. They are one of the easiest things to code. The underlying mechanisms are well established and reliable.

Reform what you can do with form data

Form handlers are built about the same extensible plugin system as many of my other addons (Universal Content Puller, Omni Gallery, Extreme Clean ...).

The whole system is aimed at easy extension within Form Reform, by third party addons, by agencies and by site building developers.

Handlers can be easily added to do whatever you want with the form data.

Reform where you can save form data

Saving form data with Form Reform is simply a handler in the processing pipeline. You can save to multiple locations or just one location.

If you need to save data elsewhere, such as to a dedicated table, a table provided through another addon, to another database, send it to an API, forward it to another server, or anywhere you can imagine, you can adapt or develop a form handler to do so.

The complexity of the code depends on where you are saving or sending the data, but wrapping that into a form handler plugin for Form Reform is straight forward.

The Form Reform handler plugin system is designed for easy extension.

Form Reform

Reform the way forms are built. Build a form out of blocks. Take control of how form submissions are processed and how the submitted data is stored. Easy to extend. Easy to reconfigure. Tangible data. Easy to add your own integrations.

Form Reform Display

List and display form submissions from Form Reform.

Form Reform UTM

Not just Form Reform and not just UTM! Capture and hold incoming UTM (or other) tags and make the tag values available to Form Reform and/or Conditional Redirect as {{place_holders}}. You don't need Form Reform to use this.

Form Reform Dynamics

Form handlers for querying Microsoft Dynamics, forwarding and updating form data to Microsoft Dynamics.

Snapshot

A suite of advanced image capture and upload tools. Enhanced drag and drop file uploading. Make screengrabs from within Concrete CMS. Capture images directly from device webcams. Edit images before uploading.

Form Reform Attributes, Express and Users

Save submitted forms to Express objects and user attributes. Add and remove users from groups.

Form Reform Image Picker

Form Reform Image Picker provides an image picking input block for Form Reform. The Image Picker Input is preconfigured to connect to most Omni Gallery gallery and slider display widgets, the core gallery block, and thumbnail showing templates for the core page list block. Advanced settings allow the Image Picker Input to be configured to pick images from other galleries and sliders.

Form Reform Data Picker

Form Reform Data Picker provides data picking input blocks for Form Reform. The Table Picker Input is preconfigured to connect to Universal Content Puller table display widgets. Advanced settings allow the Table Picker Input to be configured to pick data from other HTML tables.

Form Reform Developer

A growing suite of resources to assist those developing blocks, handlers and more complex forms for Form Reform.

Learn with a simple form

While you may have plans to implement some much more complex forms using Form Reform, we strongly recommend you start with a simple form such as our contact form example in order to review the basic principles of using Form Reform before you move onto anything bigger.

  1. Start by submitting the form at Getting Started - Your First Form a few times, even making some deliberate mistakes.
  2. Watch our Getting Started with Form Reform video to see how the form is built.
  3. Read through the rest of Getting Started - Your First Form for more details of how this form is built.
  4. Create a test page on your site to build your own version of Getting Started - Your First Form and experiment.
  5. Develop your test page with some of the concepts introduced by our further examples and experiment with some of the other form inputs.