Form Reform Data Picker extends Form Reform with data picking input blocks.
The input blocks are configured by associating them with an HTML table or JSON data. These can be provided by Universal Content Puller or any other HTML table.
These inputs all work in a similar way to attach to an HTML or JSON table or similar tabular block views and populate the form input from that table.
Before adding any Form Reform Data Picker block, the page needs to present some data as a table. This table could be rendered by Universal Content Puller or by any other table generating block such as MSV Table or the core Content block, or any addon that presents addon specific data as a table.
The table should have complete rows and columns, so no colspan or rowspan cells. It should also ideally have a row of column headings within a <thead> section and row headings within a <th> element at the start of each row. Nevertheless, Form Reform Data Picker can work with numeric indexes should column or row headings not be available.
Form Reform already has some very flexible input blocks for checkbox and radioset lists and matrices, and various select and grouped select inputs. The benefits of Form Reform Data Picker come when the data is large or dynamic, when you already have a table, or when you have specific format requirements. For example, where pulled from an uploaded and updated CSV, from a database query, or from an external source such as an API.
The Table Picker input attaches to the table and superimposes a matrix of checkboxes. Clicking a table cell toggles that cell's checkbox. The checkbox inputs are submitted as a 2D array by row and column name or index. The values of the checkboxes are fully configurable and could be a simple boolean, the value of the table cell, or compounded from row, column and value. If the value options available are not enough, the options can be reconfigured at jl_form_reform.form_reform_data_picker.value_formats.
The Calendar Picker input attaches to a calendar output by a core Calendar block and superimposes checkboxes on each event. The checkbox inputs are submitted as a list of event occurrence IDs and then mapped to more detailed event data on submission.
The Table as Select input populates a grouped select input from the table before hiding or destroying the table. The JSON as Select input is similarly populated from a hidden data attribute of JSON data. The Table as Select Combi and JSON as Select Combi inputs extend this to include a combi text input option.
The grouping of the select is configurable by row or column, with the individual selectable items then corresponding to the other axis of the table. However, the labels for the select options and the values for the select options can be independently configured as the value of the table cell, or compounded from row, column and value in various permutations from the same set options as the Table Picker input.
Whilst the Table as Select and JSON as Select form control inputs can be connected to any in-page table or JSON source, they can be particularly powerful when used with Universal Content Puller. Use UCP to pull the data from anywhere you like and render it as a table or JSON, then select from that data with a Form Reform control.
As noted above, the table should have complete rows and columns with no colspan or rowspan cells. Individual table cells can be excluded from picking or selection by adding the class form-reform-exclude to the <td> element.
The available values in the table are connected to form inputs in the browser and are unknown to Form Reform until the form is submitted, hence automated validation of these inputs is limited to the number of items submitted with the form.
Be cautious how you use the submitted values of these inputs.
Where picked values could be open to abuse, we recommend configuring application specific checks in the form processing pipeline.
You can see these specialised form inputs in action in our Example - Picking Data demonstration page. Feel free to submit the example form as often as you want. The form is saved to your session, but the data is not saved or logged anywhere else.
The Result Picker input block is a highly specialized derivative of the Table Picker above. It can attach to any listing of the FormReformDefault store generated by the blocks from Form Reform Display and Reviews to enable one or more previous form submissions to be picked.
This can be used to create multiple stage workflows through a series of forms, where each stage is based on:
For use with the Result Picker input block and creating multiple stage workflows, Form Reform Data Picker provides additional form handlers.
The Update Default Store handler can be used to update or extend the record of a previous form submission. This differs from using the Merge From Default Store and Save to Default store handlers by enabling any submission picked by a Result Picker input block to be updated.
The Delete From Default Store handler can similarly be used in association with a form containing a Result Picker input to delete submissions from the default store.
The Read From Default Store handler can be used in association with a form containing a Result Picker input to load data from a selected previous submission.
These tools need to be configured with caution. For example, you probably should not create a page where any visitor can modify another visitor's form submissions. Each stage of multi-form workflow should be planned with:
Each previous submission is identified by Form Reform Display using an encrypted signature. The Update Default Store handler and the Delete From Default Store handler will only work with submissions identified by this encrypted signature in the current form submission. This is enforced to prevent a rogue user from hacking the identity of a picked submission to gain access to modify any submission.
When a multi-form workflow uses admin only pages, these can be in the site theme, or consider using the Front End Dashboard theme for forms that are more closely related to dashboard administration actions.
In theory, Form Reform Data Picker could have been part of the main Form Reform package. However these are specialised and complicated form inputs. Form Reform is already big, so making this a separate addon helps prevent Form Reform from growing bigger. The roadmap has more than enough ideas that will need to be part of the main Form Reform package and necessitate growth.
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.
ConcreteCMS Marketplace v9.0.5
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.
ConcreteCMS Marketplace v9.4.1
/dashboard/system/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.
/dashboard/system/form_reform/plugin_list
Plugins for Form Handlers.
/dashboard/system/form_reform/form_reform_blocks
Blocks for Form Reform.
/dashboard/system/form_reform/global_settings
Edit global settings and defaults for Form Reform Submission.
/dashboard/reports/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.
/dashboard/reports/form_reform/form_reform_default
Default storage for Form Reform submissions.
/dashboard/system/form_reform/advanced_config
Advanced Configuration for Form Reform including adapting styles for non-Bootstrap 5 themes.
List and display form submissions from Form Reform.
ConcreteCMS Marketplace v9.1.10
/dashboard/reports/form_reform/form_reform_report
Report generator for default Form Reform submissions.
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.
ConcreteCMS Marketplace v9.0.3
/dashboard/system/form_reform/utm
Redirects to UTM Configuration in SEO settings.
/dashboard/system/seo/utm
Capture and hold incoming UTM (or other) tags and make the tag values available to Form Reform as {{place_holders}}. Also integrates with Conditional Redirect. You don't need Form Reform to use this!
Save submitted forms to Express objects and user attributes. Add and remove users from groups.
ConcreteCMS Marketplace v9.0.18
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.
ConcreteCMS Marketplace v9.0.4
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.
ConcreteCMS Marketplace v9.0.5
Form handlers for querying Microsoft Dynamics, forwarding and updating form data to Microsoft Dynamics.
Extends Form Reform with form handler macros. Provides a new dashboard page at System & Settings > Form Reform > Form Reform Macros to manage macros, and form handlers to run macros.
ConcreteCMS Marketplace v9.0.0
/dashboard/system/form_reform/macro
Extends Form Reform with form handler macros. Provides a new dashboard page at System & Settings > Form Reform > Form Reform Macros to manage macros, and form handlers to run macros.
A growing suite of resources to assist those developing blocks, handlers and more complex forms for Form Reform.
ConcreteCMS Marketplace v9.0.14
/dashboard/system/form_reform/plugin_dialogue_explorer
A reference copy of all plugin dialogues. They won't save and may only partially work. Just here for browsing.
/dashboard/system/form_reform/block_dialogue_explorer
A reference copy of all form input block dialogues. They won't save and may only partially work. Just here for browsing.
/dashboard/system/form_reform/find_my_forms
Locates Form Reform forms and the pages they are on.
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.
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.
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.
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.
List and display form submissions from Form Reform.
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 handlers for querying Microsoft Dynamics, forwarding and updating form data to Microsoft Dynamics.
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.
Save submitted forms to Express objects and user attributes. Add and remove users from groups.
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 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.
Extends Form Reform with form handler macros. Provides a new dashboard page at System & Settings > Form Reform > Form Reform Macros to manage macros, and form handlers to run macros.
A growing suite of resources to assist those developing blocks, handlers and more complex forms for Form Reform.
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.