Docs available for setting up a local Docker dev environment!
Changes since 7.2...
For users - people who fill in forms, search lists, view reports, etc
- Floating tabs at the top of forms, so the tabs are always visible as you scroll
- Floating save buttons at the bottom of forms, so you don't have to scroll to click Save
- Images uploaded to forms show thumbnails instead of just the file name
- Significant accessibility improvements throughout, most noticeably using the native HTML 5 date picker provided by the browser
- Conditional form elements are processed in groups now, instead of one at a time, so the animation of appearing and disappearing elements is a lot smoother
- Better handling of going directly to a URL for a specific entry, so that when you leave you properly end up on the right list and stay there
- Corrected a minor issue that could have caused an "insecure page" warning from your web browser under some circumstances
- Elements with the value zero will show up properly in the form (previously did not show, bug fixed)
- If your account does not have an email address specified, we tell you this when you try to reset your password (requires webmaster intervention to change password in this case)
- Clickable URLs inside lists of entries will now always work when opened in a new tab (they always worked when clicked, but under some circumstances they would show the wrong entry if you copied the link and opened it in a new tab)
For creators - people who make forms, configure lists and reports, etc
- A much more readable list of elements on the admin side
- Drag and drop sorting of options when editing radio buttons, checkboxes, dropdown lists, list boxes, and autocompletes
- Drag and drop sorting of the elements listed on the Entries tab when configuring List of Entries screens
- Improvements to the display of "Tables of existing elements" (grids) so they blend in with regular form elements better
- "Tables of existing elements" (grids) can display conditionally, like normal elements. The elements contained in the table/grid inherit the display conditions of their container.
- Elements can now be disabled conditionally, the same as how they can be displayed conditionally. Elements can have a mixture of display and disabled conditions, referring to the same or different triggers.
- Multiselect autocomplete elements now trigger conditions when users add to the list or remove items from the list
- Element captions that reference other elements using { } syntax, will have their captions updated when they are conditionally displayed (if the other element is one of the elements that triggers the condition)
- You can now use { } references to elements in help text, and the row and column headers in "Tables of existing elements" (grids)
- When you specify which element should be used to sort a list by default, you can also specify either ascending or descending (used to be ascending only)
- Anonymous users can have a Formulize homepage set, so you can send them to a specific screen through the Menu system if you want
- Improvements to the Range Slider element, value is more distinct and sliders trigger conditions as well
- Added an IN operator to the condition specification UI, for display conditions, linked element filters, etc
- Improved parsing of display conditions, linked element filters, etc
- No longer necessary to disable CSRF token processing when showing elements inline within lists
- Subform elements properly use the default screen to display entries, if default screen is chosen (bug fixed)
- Elements can be assigned a 'datetime' data type in the Advanced tab of the admin UI (Previously just date, or time, but elements could always be assigned any data type directly in the database)
- In the Anari theme, the masquerade block is shown more clearly, if you are masquerading as another user
For app developers - people who build applications, use the API, etc
- All code editing areas use syntax highlighting
- New function: displayRichText() - works just like the display() function, but will preserve all the formatting from a multiline textbox that uses the rich text editor
- New function: displayFileImage() - works just like the display() function, but will convert the URL for an uploaded file into an img tag that shows a 200px wide version of the image
- viewEntryLink and viewEntryButton are available in Template screens, and you can specify the screen they should take users to in the options for the screen
- New data handler method: findAllEntriesWithAllValues
- Updated findFirstEntryWithAllValues to support an array of operators so you don't have to use the same operator for searching for every value you're looking for
- Element classes now have a getDefaultValue method for specifying the default value when an entry is being saved the first time (existing element types with defaults are unaffected but this fleshes out the class structure for new elements or refactored elements)
- A history of the notification queue is stored for one week, if you're doing 'notification via cron job'
- Removed the deprecated "force hidden" setting for elements; this should have no effect other than cleaning up the admin UI
- If your local development environment is Windows, and you are using SQL dumps from a Linux server to make a local copy of a database in Docker, there is now a special MariaDB .conf file to ensure the dump can be read correctly (the case-insensitive nature of Windows vs case-sensitivity in Linux, made some SQL dumps fail to load properly in a local Docker development environment) - for details, see the /docker/docker-db-help.txt file
For core developers - people who work on the Formulize code base
- Large scale refactoring of the operations in the displayElement function, and the compileElements function, which streamlines all the logical operations of displaying elements and whether they are allowed, and whether they are disabled
- Refactored the parsing of submissions from the condition UI so they are all standardized
- Refactoring the creation of subform entries so that defaults are assigned properly
- Removed the ancient 'profileform' feature for integrating with XOOPS 2 user profiles prior to ICMS
- Moved conditional element Javascript to its own file that is included properly
- Many notices and warnings fixed/removed