LiveWhale CMS

Content management for storytellers

LiveWhale 1.6.2

The Complete Changelog

We’ve got some big changes coming in the next major version, but in the meantime we’re pleased to release LiveWhale 1.6.2 to bring you all sorts of incremental improvements and bugfixes, as well as a few exciting new features.

Highlights include:

  • key improvements in accessibility and login management
  • an overhauled forms editor with new notification options
  • more options for event RSVPs
  • improved UI for saving dynamic content and editing widgets
  • plus a myriad of bugfixes and performance improvements 


  • Images can now be marked as “decorative” when uploaded or attached to content, removing the requirement of a caption for accessibility. [docs]
  • You can now add descriptive title tags to iframes and video embeds when using the “Add Media” button. For YouTube, etc., the video title (og:title metatag) will be auto-populated into this field.
  • LiveWhale now has a significantly improved accessibility improvement layer which automatically applies improved accessibility standards to all pages of a site. These include:
    • Extracting inline style=”” attributes into the document <head>
    • No longer using empty <a> tags for CSS/JS management
    • Using <fieldset> and <legend> for all front-end form fields
    • Ensuring unique IDs for all form elements
  • Accessibility checking now defaults to the WCAG2-AA test suite.

Many thanks to the LiveWhale Developers Forum members who helped us identify and strategize fixes for many of the above issues. We’re always committed to improving the accessibility of LW and LW-powered websites as much as possible!

Pages & Templating

  • You can now make certain page areas editable by admins only. [docs] Customer Request
  • LiveWhale will now try to extract an image from all pages for og:image tags. Previously it did this only when viewing details for a dynamic content item with an attached image. You can control which image is used by adding a data-share-image attribute with an url to an element on your page. [docs] Customer Request
  • You can now use <xphp var=”exclude_global”>true</xphp> in a page or template to exclude the global theme additions and overrides for certain pages. [docs] Customer Request
  • Improved labeling and management of deleted pages in the navigation manager.
  • Improvements to workflow for authorizing templates for a group.


  • RSVPs
    • Users who RSVP for an event can now cancel their own registration by using a link in their notification email. Customer Request
    • Several adjustments to the appearance of RSVP forms on events, primarily removal of unnecessary CSS and markup. Please review an existing RSVP form after upgrade to ensure there aren’t any unforeseen conflicts.
    • You can now specify which global custom RSVP fields are enabled/required on a per-event basis. [docs] Customer Request
  • Linked Calendars
    • Defaults for a linked calendar now act as overrides, superseding any values in the feed itself, rather than being used only if the feed item has no value. [docs]
    • Events added via linked calendars can now link directly to an external image attached to the feed event, using the ICAL “ATTACH:” syntax. Customer Request
    • Linked calendar events that specify an ICAL location value, but do not map to a location of the same name in LiveWhale, will now still be mapped to a location provided they specify coordinates via the ICAL geo value.
  • When adding a Linked Calendar from another LiveWhale installation, you must now specify at least one group, to avoid accidentally importing an entire website’s events.
  • You can now modify your calendar templates to split a unified event list into separate lists of single / one-time events and repeating/multi-day events. Customer Request


  • UI Improvements
    • Format preview improvements: the widget preview will now warn you about invalid XHTML in your format arg, and, for performance, the widget preview will ask you to refresh it manually when you’re typing into the format arg (rather than reloading with every key press).
    • When creating a profile, blurb, or blog widget showing only a particular type, you’re now only shown custom format variables for that type (rather than having to scroll through all of them). Customer Request
    • Clicking to edit a widget from a WYSIWYG context now automatically switches you to the owning group when possible.
  • New arguments
    • min, which requires that there be at least that number of results for the widget to return any results at all [docs] Customer Request
    • allow_indexing, which forces a widget’s output to be included in the search index for a page [docs]
    • exclude_duplicates, which force a widget to exclude results that already appear in any earlier widget on the page [docs] Customer Request
    • from_nav and from_group_nav, which allow you to use a pages widget displaying pages from a particular nav or a particular group’s main nav [docs] Customer Request
    • sort_order = most-tags-matched, a new sort option for when you’re matching multiple tags in tag_mode=any, to order your results by which content matched the most of the provided tags [docs]
    • sort_order = date and reverse-date added to profiles widgets Customer Request
    • filter = location_title, a new option for filtering widget results by the title of the attached location, for content types that support adding a location Customer Request
  • Argument inheritance: if you’re using widgets within widgets, you can now use “inherit” on the child widget to select arguments that should be inherited from the parent widget. [docs and example]
  • You can now use id=”foo-{id}” in widget formats; previously, IDs were stripped except in cases where max=1. Customer Request
  • Significant performance improvements with part of the widget layer.


  • The blog manager now denotes the last post date for each blog.
  • You can now import blog posts from an external feed.


  • Improvements to LiveWhale forms Customer Request
    • Improved editor UI
    • New field types: horizontal line, header, paragraph text, and hidden element
    • Added ability to configure styling of individual fields via drop-down [docs]
    • Added ability to configure confirmation notifications to user-supplied email addresses
  • Support for SSL enforcement is no longer an option in LiveWhale forms. All forms will now redirect to HTTPS if supported by the current web site, in compliance with new browser security recommendations.
  • LiveWhale no longer permits email-only form submissions; all submissions will be saved in the database and email notifications are an additional option.


  • You can now duplicate profiles within a type. Customer Request


  • Added data-qa-min-characters to QuickAccess, allowing you to change the default of 2 characters before searching begins.

Social Media

  • Facebook ACCESS_TOKEN and LWC_APP_ID have been simplified into APP_ID and APP_SECRET. Backwards compatibility is maintained with the old settings.
  • You can now use the picture_src format variable in the Twitter widget to access the url of the 1st of any images included in the tweet. Customer Request


  • LiveWhale now supports logging into multiple CMS installations on the same domain at the same time (such as a prod and dev server).
  • Implemented preliminary support for native Shibboleth/SAML logins via the new “SAML” login mode.
  • LDAP configurations now support multiple LDAP_DNs via array. This can be used to attempt authentication against multiple DNs in succession, until one matches. Customer Request


  • New handlers
    • onValidateUpload, which allows you to add custom validation rules to image and file uploads [docs] Customer Request
    • onCSVOutput, which allows you to customize the output of CSV exports in various contexts [docs] Customer Request
    • onFormatMessageVars, for customizing the values of variables in CMS notifications [docs] Customer Request
    • onAfterSync, to be used for post-processing events synced in a linked calendar, just as you could previously use onBeforeSync to modify their values prior to syncing. [docs] Customer Request
  • You can now configure your production site to pull CMS updates from a development server, which in turn pulls updates from White Whale.
  • New config setting FROM_NAME works like FROM_ADDRESS, but instead of setting a default global sender email address, it sets the default global sender display name. Customer Request
  • Token-based authenticated requests are now allowed for both LiveURL requests and any frontend page, and can be used concurrently with an active, normal login.
  • It is now possible to configure a development server to automatically pull minor CMS upgrades on a weekly basis.

Other Improvements

  • Backend search improvements: you no longer need to initially choose between your content and shared content, and searching by ID is a smoother process.
  • LiveWhale now supports SASS, as an alternative to LESS. Files with the .scss extension now override .css versions, just as with .less files. Customer Request
  • Automatic group-switching: When editing a piece of content owned by a group you’re not logged into, but have access to, you will now automatically switch groups and go directly to that editor.
  • Removed unnecessary loading screens, improving perceived responsiveness of all backend interfaces.
  • Added support for JSON feeds. To retrieve content in JSON feed format, simply treat it like RSS, but use the jsonfeed endpoint. i.e. /live/jsonfeed/news/max/3 — Linked calendars support importing JSON feeds, provided feed items have a date_published, but are not recommended over ICAL for lack of event-specific attributes.
  • Added ability for admins to “select all” in multiselect/multisuggest menus. Customer Request
  • Public submissions now indicate the date/time of the submission beneath the submitter’s contact info. Customer Request
  • Added support for LESS 3.0+.
  • Some of the superpowers tied to the admin permission are now grouped under a single “System Administration” superpower.
  • You can now filter by location on backend managers. Customer Request
  • As a diagnostic check, LiveWhale now detects significant offsets between system clock time of servers pooled in a load balanced configuration.
  • Improved password hashing mechanism for password-based installs, including improving forward compatibility with openssl as an mcrypt replacement.
  • Added UPLOADS_TTL setting to configure cleanup of deleted uploads.
  • Backend managers now possess a sort option in the filter sidebar. Customer Request
  • If you request a custom details template by url and it does not exist, it will now fall back on the default details template instead of giving a 404 not found.
  • Added SMTP_ALLOW_INSECURE setting to permit SMTP configurations that disable SSL certificate verification (such as for self-signed certs). Customer Request
  • Added location autocomplete (previously available to the events editor only) to all location-aware content types. Customer Request
  • Improved integration of Google Maps API throughout the CMS to accommodate expected API changes on June 11, 2018.
  • LiveWhale now automatically kills long-running stuck queries that may be the result of an issue with the database server.

Bug fixes

  • Fixed an issue where a page’s group owner was not immediately reassigned when the original group owner was deleted.
  • Page editing no longer adds an empty title tag to pages that inherit a title tag from an included file.

Upgrade Steps 

There are no new special upgrade steps for 1.6.2.

The LiveWhale team will be systematically updating all of your dev servers to the latest version shortly (please let us know if you need us to wait to upgrade your dev server for any reason, if you’re actively developing something for instance).

Once your dev server is upgraded, you can review your site there for any client-specific code (themes, modules, or other customizations) that might need to be updated to work with the new version. Then we can schedule your production server upgrade once that testing is complete.

If you don’t have a dev server, please reach out to about getting one set up.