LiveWhale CMS

Content management for storytellers

LiveWhale 1.6.1

The Complete Changelog

LiveWhale 1.6.1 brings a host of behind-the-scenes improvements for our editors, developers, and administrators, as well as a few delicious new features to the LiveWhale core.

Highlights include:

  • Simplified file structure for themes and templates
  • Honest-to-goodness blogs, with contributors, moderation, and more
  • New visibility settings: page visibility, and “visible by direct link only”
  • Per-group availability of global items like event types
  • Enhanced public submissions
  • Expanded archive, trash, and recovery support
  • Native support for CAS logins
  • Native Google Tag Manager support

Pages & Templating

  • Ingredients: Combine all your theme files and other custom scripts, styles, fonts, etc. into the new ingredients folder for easy access and, quite possibly, a better outlook on life. LiveWhale will continue to honor the old folder structure (/livewhale/theme/) as a fallback, but we recommend migrating your themes into /_ingredients/. Learn more about the ingredients folder.
  • Sections allow you to display only part of your group navigation on certain pages, essentially creating “sub-sites” within a large set of pages. Learn more about sections.
  • Visibility Settings
    • It is now possible to set a web page as live or hidden. Hidden pages are hidden in navigations and can only be accessed on the frontend web site by logged-in LiveWhale users. Non LiveWhale users will receive a 404 until the page is taken live. Customer Request
    • It is now possible to set visibility for a web page. As with dynamic content, pages with special visibility settings will trigger a redirect to the LiveWhale login when viewed. These pages do not automatically get excluded from navigations. Customer Request
  • The navigation manager now permits you to show/hide pages, and remove pages from the file system, if your user has the permission to do these.
  • Templated details templates: All details templates can now use variables in the format “details_image” (backwards compatible with the previous “news_image”, “profiles_image”, etc.) These content type-agnostic versions allow for the creation of details templates that are generated from a standard page template.
  • The popular pages feature on the dashboard now reflects pages in your group only for non-admins, and is segmented by week, month, and year. Customer Request
  • Page source editing is now enabled only on page templates and pages that do not use a template.
  • It is now possible to set a default global thumbnail for Facebook (og:image). Customer Request
  • The pages widget now supports the group and exclude_group args.
  • An additional page variable (page_url_breadcrumb) was added as an alternative to group_breadcrumb. Whereas group_breadcrumb builds breadcrumbs from the group’s main navigation, page_url_breadcrumb builds breadcrumbs from the file system directory structure leading up to the current page.
  • The ability to set a page as a template is now available to admins only. Customer Request


  • New content type! Yes, you could always use stories, templates, and tags to roll your own blog solution… but now LW natively supports full-featured blogs. It’s easier than ever!  Customer Request
    • Custom fields: Blog posts include a body and title by default, but just like with profiles, you can add an unlimited number of custom fields and display them in your details template.
    • Moderation: You can assign moderators— from any group— who must review each blog post before it goes live.
    • Contributors: Choose on a per-blog basis to allow posting by a single editor, a group, a hand-picked list of editors (from any groups), or admins-only.

Users & Groups

  • It is now possible to restrict access to global profile types, blurb types, shared widgets, and event types on a group-by-group basis, from the group editor.  Customer Request
  • It is now possible to make a user a limited group editor, with user/group editing access to their groups only. Customer Request
  • When configuring a user for group switching, it is now possible to automatically assign access to all groups, as an alternative to specifying a fixed set. Customer Request
  • Users now receive notifications for both their primary and switch groups, rather than just the primary group. Customer Request
  • Usage of multiple groups across tabs no longer presents a warning with an option to switch back. Instead, it now automatically switches you back and displays a visual indication to that effect.
  • Streamlined the group access UI component on the group editor by moving it to the “Credential and access” section where it is always visible.
  • New /live/users/csv developer endpoint lets you fetch user CSV data via the API (post authentication). Customer Request
  • New /live/json/groups developer endpoint lets you fetch group records in JSON format. Customer Request
  • Enforcement of higher quality passwords when using password mode for LiveWhale logins.

Public Submissions 

  • It is now possible to configure email notifications for public submissions using the public config setting PUBLIC_NOTIFICATIONS_EMAIL. (Functionality absorbed from the public notifier custom application.) Customer Request
  • It is now possible to configure public submission forms to allow users to choose which group to submit to. This is enabled with enable_group_selector = true on the public submissions widget. If you wish to restrict submissions to a fixed set of groups, then the public config setting PUBLIC_GROUPS can be set to an array of group IDs. When submissions are made to specific groups, the email notification behavior changes so that members of that group are notified. Customer Request
  • It is now possible to apply event types to events submitted via the public submission process. Customer Request
  • Added onFormatPublicSubmission for greater control over the precise item created by the submission process.


  • LiveWhale now automatically generates a sitemap XML file in your web root at /sitemap.livewhale.xml and adds the path to your robots.txt. This can optionally be submitted to Google for web site crawls. Customer Request
  • The QuickAccess manager now allows import/export via CSV. Customer Request
  • Added data-qa-more-results-url and data-qa-more-results-msg to QuickAccess, which will direct the user to the full search results page.


  • Deleted pages, navigations, users, groups, tags, and linked calendars are now saved in the trash where they can be restored like news, profiles, and other dynamic content.


  • Numerous small improvements to the frontend calendar, especially support for CORS implementations.
  • Linked Calendars
    • Improved ability to override some fields for linked calendar events. Customer Request
    • Linked calendars now plot imported events to the map if their location title matches a location that exists in the destination group, or a global location. Customer Request
    • The linked calendar editor now supports many more fields that can be applied to new events created via that feed. Customer Request
  • Registration/RSVPs
    • Improved entry for event cost. Customer Request
    • You can now optionally set an explicit start and/or end date/time declaring when RSVPs are accepted for an event. Customer Request
    • When exporting event registrations to CSV, any additional form or custom fields will be divided into their own individual columns. Customer Request
    • It is now possible to export CSVs for multiple events from the RSVP screen. Customer Request
    • It is no longer possible to enable RSVP payments unless online payments are possible for this group. For events that should list non-online payment instructions, users should use the cost field.
  • Added the ability to display the start date of a repeater range in the events widget, and improved the value of the repeats_until variable when not setting an explicit repeater range end date. Customer Request
  • Updated calendar print styles. Customer Request


  • Profiles now support scheduled golive and expiration, as well as archiving. Customer Request
  • Profile types now support phone number and URL fields, which validate according to their type. Customer Request
  • Profile types that assign custom fields to the sidebar (on the frontend) will now present that field in the sidebar in the backend profile editor as well.


  • To improve accessibility globally, captions are now required when attaching an image to any type of content (story, event, gallery), or inserting into a WYSIWYG editor.
  • The image manager now makes clearer which collection you are viewing, and the add new image links now default to adding an image to the collection currently being viewed.
  • The image collections manager now includes an entry for “Shared Images”.
  • The news, event, gallery, and profile widgets now support “image_id” as a format variable, as well as a details template variable, for building custom image urls. Customer Request
  • Added lightbox slideshow functionality to the image preview dialog. Customer Request
  • Increased the maximum dimension of hi res images that LiveWhale stores to 3200px (from 2048px).
  • News, events, and profiles widgets can now display an image credit as they can with other image fields. Customer Request


  • The CAS login mode is now supported. Customer Request


  • Re-added image upload button to gallery editor, which was a 1.5 feature that was erroneously removed from 1.6. Customer Request
  • Complete re-write of default Javascript for gallery details page for improved functionality.


  • Blurbs now support usage of a details template. This can be enabled via a checkbox on the blurb type editor. Customer Request
  • Title-only blurbs are now supported—the body field is no longer required. Customer Request

Content Analyzer

  • LiveWhale’s content analysis now detects and warns on invalid content, such as Microsoft Word-specific content.
  • Developers can now add custom rules to the content analyzer for page content, enabling them to generate errors for their own conditions.


  • The time_format arg for the feeds widget can now be “false” to hide the time component. Customer Request
  • Added onGetFeedDataFilter() handler, allowing developers to post-process feed contents.


  • Support for cross-domain tracking in Google Analytics. Customer Request
  • LiveWhale now supports Google Tag Manager natively. It is recommended that you add your ID to the LiveWhale config, replacing your Google Analytics tracker, and configure Google Tag Manager to do the analytics tracking instead. Customer Request

Other Improvements

  • Initial support for PHP 7.0 / 7.1. Customer Request
  • The archive feature has been expanded to the following additional content types: events, files, forms, galleries, images, and profiles. Customer Request
  • New visibility option for content visible only by direct link. Customer Request
  • Commas are now allowed in event type and tag titles. Customer Request
  • It is now possible to restrict accepted file types in all upload contexts via the config setting ACCEPTED_FILE_TYPES. Customer Request
  • Native LiveWhale comments have been deprecated. Disqus is now the recommended option for adding comments to stories, events, and galleries. (Learn how to enable Disqus for LiveWhale.)
  • Streamlined wysiwyg media insert dialog to de-emphasize need to explicitly set dimensions. Also, removed media wrapper used for reponsive styles; using fitvids.js instead. Customer Request
  • Improved the UI clarity in regards to when bulletins are sent via email. Customer Request
  • When linking text in a WYSIWYG field, LiveWhale now automatically offers suggestions for what to link to.
  • Added support for the header_block arg, which allows you to optionally use a different header than h3 for widget headers.
  • The custom field API can now add input types other than textarea to an editor.
  • Blurb and profile module tabs now provide direct links to available types.
  • Improved support for special widget behaviors (such as pagination, randomization, and slideshows) when using clean_markup. Customer Request
  • Filtering content by group on managers is now no longer limited to admins, but also possible for group switching users. Customer Request
  • New behavior introduced governing the default state of the share icon (globe) on editor screens. Stories and events are now the only types shared by default. The default for each type can be controlled individually using the new share_by_default settings (see sample.private.config.php for examples). Customer Request
  • New handler “onAfterWidgetDetails” intercepts requests for details pages, but after the request is processed. For example, you may use this to modify or add additional global template variables.
  • Development mode for new site buildouts.
  • LiveWhale redirects now preserve your query string.
  • Significant reduction in disk space used by the page cache.
  • Nightly database backups can now optionally be configured to exclude the contents of LiveWhale’s trash, and instead store weekly trash backups independently. This can be utilized to reduce the size of your nightly backups if you tend to have users storing a lot of deleted images. To enable, see ENABLE_WEEKLY_TRASH_BACKUPS in your sample global config.
  • New handler “onMessages” intercepts backend status messages and allows them to be customized.

Bug Fixes 

  • Fixed several issues relating to editor revision restoration, related to form structure, tags, locations, related content, and images.
  • Improved email notifications compatibility with mail systems that prefer LF-only headers instead of CRLF, via a configurable setting.
  • Improvements to the XPHP engine to avoid crashes in extreme cases where huge amounts of content are controlled by XPHP logic.

Upgrade Steps 

There are no new upgrade steps for 1.6.1. If you are upgrading from 1.5.x, please see the following 1.6 upgrade steps:

  • Upgrade to Recapcha 2.0.
  • If not available on your system, install uglifyjs and cleancss (via node) for optimal resource management.
  • Ensure that you’re using the latest version of your npm packages, especially LESS (i.e. sudo npm update -g)
  • Ensure that you are uploading high res images whenever possible, so that they can be utilized for retina support.
  • If you are using stylesheet.css and stylesheet.less side-by-side on your server, but have let the .less versions become outdated, please either update them or archive them prior to the 1.6 upgrade.
  • Have a dev server? Don’t forget to contact us to schedule its upgrade so you can begin testing and preparing!