Published

•

Updated

Launch Log: Live DataTables totals, a Remove Data option, and rounding for Number field merge tags

This week's releases add live GravityMath totals to DataTables Views, a Remove Data option in GravityView, and security fixes in five GravityKit products.

This week’s releases add GravityMath totals that follow the rows on screen in DataTables Views, an option to remove GravityView’s data while keeping your Views, and security fixes in five products. Tables capped at 200 entries since DataTables 3.14.0 show every entry again, and GravityMath totals come out right in more currencies and languages.

GravityBoard v1.7.0

This update to GravityBoard lets a card’s description show a Repeater field. Each row is listed the way the Gravity Forms entry screen shows it, with field labels above their values. Boards that use a Repeater field for a card’s title, description, label, or due date also load again; before this release, they didn’t load at all.

On sites set to another language, the board, the board block in the editor, the GravityView vote widget, and the condition builder in a board’s Conditional Logic setting now show their text in the site’s language instead of English. Customizing GravityBoard translations covers changing any of these strings.

More fixes and developer updates in v1.7.0

Conditional logic dropdowns that search users, entries, or posts now load their choices only when they are opened. Conditions on fields that store several users, posts, or entries, such as GP Nested Forms (Gravity Wiz), Dynamic Lookup, and Populate Anything fields, are no longer slow on forms with a few hundred entries.

Other conditional logic fixes:

  • Conditions using the {get} merge tag match the right entries when the value in the page address contains &, +, or % (such as “Research & Development”), and no longer change other {get} merge tags on the same page
  • “Has any of”, “has all of”, and “has none of” conditions on a Dynamic Lookup field with “Allow multiple selections” and the enhanced user interface work for entries with more than one selection
  • Condition dropdowns open in front of the WordPress admin bar, pressing Enter on a selected choice keeps it, and pressing Enter on the clear button clears the choice
  • Date conditions show month names, weekdays, and labels in the site’s language
  • Condition labels with an apostrophe, such as “n’est pas” in French, no longer show '
  • Weekday names in the date condition calendar are correct in time zones west of UTC, such as the Americas, and screen readers no longer announce the calendar as “Event”

Developer updates

  • When the GravityKit MCP blocks a board, lane, or card delete tool, the message to AI assistants now gives a valid value for the GRAVITYKIT_MCP_ALLOW_DESTRUCTIVE setting: the tool’s name, gb, or all. Building boards with AI covers connecting an assistant.

GravityCalendar v2.26.1

This update to GravityCalendar improves security, and we recommend updating. HTML in events from other calendar feeds is handled more safely when “Allow HTML Content” is on. The events of a deactivated calendar are now available only to users who can edit calendars, and only those users see secured and deactivated calendars in the block and Elementor editors. If a secured calendar stops showing on a page, a user who can edit calendars can save the page to show it again.

Calendar widgets in DataTables Views set to Preloaded (Client-side) mode work again. A widget showing the entries on the page now shows the events of the rows on screen, and changing the table’s page, sorting, or search no longer causes a JavaScript error.

More fixes and developer updates in v2.26.1

On a page that shows the same View twice, each table now updates only its own Calendar widgets. Each widget also follows its own “Display events for” setting, even when two widgets use the same calendar.

Some searches with “Navigate to Events” and Dynamically Load Events on now show an empty calendar instead of an error. AI assistants are told that an event on a calendar with no Start Time field can only move to another day.

Developer updates

  • With “Allow HTML Content” on, events added with the gravityview/calendar/events filter now go through the same HTML filtering in the browser.

GravityCharts v1.23.1

This update to GravityCharts fixes DataTables Views that wouldn’t load when “Preloaded data loading” was on and a chart widget was set to “Entries shown on the page”.

GravityEdit v2.13.2

This update to GravityEdit fixes inline editing of Drop Down fields with placeholder text on the Gravity Forms Entries screen. The placeholder showed more than once, adding one more copy on each row down the list.

GravityExport v1.18.1

This update to GravityExport lets other plugins allow or refuse secured GravityExport Filters download URLs for a given feed and user, using the gk/gravityexport/download/can-download filter. This works the same way as for GravityExport Lite download URLs and requires GravityExport Lite 2.7.6 or newer.

GravityExport Lite v2.7.6

This update to GravityExport Lite fixes how Repeater fields export. Values could appear under the wrong column, values from two rows could look like one row, and the Repeater field was offered as a sort field even though sorting by it did nothing.

The “Enable download URL” button and the “Copied!” label on a form’s GravityExport Lite settings tab now show in the site’s language.

Developer updates in v2.7.6
  • Added the gk/gravityexport/download/can-download filter to allow or refuse a secured GravityExport Lite download URL for a given feed and user. By default, only users with the gravityforms_export_entries capability can download secured exports. Public download URLs are not affected.

GravityImport v2.12.6

This update to GravityImport improves security when importing List fields, and we recommend updating.

GravityMath v2.14.0

This update to GravityMath brings live totals to DataTables Views. Totals that use [gravitymath scope="visible"] in a Custom Content widget now add up the rows on screen and update as visitors search, sort, or page through the table. This needs DataTables 3.15.0 or newer. To keep hidden values private, totals of fields the table doesn’t show as columns don’t update this way.

On PHP 8, a formula that can’t be calculated, such as max(1,2) or max(5), now returns an empty result instead of crashing the whole page.

Totals are also right again on sites that write decimals with a comma, such as sites in German or stores using the euro. Totals of prices with cents, and of decimal choice values, had come out 10 or 100 times too large.

More fixes and developer updates in v2.14.0

Several field types showed the wrong totals. In Views, including Ajax (Server-side) DataTables Views, totals and footer calculations of Product (Single, Hidden, and Calculation), Option, Checkbox, and Consent fields showed 0 when the merge tag had no input ID, such as {Widget:1:sum}. Product fields now add up their prices, as scope="form" does. View totals of scored Survey (Likert) fields with multiple rows now show the right result, both for the whole field and for each row.

With scope="form", Option field totals no longer show 0, and Consent field totals leave out the consent text and form revision saved with the entry. Averages, minimums, maximums, and counts of Checkbox fields, and of other fields with multiple inputs, now count each entry instead of each checked choice.

Other currency and number fixes:

  • Formulas read prices correctly in currencies that format numbers differently from the site’s language; on an English site, “R$ 2,50” was read as 250 and “1.234,56 €” as 1.23456
  • Calculation fields read prices with a dot for thousands and a comma for decimals, such as “R$ 1.234,56”, as decimal numbers instead of whole numbers
  • Formulas work when a currency symbol starting with a capital letter (such as “R$”, “CHF”, “HK$”, or “Kč”) appears anywhere but at the start
  • Formulas and footer totals work on sites with a custom currency whose symbol contains “/”, such as “S/” for the Peruvian sol
  • scope="form" totals of decimal choice values keep their decimals
  • View totals of Shipping and Option fields no longer include digits from choice labels, such as the 2 in “Zone 2”
  • With scope="entry" and an entry ID, prices are read in the currency the entry was saved in

DataTables View fixes:

  • The Math Summary widget shows results again in Ajax (Server-side) tables with DataTables 3.14.0 or newer
  • In Ajax (Server-side) tables with footer calculations, footer field filters appear, the footer label of a pinned column stays pinned, and hiding a column with the Columns button hides its footer cells
  • In Preloaded (Client-side) tables, footer calculations update after a search with the Search Bar widget (requires DataTables 3.15.0 or newer), and Math Summary widgets set to “Entries shown on the page” update after paging, sorting, or searching
  • A View placed below a Preloaded (Client-side) DataTables View calculates its View (Visible) footer results from its own entries
  • With two DataTables Views on the same page, each Math Summary widget shows its own table’s results, and each table keeps its own Calculation Row Position setting
  • In tables set to “Hide View data until search is performed”, Math Summary widgets showing all View entries no longer send their totals to the browser before a search
  • Preloaded (Client-side) tables no longer show a PHP warning when a column’s footer calculation has no saved Decimals setting

A file in the bundled math library that failed PHP compatibility checks on PHP 8.1.2 has been removed.

Developer updates

  • Added filters for live scope="visible" totals in DataTables Views:
    • gk/gravitymath/datatables/visible/live to turn them off (default: true)
    • gk/gravitymath/datatables/visible/max-tokens to set how many totals a table updates on each draw (default: 20)
    • gk/gravitymath/datatables/visible/hidden-fields to let totals read fields the table doesn’t show as columns (default: false)
    • gk/gravitymath/datatables/visible/max-rows to set how many rows a Preloaded (Client-side) table’s totals cover (default: 1000, or the largest option in the View’s rows-per-page menu if higher)

GravitySearch v1.3.1

This update to GravitySearch improves security when searching entries on the Global Search page, and we recommend updating. It also fixes PHP 8.4 deprecation notices from bundled libraries.

GravityView v3.10.0

This update to GravityView adds a Remove Data option. It permanently deletes GravityView’s data (entry approval statuses, the entry notes GravityView added, and GravityView settings) and resets user role permissions to their defaults, while keeping your Views. You can find it in three places:

  • The new Remove Data section of GravityView’s settings
  • Manage Your Kit
  • A new dialog shown when you deactivate GravityView on the Plugins page, which replaces the browser’s confirmation box and still lists the products that need GravityView

To delete the Views themselves, use the separate Delete Views section.

A new :decimals merge tag modifier rounds a Number field to a set number of decimal places and keeps the field’s number format. For a Number field using the Currency format, {Amount:3:decimals:0} shows $4,003 instead of $4,003.00.

Switching a View’s form now keeps the selected layouts and fills them with the new form’s fields, instead of leaving them empty until a layout is chosen again. With Prevent Direct Access on, Administrators and Editors can now open a View’s single entries at the View’s own URL, along with a notice that visitors can see those entries only on pages that embed the View.

This release also fixes two security issues, and we recommend updating. Views with Prevent Direct Access on, embedded on pages hidden by a membership plugin, could load entries or show entry values in the page title to visitors without access to the page; for DataTables Views, the fix needs DataTables 3.14.2 or newer. The Single Entry Title also showed entry values above the password form on password-protected Views and pages.

Views that show Checkbox, Radio Buttons, Drop Down, or Multi Select fields as labels load quickly again with GP Populate Anything (Gravity Wiz) active, after slowing down in 3.6.0.

More fixes and developer updates in v3.10.0

In the View editor, the View Type picker appears every time after choosing a form, and switching a View’s form no longer leaves the old form’s fields on every layout tab except the one changed last.

Two fixes apply to Views managed through the GravityKit MCP: moving a search field no longer removes it from the Search Bar widget in some Views, and saving View settings keeps text that looks like a number as text, so a label such as “0123” keeps its leading zero.

Other fixes:

Developer updates

  • Renamed the class of the bulk actions widget; the old class name still works.
  • Deprecated these methods, which now do nothing because each feature registers itself: GravityView_Change_Entry_Creator::register_created_by_input(), GravityView_Theme_Hooks_Elegant_Themes::load_divi_modules(), GravityView_Theme_Hooks_Elementor::register_widgets(), GravityView_Theme_Hooks_Elementor::maybe_enqueue_editor_assets(), GravityView_Theme_Hooks_Elementor::register_widget_icons(), and ViewRemovalSettings::add_component_script().
  • Deprecated GravityView_Plugin_Hooks_Gravity_Flow::add_workflow_search_fields() and GravityView_Widget_Search::add_form_search_fields(), which now return the fields they receive unchanged. To change the Search Bar widget’s fields, use the gk/gravityview/search/available-fields filter after priority 0.
  • Added filters:
    • gk/gravityview/shortcode/gv-entry-link/url, gk/gravityview/shortcode/gv-entry-link/anchor-text, gk/gravityview/shortcode/gv-entry-link/link-atts, gk/gravityview/shortcode/gv-entry-link/has-cap, and gk/gravityview/shortcode/gv-entry-link/lightbox for the [gv_entry_link] shortcode
    • gk/gravityview/shortcode/gventry/edit-output and gk/gravityview/oembed/edit-output for the Edit Entry form shown by [gventry edit="1"] and by oEmbed
    • gk/gravityview/lightbox/entry/link-url, gk/gravityview/lightbox/entry/render-type, and gk/gravityview/lightbox/entry/action-response for entries opened in the lightbox
    • gk/gravityview/admin-views/widget/sanitize and gk/gravityview/admin-views/widget/can-duplicate for widgets in the View editor
    • gk/gravityview/admin-views/preset-fields/zones and gk/gravityview/admin-views/template-switch/transfer to let a layout place default fields, and fields moved from another layout, in its own zones
    • gk/gravityview/search/advanced-fields-section and gk/gravityview/search/locked-fields for the Search Bar widget settings
    • gk/gravityview/rest/inspector/dry-run
  • Added the gk/gravityview/renderer/notices action, which fires after a View’s built-in notices.
  • Added the GV\View::can_render_entry() method to check whether a View can show an entry on its Single Entry page. It returns true or a WP_Error with the reason.

GravityView – DataTables Layout v3.15.0

This update to the DataTables Layout works with GravityMath 2.14.0 or newer to give scope="visible" totals in Custom Content widgets the rows on screen. The totals update as visitors page, sort, search, or change the number of rows shown.

Tables capped at 200 entries since the 3.14.0 update show every entry again. The cap affected tables set to show all entries, some searches, Preloaded (Client-side) tables with Auto-Update after their first refresh, and the Copy, CSV, Excel, PDF, and Print buttons. If you added a snippet that raises the limit with the gk/gravityview/view/refresh/max-page-size filter, remove it: tables now stop at the value it sets.

More fixes and developer updates in v3.15.0

Sequence fields no longer restart at 1 on every page of Ajax (Server-side) tables, a problem since 3.14.0. Ajax (Server-side) tables that skip entries, with the “Offset entries starting from” setting or the offset shortcode attribute, leave the skipped entries out of the “Showing 1 to 25 of …” count and no longer end with empty pages.

Preloaded (Client-side) tables opened from an address that includes a page number, such as a bookmark or another View’s page links on the same page, show their entries instead of “This search returned no results.” Clear Filters now also resets the filters of hidden columns.

GravityMath footer calculation fixes:

  • In Preloaded (Client-side) tables, calculations set to View (Visible) show the right totals and update when searching, sorting, or paging
  • In Preloaded (Client-side) tables, calculations update after a search with the Search Bar widget (requires GravityMath 2.14.0 or newer)
  • Calculations show their totals when Field Filters are in the footer and Calculation Row Position is “Above the table footer”; the filters had replaced them
  • With Responsive on, calculations for hidden columns no longer stay on screen past the edge of the table

Developer updates

  • Added the gk/gravityview/datatables/hide-until-searched filter to control whether a table returns no entries when “Hide View data until search is performed” is on and no search has been made.
  • Added the gk/gravityview/datatables/output/render-rows filter to control whether a table’s data request builds the table rows.
  • Added the window.gvDataTablesApi JavaScript API for integrations: sideRequest() queries a table’s data endpoint without redrawing the table, and ownedTables() finds the tables that belong to a View embed.
  • DataTables Views now skip the 200-row limit on GravityView’s /refresh endpoint but still apply the gk/gravityview/view/refresh/max-page-size filter.
  • Export requests for Views that load rows through GravityView’s /refresh endpoint now include the parameters that preXhr.dt listeners add, as admin-ajax requests already did. If they would push the request URL past 6,000 characters, they are dropped and settings._gvExtrasDropped records the affected draw.

This update to Featured Entries now requires WordPress 6.5 or newer. It also fixes Views that use the offset shortcode attribute with “Move Featured Entries to Top” on, which left out featured entries and showed entries the offset should have skipped.

GravityView – Multiple Forms v1.0.2

This update to Multiple Forms fixes Advanced Filter conditions on joined forms that have a Name or Address field. Selecting the joined form still listed the main form’s fields, and saved conditions on its Name or Address fields showed as “no longer available”.

GravityView – Social Sharing & SEO v3.5.0

This update to Social Sharing & SEO, released on October 27, fixes a security issue on Single Entry pages that could show details of entries a visitor is not allowed to view, and we recommend updating. It now requires WordPress 6.5, PHP 7.4, and GravityView 2.29 or newer.

Sitemaps also stop listing Views that have “Prevent Direct Access” on. This fix needs GravityView 3.4.0 or newer; excluding Views from XML sitemaps covers the other ways to keep a View out.

Developer updates in v3.5.0
  • gravityview_social_get_title() now returns the title it was passed when the requested entry is not shown by the View passed to it (or by the View GravityView shows on the page when none is passed).
  • gravityview_social_get_permalink() now returns the link it was passed on a Single Entry page whose View does not show the entry.
  • Added gravityview_social_get_entry_view( $view = null ), which returns the View GravityView shows on the page when it shows the requested entry, or null. A page with several Views needs ?gvid= to pick one, as with GravityView’s Single Entry Title.
  • Added gravityview_social_can_render_entry( $view, $entry ), which uses GravityView’s GV\View::can_render_entry() when available.

How to update

We recommend keeping all your GravityKit products up to date, so they stay compatible with each other and you get every new feature and fix, security patches included. You can update them from your WordPress dashboard:

  1. In your WordPress dashboard, hover over the GravityKit menu and click Manage Your Kit.
  2. Scroll past your licenses to the list of products, then click the Update Available filter to see the products with a new version. Their version numbers show in red.
  3. Click Update on each product.

Updates need an active license on the site.

For the full guide, read installing, activating, and updating GravityKit plugins.