LiveWhale 1.4.2

Complete list of changes in LiveWhale 1.4.2


It's that time again! We've been hard at work making LiveWhale 1.4.2 the most developer-centric release yet. There are several important improvements for developers, from an amazing new set of application handlers, to better mobile app intregration, to new APIs. LiveWhale 1.4.2 also incorporates a number of important optimizations to various components of the CMS. Several new module-specific features, coming straight from the request of our customers, have been added to this release as well. Lastly, but certainly not least, we're excited to release a brand new, major module: Places! With Places, LiveWhale now fully provides location-aware services throughout the existing feature set. Enjoy!

Please contact Alex with any additional questions about the changes detailed below, questions about scheduling your upgrade, or information about the new LiveWhale developer community.

Feature Enhancements

Pages & Navigation

  • In previous versions of LiveWhale, making changes to a published version of a page automatically ended an open draft session. This is no longer the case. Active drafts remain available through ongoing changes to the live page until the draft is published or manually canceled.
  • If the page editor returns an error upon saving, it no longer cancels the current editing session.
  • If a user tries to start a page editing session or save a previously started one after access has been restricted due to a LiveWhale upgrade, they now receive an explanatory message.
  • When suggesting a filename on the page creation screen, spaces are now translated to underscores.
  • Page errors now detect invalid PHP includes/requires.
  • You can now permanently remove the records for a deleted directory and its contents (as you can do for individual pages), with a single click. customer idea
  • Accessibility scores are now given in plain English instead of a percentage.
  • Individual pages can be excluded from Google Analytics tracking using the new $_LW->CONFIG['GA_EXCLUDE'] configuration array. customer idea
  • LiveWhale's page cache now logs an error if a cache entry cannot be refreshed due to the CMS or database being unavailable. customer idea
  • Navigation widget items that link to files now possess a class denoting the referenced file type. customer idea
  • LiveWhale now records activity for navigation edits.
  • A new page chooser interface makes template selection for page creation and adding an existing page to a navigation more streamlined.
  • LiveURL requests for pages now contain "keywords" and "last_modified" fields.

Galleries & Images

  • Clicking an image from the images widget will now pop up a larger image preview.
  • You can now preview galleries when attaching them to news stories, etc.
  • Images now have a date field. This allows them to appear in the images widget results on a scheduled basis.
  • You can now set an image caption when uploading a new image from a news/event/etc. editor screen. customer idea
  • Inline galleries can now be created from the widget editor.
  • You can now filter out images shared from other groups in the image library popup. customer idea
  • Added caption and credit to the format options of the images widget in the WYSIWYG widget editor.


  • Forms can now enforce start and end dates for a submission period. customer idea
  • You can now add instructional/help text to any element in a dynamic form.
    customer idea
  • You can now duplicate forms within your group by checking them off in the forms manager and choosing "duplicate" from the dropdown menu. This is useful if you need to create a few forms that share many of the same elements. customer idea
  • Forms will now submit via AJAX when Javascript is available.
  • SSL-enabled forms now display a small lock icon on the forms manager.
  • The form editor interface has been improved to allow for better management of options for select menus, checkboxes, and radio buttons, as well as adding confirmation for remove links.
  • Inline forms can now be created from the widget editor.
  • Inline form widgets can now use the "header" arg.


  • In public calendars and event lists, LiveWhale will now suppress redundant links to events, if the original event being linked to is already displaying on the same day.


  • Added support for RSS feeds in the Files widget and via the LiveURL API.


  • A brand new module! customer idea
    • All users now have a link to the Places library after logging into LiveWhale.
    • Places are locations mapped via the Google Maps service. For example: the dining hall, the physics building, a dorm, library, etc.
    • Most content types now have a new field on their editor screen for plotting the item on a map. A location can be chosen from the Places library, or a custom location can be assigned.
    • When viewing the details for an item with a location, on the public web site, a Google Map will appear, placing a pin on the item's assigned location. (Existing custom templates will need the new map element added. An example is provided in /livewhale/default/CONTENTTYPE.php)
    • Widgets for content types with location support can now use 3 new args for returning results based on location. The "has_location" arg restricts results to items with a location. The "near_location" arg only returns items near a particular location -- either by supplying the id to a Place, or by supplying a latitude, longitude set of coordinates. The "near_distance" arg determines what's considered "near". The default is a 1 mile radius.
    • LiveURL API services now provide additional information for location title, latitude, and longitude for use in custom, location-aware applications. For example, it is now possible to request a list of events "near me", along with their exact locations. Additional services allow you to request a list of pre-defined Places in LiveWhale, as well as a list of markers for your own Google maps representing geocoded items of any content type.
    • A new places widget is now available. This widget will place a Google Map on your web page, with pins showing all news stories, events, etc. taking place in the area. Args allow you to restrict results to particular content types, set the default map zoom level, set a default location to center the map on, and more.


  • Added preview links to LiveWhale search results. customer idea
  • Searching for LiveWhale content will now take plurals into account (i.e. searching for "course" will also match "courses").
  • You can now filter by group from the search screen. customer idea

Other Improvements

  • The old Flash-driven file upload mechanism in LiveWhale has been replaced with a brand new, HTML5/jQuery powered alternative. Adobe Flash is no longer a requirement for LiveWhale users.
  • Upgraded from jQuery 1.5.2 to 1.6.3.
  • Added automatic write/parse error protection for config files and all client directory includes. Developers can opt into this feature by including their PHP scripts with $_LW->protectedInclude() instead of the standard include() function. Instances of a failing include file will be logged to the server log.
  • LiveWhale will now display a warning after login if the server lacks the required PHP setting "date.timezone".
  • Previously using the LDAP login method required authenticating all users directly with the same base DN. It is now possible to authenticate as a master user with one DN and then authenticate the user being logged in with a second DN. customer idea
  • Enabled the use of slideshow args on most widgets. Setting slideshow=true will cause the widget to fade through results. The fade effect interval (default: 5 seconds) can be adjusted (in milliseconds) with the slideshow_interval arg. This is particularly useful on inline galleries. Slideshows will pause on mouseover, so that clickable content does not vanish on you. However, this behavior can be disabled with slideshow_no_pausing=true. customer idea
  • Added the ability to set a custom thumbnail and crop for news stories, events, etc. On the editor screen, navigate to the image you wish to use for a custom thumbnail and then click the new thumbnail button.
  • Importing from RSS and iCal feeds for news and events now possesses a more streamlined and unified interface.
  • Right clicking in WYSIWYG fields will enable a custom TinyMCE context menu when targeting HTML tables. This menu includes additional table-editing functionality. customer idea
  • Event iCal feeds now contain fields for location and geolocation. RSS feeds now contain georss data. customer idea
  • Admins can now move content between groups via a new "Move to Group" option in the manager drop down menus. Moved content will continue to remain associated with images, tags, and other linked content. customer idea
  • Custom question/answers as captchas are now more consistently utilized throughout the CMS.
  • Lowered the default database connection timeout so that the page cache kicks in faster during unresponsive database connections.
  • The switch groups field is now taken into account for user importing/exporting.


  • Failed LiveWhale logins now log the username that was attempted. customer idea


  • Much more robust set of callback handlers for developers. customer idea
    • In LiveWhale 1.4.2 we've made a huge effort to greatly expand the number and clarity of handlers that developers can use to trigger custom actions when certain events occur in the system.
    • A full list of available handlers for custom applications in 1.4.2 is available here.
  • LiveWhale's development platform has migrated from PHP 5.2 to 5.3 (now recommended). Full support will remain for PHP 5.2, however.
  • The "slow requests" section of the LiveWhale debugger is now called "notices". All logged information that doesn't properly belong under "errors" has moved there.
  • Added a logDebug() function for logging debug-specific messages, accessible through the LiveWhale debugger.
  • Added a new API for persistent variable storage.
  • A new LiveURL API is available for REST-based public submissions. Additionally, missions can be created in the Public group, to request particular types of content from users. Users who can switch to the Public group will now see a notification about recent submissions on their welcome screens.
  • Mobile and other custom applications using the LiveURL API to retrieve data from LiveWhale can now request information from LiveWhale about its API support. This is provided in JSON format for a request to http://yourhost/livewhale/api. The response contains the current API version, the URL that should be used for all subsequent LiveURL requests, and a list of supported LiveURL request types.
  • LiveURL requests that return a JSON response now support necessary formatting for JSONP callbacks.
  • Infinite redirect protection. If developers write code running fully behind LiveWhale's page cache that produces an infinite redirect chain, the page cache will terminate the process and guard against server failure.


  • Added significant SFTP/FTP optimizations.
  • Optimizations to content searching on pages.
  • Improved memory management, especially dramatic under PHP 5.3 (now recommended).
  • New, faster config file parser.
  • Major improvements to the widget cache to further reduce database usage.
  • Specialized optimizations to the image and inline galleries widgets.
  • Unused image derivatives are now garbage collected on a monthly basis.
  • Additional LiveURL requests are now cacheable.
  • Optimized certain AJAX requests' interaction with the page cache.
  • Improved page diff calculation for lower memory usage, faster performance, and smaller storage size.
  • Resource syncing between multiple LiveWhale installations that share the same data (for load balancing) has been improved for better efficiency and performance.
  • Several optimizations to page editing authorization code and the file browser.

Bug Fixes

  • Fixed an issue where the widget syntax preview would not account for filetypes when creating a file widget.
  • Fixed a skipped ownership check on an events registration screen.
  • Fixed an issue where the "the user was saved" message would not appear immediately on the group editor, and the search page would not immediately display the message for a successful copy.
  • Fixed an issue where an incorrect permalink may be set for a borrowed file.
  • Fixed cosmetic bug in image uploader where replaced images were showing up along with newly uploaded image.
  • Fixed an issue preventing interactivity when previewing an inline gallery from the widget manager.
  • Fixed an issue where menu items as sub-links of a divider were not accessible in dynamic navigations.
  • Fixed an issue where events that were external links (as opposed to links to other events in the system) did not present fields like date and time as editable.
  • Fixed an issue where image descriptions sometimes would not wrap properly on the image manager.
  • Fixed an issue where the year did not automatically display on event details pages when the event in question does not take place this year.
  • Fixed an issue where an image that was just replaced with a new version did not immediately show the new image afterward, due to local browser caching.
  • Fixed an issue where a loophole allowed an event registration to exceed the limit on number of attendees.