LiveWhale CMS

Content management for storytellers

LiveWhale Company Blog  »

Welcome to LiveWhale 1.5

Our newest version of LiveWhale contains a wide variety of improvements. Here’s what you need to know.

Welcome to LiveWhale 1.5, announced at #LWDC 2013!

As you may have guessed from the version number, this release is a big / exciting / fun one— both in terms of new features that we think you’ll love, and in terms of a general refinement of the interfaces you’re used to seeing. In particular, we’re proud to take advantage of 1.5 to launch a new Dashboard landing page, and major new features for both the event and profile modules.

Here you will find a complete list of changes in LiveWhale 1.5 so you can begin to prepare your users. Upgrading: Be sure to check the important upgrade steps at the end, as you may have to make a few changes before upgrading.

Anyone wishing to take the new version for a test drive may contact us at for access. Happy content editing!

Highlights of LiveWhale 1.5

  • Refreshed look and feel throughout the content management areas, including many new UI refinements, and a brand new Dashboard page, featuring content tailored to your group.
  • Improved navigation management, including the ability to move pages into other submenus and improved options for finding pages to link to.
  • Major improvements to events & calendaring: new repeating event options and the ability to edit repeat options of existing events, event cancelation, RSVP improvements, improved timezone awareness and much more.
  • Significant improvements to profiles: additional custom profile field types, profiling field syncing from external data sources, profiling editing for non-LiveWhale users.
  • Completely new approach to assigning permissions within LiveWhale for access to individual features.

Complete List of Changes in LiveWhale 1.5

Visual and User Interface Improvements

  • Newly updated, modern look and feel throughout the content management areas.
  • The LiveWhale welcome page is now a completely redesigned Dashboard! It contains a suite of new content tailored to your group, and the ability for developers to add your own custom Dashboard content. customer request
  • Users can now add shortcuts for speedier access to management pages by clicking the “Add Shortcut” button. Shortcuts are accessible throughout the management interfaces.
  • Content manager lists now use traditional pagination for navigation and remember the state of changes made to them. customer request
  • You can now click the save and view button from most editors to immediately preview your content after saving.
  • To aid in the archiving or deletion of outdated content, you can now filter by year on relevant manager lists. customer request
  • Related content searches now return results from all groups, rather than just your own. customer request
  • Admins can now filter by group on managers, viewing content for the current group, a different group, or all groups. Upon clicking to edit an item in another group, you will be automatically switched to that group.
  • Improvements have been made to the bulk upload interface, including better feedback in the UI, and a toggled details section for each image.
  • Photo captions no longer appear in WYSIWYG fields. They will appear normally on the page, but are no longer previewed in this context where they cannot be edited.
  • Admin tools, some of which can now be given to non-admin users, are now referred to as “Superpowers”.
  • The media=“screen” attribute is no longer automatically applied to dynamically added stylesheets.

Events & Calendaring

  • LiveWhale now supports an improved set of repeating event options (on par with Google Calendar offerings). Additionally, it is now possible to edit existing events and adjust their repeat options later. customer request
  • Repeating events can now be imported and exported via ICAL feeds due to new support for the RRULE parameter. customer request
  • You can now mark an event as canceled. This differs from hiding an event in that the event is still displayed to the public, but marked as canceled to the end user.
  • It is now possible to restrict individual event registration by one or more email hosts (, etc.) and/or by an explicit list of email addresses. customer request
  • It is now possible to receive notifications when a visitor RSVPs for your event. After enabling RSVP for an event, check the checkbox for notifications and supply a valid email address(es). customer request
  • When setting a total limit on attendees for RSVP’d events, you can now also set a limit per each registration. customer request
  • Phone number is no longer a required field for RSVP’d events. customer request
  • Comments about event RSVPs are now divided into two fields instead of one: comments from the registrant, and comments from the event manager (not visible to registrant). customer request
  • Added a field for “cost” of events. Here you can specify any additional details about the cost of attending your event. customer request
  • Individual events can now be assigned a different timezone from the default assigned to your group. Additionally, users visiting a frontend calendar can now choose their own timezone to view event times in both the native event timezone as well as their own. customer request
  • LiveWhale now supports European (24-hour) date/time formatting. Formatting is automatically toggled according to the group’s or the event’s timezone. customer request
  • Repeating events now possess an lw_repeats class for custom styling in widget output.
  • You can now specify a per-group weather ID (woeid) from the group editor. This will override any global weather location you may have set, and allow group-specific frontend calendars to display the weather for the group’s alternative physical location.
  • The event detail view in the frontend calendar now includes a list of tags applied to the event, which are clickable in order to run a tag search. customer request
  • Multi-day events now appear on each day upon which they occur, on both backend and frontend views. The “hide_repeats” arg, which forces display of only the next instance of a repeating event, now has the same effect on multi-day event instances. customer request
  • LiveWhale now supports the DURATION and STATUS:CANCELLED attributes of an ICAL feed.
  • The events manager now displays which imported calendar events are pulled from. customer request
  • You can now duplicate events via the dropdown menu on your list of events, just like you can with forms. customer request


  • Profile details templates can now use XPHP vars “profiles_body” and “profiles_sidebar” to output all custom fields in the order and location designated in the profile type editor. (For backwards compatibility, it is still possible to use the individual field variables.) If a custom profile type field should not be displayed when accessing profile details, choose “none” as the display location to suppress it on the public site and API requests completely.
  • Custom profile types now support a range of additional field types (number, radio button, checkbox, select menu, date, date/time, email). customer request
  • Profiles in the profile manager can now be filtered by custom multi-value (radio button, checkbox, select menu) fields.
  • It is now possible to mark a custom profile field as required. customer request
  • You can now configure profiles to sync selected field values from external data sources such as Banner/Oracle databases, LDAP, or MySQL tables. customer request
  • Custom profile fields now appear as options for filtering and formatting in the widget editor. customer request
  • When using LDAP or SSO login mode, authenticated users who lack a LiveWhale account, but have a corresponding profile in LiveWhale, will be logged into a sandboxed profile editor providing access to their own profile. customer request

Page Editing

  • Due to popularity, the default separator for new page filename suggestions has changed from an underscore to a hyphen. customer request
  • Users who can edit pages due to their ability to switch to the group that owns them now also appear as editors under the pages’ details tab. customer request
  • The page errors feature now includes notifications about editable elements that lack the required corresponding “id” attribute.
  • Page errors are no longer reported for empty anchor links.
  • A new “Your Pages” submenu under the Pages tab now shows you a structured list of all pages you manage.
  • Users authorized for use of the File Browser can now find it under the “Superpowers” menu.
  • The recently edited pages submenu item has been removed.


  • The “Your Pages” submenu item has been renamed “Navigation” to more accurately reflect the content it contains. customer request
  • When editing navigations, expanded submenus now remember their opened state after saving.
  • When managing navigations, you can now move pages to other submenus, rather than just reordering them within a single submenu. customer request
  • When editing navigations, you now have improved options for finding pages to link to: adding a page from your group, from the site, or from an external site. customer request
  • It is no longer necessary to enter a navigation directory for a new navigation.
  • The new sitemap widget allows users to embed a sitemap in their pages, created from navigations in their group.

Templates & Theming

  • By default, all page creators can now utilize templates in a global /templates directory.
  • You can now use the global theme (/livewhale/theme/global) to globally add additional scripts and styles to your public web site. This theme overrides resources in the core theme if there is an exact filename match, otherwise it will append the new resource to your pages. customer request
  • A new templates submenu under the pages tab allows admins to view all available templates, and update pages created from those templates after making changes. customer request
  • The chooser for selecting a source template for new pages has been replaced with a basic dropdown menu. You can choose which template is selected by default by assigning a default template for a group on the group editor.
  • LiveWhale now automatically includes an HTML5 shim script for IE < 9.0, so manual inclusion is no longer necessary in your site templates.
  • LiveWhale themes can now override default widget formats. For example, copy /livewhale/theme/core/widgets/news.format.html to the equivalent location in your theme and then alter the contents of this file.

Social Media

  • New fields on the group editor now allow administrators to assign social media accounts to a group. These can be used as group defaults for social media embeds.
  • New page variables will embed group-specific Twitter and Facebook content. They include: group_twitter_name (the Twitter username), group_twitter_link (a link to the group’s Twitter feed on, group_twitter_feed (an embedded Twitter widget containing the group’s tweets). And: group_facebook_name, group_facebook_link, group_facebook_feed.
  • The Twitter and Facebook widgets now support the group and exclude_group args, deploying the group’s Twitter/Facebook handle.
  • The Facebook widget now requires a sitewide access_token, rather than a per-widget token.
  • The Facebook widget can now additionally accept a username instead of just a user ID.
  • The Twitter widget now supports requesting favorited tweets for specified username(s). customer request
  • The Twitter widget now supports showing only picture tweets.

Users & Groups

  • When creating a new group, you now have the option to automatically add an index page from a template.
  • Access to features in LiveWhale via permissions has been completely redesigned for fine-grained control. From the user editor, you can now enable/disable a variety of these new user-level permissions. customer request
  • Users authorized for editing users and viewing activity can now see activity for a particular user on the user edit page, with a link to a full list of that user’s activity.
  • The structure of user CSV imports/exports has changed. Please consult the import/export user pages for an updated overview.
  • The import users via CSV feature now allows you to update existing users in bulk, rather than only import new users.
  • It is now possible to delete users in bulk using the checked items dropdown. customer request


  • News items are now more consistently labeled as “stories”.
  • It is now possible for a news widget to show both current and archived news, instead of just one or the other. To do this, choose “both” for the “is_archived” arg value. customer request


  • It is now possible to use the Quick Upload feature from the file manager, just as it was on the image manager.
  • The files widget now produces links which always open in a new window or tab. customer request

Images & Galleries

  • It is now possible to add images shared from other groups to your galleries. customer request
  • Inline galleries no longer require either an image width or height. If neither is specified, it will automatically use the default width of 300px.
  • The images widget now has additional date and alphabetical sort options. customer request


  • Pins in the Places widget are now color-coded by content type.
  • You can now use the aggregate_pins arg on the Places widget to disable aggregating pins together while zoomed out.
  • You can now customize the formatting of items mapped in a Places widget according to content type. customer request


  • It is now possible to include a CSV header row when exporting form data. customer request


  • The backend search now returns matches for your pages.
  • It is now possible to toggle between searching your own content vs. other groups from the backend content search box.


  • Important: LiveWhale no longer excludes shared content that has been copied to your group when displaying widget results from multiple groups. Instead, it now displays the first encountered item from a set of content sharing the same source, according to sort order rules. We hope to satisfy a very common frustration for customers with this adjustment! customer request
  • Users can now use the “use_tag_classes” arg to automatically add tags as CSS classes to individual widget results. This allows developers to style content by their associated tag assignments. customer request
  • The group_title format var is now available to all relevant widgets. customer request
  • The file widget now supports pulling content from remote servers, by specifying an http://, https://, or // style url. customer request
  • Widgets which support the tag selector can now use the new “tags_header” arg to customize the header for a the tag selector. customer request
  • Format args containing conditional variables can now nest variables. For example: {<a href=”page.php?name={name}”>|name|</a>} customer request
  • A nested widget’s “format” arg can now refer to the format var of a parent widget. customer request
  • LiveWhale no longer supports comma separated lists for arg values. (Ex: <arg id=”group”>Group A,Group B</arg>) Instead, multiple args of the same type should be supplied.
  • Stream widgets now support the “columns” arg.
  • You can now use the lw_is_archived class to customize styling for archived results in news and blurb widgets. customer request
  • It is now possible to limit the tag selector to just starred tags.

Developer API Changes & Improvements

  • The new Dashboard offers a feedback form allowing users to email support staff. You can direct these emails to an internal help desk email address instead of LiveWhale support by changing the SUPPORT_EMAIL setting in your master LiveWhale config.
  • Adding new TinyMCE buttons via the “TOOLBAR_ADD_BUTTONS” setting now affects all WYSIWYG fields, not just those in the page editor. customer request
  • When logging into LiveWhale on a new host for the first time, admins will be presented with a hosts manager allowing them to move host-specific data between hosts, or to delete data from hosts no longer present in the host config. For example, if you have staged your new site at and now want to take it live to, simply log into for the first time, and choose to move data from to You can access this manager again at any time from /livewhale/?hosts. This replaces our manually-run SQL host change script.
  • Developers can now dynamically append a body class to the current page by calling $_LW->appendBodyClass(‘myclass’).
  • New onBeforeRedirect() and onAfterRedirect() handlers allow developers to intercept 404 requests before/after the redirects module kicks in to attempt a redirect.
  • Developers can now use the frontend application handler “onFormsOutput” to manipulate forms (as a DOM object) on the fly. This affects the form both when viewed from a details page and embedded on other pages, however logic can optionally be used to differentiate between the two from this handler. Arguments passed to this function are: $xml (XML object of the form output) and $id (form ID). customer request
  • The JSON LiveURL plugin (/live/json) now includes tags in its results. customer request
  • The format of iCAL feeds exported from LiveWhale has been improved to include additional custom LiveWhale fields. customer request
  • Developers can now use the XML LiveURL plugin (/live/xml) to get the same results /live/json provides, but in XML format.
  • LiveWhale’s login module is no longer only applicable to CMS logins. It can also be used for individual web application logins. Login modes (password, LDAP, SSO) are now plugins, and developers can extend LiveWhale by adding their own custom plugins.
  • Certain fields in the livewhale_events table have been dropped due to the significant event improvements in this release. Please be aware that any custom PHP scripts that use these fields should be updated to use only date_dt and date2_dt for all event dates/times, take advantage of the new timezone field, and utilize the new repeat option fields where necessary.
  • LiveWhale will no longer be responsible for syncing the content directory across multiple LiveWhale hosts shared by a single installation. The primary purpose of this task (load balancing) should involve one of the recommended external means of syncing content.
  • The SSO login mode has changed in a way that is not backwards-compatible. If you are using an SSO to authenticate LiveWhale logins, please change your server configuration to apply SSO authentication to the /livewhale/sso directory instead of /livewhale/index.php.
  • LiveWhale now comes packaged with a default RSS XSL stylesheet for in-browser feed consumption. Developers may edit their public.config.php file and add their own url for an alternative stylesheet via the $_LW->RSS_XSL_URL setting. customer request
  • Added new handlers for externally synced content. These are currently used for events created via an imported calendar: onBeforeSync($type, $id, $fields) — called for content type $type (events) with id $id (imported calendar id), for event fields to be imported $fields. Should return updated $fields for importing into LiveWhale. onAfterSyncCreate($type, $id)
— called when content of type $type resulted in new items being created for source $id. onAfterSyncUpdate($type, $id) — called when content of type $type resulted in updated items for source $id.
  • It is now possible to override any backend template or stylesheet by adding a /client/[module]/styles/[module].css or other resource matching the exact path and name of the core version. Developers can now choose between this wholesale replacement of the core file vs. adding additional CSS/JS resources that override earlier core functionality and styling.
  • It is now possible to force a specific form to redirect to a thank you url. To do this, simply use the existing onFormsSubmission() handler, check for the right form ID, and set $_LW->REGISTERED_WIDGETS[‘forms’][‘custom’][‘thanks_url’] to ‘/path/to/thanks.php’.
  • An additional widget filter, called “regexp”, has been added, which allows matching against rows by a regular expression. customer request
  • Full support for PHP 5.5 and MySQL 5.6, current as of this release.

Bug Fixes

  • Fixed an issue where an empty id attribute on an editable page element would break the page editor.
  • Fixed an occasional issue where tags added to a widget in the widget editor could be ignored.
  • Fixed an issue where LiveWhale might warn about a page not being writable when it really is.
  • Fixed an issue where adding a top-level link would not scroll the user to the newly added link, and therefore might have appeared offscreen.
  • Fixed an issue where clicking “Edit page details” from the page editor did not block others from concurrent page edits like clicking “Edit page” or “Edit source” does.
  • Fixed an issue where group directory assignments were not properly enforcing lowercase.
  • Fixed an issue involving duplication of blurb types when moving/copying blurbs of a global type to another group.
  • Fixed an issue where changing a page’s template did not restore meta description/keywords.
  • Fixed a rare issue where an element with id=”tinymce” in a page could break page editing functionality.
  • Fixed an issue where API requests for an item’s details in XML or JSON format were not supported for items copied as links.
  • Fixed an issue where the wrong content-type header was sent for XML/JSON item details requests.
  • Fixed an issue with support for certain kinds of iCAL feeds.
  • Fixed an issue where it was possible to embed a form inside another form via the intro text field.
  • Fixed an issue where unreadable/corrupted image files would fail the upload process without a warning.
  • Fixed an issue where an erroneous JPEG error may be given when uploading images with an apostrophe in the file name.
  • Fixed an issue where the status of a repeating event’s suggestion to other groups was only correct for the first item in the event series.
  • Fixed an issue where it was unclear how to remove a mapped location for your event.
  • Fixed an issue where a parent widget did not expire when a child widget inside did. This is now resolved and it is no longer necessary to apply no_cache=true on the parent widget as a workaround.
  • LiveWhale now warns admins if there are any crashed MySQL tables in need of repair.
  • A page error is now created if a unique element ID is used more than once in a page.

Important Upgrade Steps

  • If your users embed Facebook widgets in the content they manage, it is important that you add the new sitewide access token to your global.config.php file. This replaces the per-widget access token. You may do this simply by utilizing the following setting: $_LW->CONFIG[‘facebook_access_token’]=‘your_access_token’; You may use an existing access token from one of your Facebook widgets.
  • The SSO login mode has changed in a way that is not backwards-compatible. If you are using an SSO to authenticate LiveWhale logins, please change your server configuration to apply SSO authentication to the /livewhale/sso directory instead of /livewhale/index.php.
  • If you are using custom PHP scripts to manipulate LiveWhale events stored in the database, you may need to make some adjustments to honor the changed database fields related to significant event improvements in this release. If this is relevant for your site, please contact for an updated table schema.
  • The media=“screen” attribute is no longer automatically applied to dynamically added stylesheets. If you need to update your stylesheets to account for this, please remember to do that at upgrade time.