LiveWhale 1.4

Complete list of changes in LiveWhale 1.4


LiveWhale 1.4 is not only faster and smarter, but a whole lot more powerful. It is by far our biggest upgrade yet; including almost a year of development and implementing over 100 changes. Many popular requests have been worked into this release, as well as a number of exciting new ideas. We hope you like it as much as we do!

Feature Enhancements

  • Pages

    • The page management interfaces have been greatly improved, and in some cases completely redesigned.
    • Page management now centers on navigation (under "Your Pages"). The new "Your Pages" screen is your group's nav (if there is one) or a nav management screen to help you create/choose one. Your nav can contain pages from your group's directory or external links.
    • Added a "navigation" widget to place your navigation on a web page. Navigations automatically expand to show the path to the current page, and can highlight according to where you have navigated to.
    • Added a "breadcrumb" widget as an accompaniment to the new "navigation" widget. This widget creates a breadcrumbing line based on the specified navigation.
    • The page details screen has been completely redesigned, and presents a much richer experience with more options to edit information about a page. Newly added options include page tagging, the ability to edit a page's description and keywords meta tags, and the ability to see which pages are based on a parent template.
    • On the user edit screen, the page editing settings will not show unless applicable for that user.
    • You can now edit page editing authorizations for any web site, regardless of which site you've logged into LiveWhale on.
    • You can now reach the "edit page details" screen directly from the page editor using the new link under the "Details" tab.
    • The "Your Pages" screen has been replaced with a "Recently Edited" page, which tracks the pages you most frequently work on.
    • Notifications about outdated page content can now optionally be directed to a specific e-mail address rather than to all editors with editing access for that page.
    • Users authorized for page and directory creation are now also authorized for page and directory deletion. Deletion can now be performed in the Pages manager.
    • More page editing actions log their activity now.
    • You can now subscribe to a page on the public web site using the link under "Details" tab in the editor toolbar, or on the page details view under the Pages manager. When pages you are subscribed to are updated, you will receive an e-mail notification.
    • HTML comment tags are now supported inside editable regions.
    • The "Details" tab in the page editing toolbar now displays the number of content errors on the page.
    • The "Details" tab in the page editor now lists users who are authorized to edit the current page.
    • Adding the "optional" attribute to "editable" elements in your page template now has the effect of setting the element as hidden upon save if its content is left blank. Likewise, when content is returned to that field, it will become visible again.
    • Page editors can now be authorized to edit the full HTML source of a web page by opting into this feature via a checkbox on the user edit screen. Authorized users will get an additional "Edit source" link in the page editing toolbar allowing them to perform these edits from within LiveWhale.
    • LiveWhale page editing now supports drafts. After you've made your changes, you can "save and publish" or "save draft". All editors with access to the page share a draft which is not published to the live site until "save and publish" is chosen. Drafts can be edited and resaved any number of times until ready to be published. Note that source edits can only be made to the published copy of a page, and will overwrite a draft if saved. A warning is presented to the user in this case.
    • The page editor toolbar now always displays the group name, even if the group switcher is not available for the current user.
    • Page comments are now called page "notes", to avoid any confusion with comments on new stories, etc.
    • LiveWhale page editing now has accessibility checks integrated. Throughout the editing process, you will see a percentage score in the editor toolbar telling you how well you satisfy the Functional Accessibility Evaluator (produced by the University of Illinois at Urbana-Champaign). Clicking the page's score will show a dropdown with details as well as a link to the full report.
    • LiveWhale automatically addresses more accessibility issues on the fly, without additional work by content editors or template creators.
    • Improved password management: you can now password protect existing directories, rather than just at the time of directory creation, and add, edit, or delete passwords for individual users at a later date.
    • The file browser now alerts you when a page's content is outdated if the page has a content schedule set.
    • Improved interface for viewing and restoring previously deleted pages. Clicking deleted pages will now preview the page content as it existed before deletion.
    • When editing a page details, or creating a new page, the page title field is now required.


    • Contact info for news will now automatically convert e-mail addresses to "mailto" links, if not already coded as a link.


    • Registration for events now allows you to set a maximum number of attendees allowed before registration automatically closes.
    • You can now specify special instructions for event registrations, allowing you to request custom information from users signing up.


    • The galleries widget now supports the randomize arg.
    • The inline gallery widget now supports the following additional args: tag, exclude_tag, group, exclude_group, search, only_starred, randomize.
    • You can now randomize photo order in an inline gallery by setting the "randomize_photos" arg to true.


    • The downloads module has been renamed to files. Note that all existing widgets and permalinks will be translated and continue to work without any changes required!
    • File downloads now use mime type mappings in order to display inline when possible before forcing a file download prompt.
    • You can now view hidden file downloads if you are currently a logged-in LiveWhale user.
    • The files manager is now always authorized for all users.


    • The blurbs interface has been redesigned for improved navigation and distinction between types (previously "categories") of blurbs. Additionally, blurbs now should be given a title for easier reference in the blurbs manager.


    • From the images manager, you can now automatically add checked images to an existing gallery, or create a new gallery using the checked images.
    • When attaching images to other items, shared images are now easily distinguished from images you own using a shared label.
    • Images can now be tagged, and the image widgets allow the corresponding tag, exclude_tag, and tag_mode args.
    • The image widget now supports the "max" arg when used to rotate through multiple images.
    • IPTC support: If an image is uploaded and a title, credit, or caption is not supplied, and the uploaded file contains any of this data in IPTC metadata, LiveWhale will automatically extract and use that metadata for these fields where available.
    • EXIF support: Have an image taken in portrait mode? LiveWhale now recognizes the "orientation" EXIF field on uploaded images, and re-orients them on the fly.
    • Introduced the "images" widget. Unlike the "image" widget, which displays a single image, or single rotating image, the "images" widget can display a list of images (matched by group, keyword, etc.)
    • You can now upload images in bulk from the images manager.
    • Image caption length limits have been increased to 1,000 characters.


    • The tags widget now supports a group-based template. The group template is only used if using the group arg to list tags for a single group.
    • Quotes (including smart quotes) are now allowed within tag titles.


    • The feeds architecture has been consolidated, and extended to support content and source sniffing, contextual formatting, and new parsers.
    • The feeds widget now supports show_rss_link when multiple urls are aggregated. The resulting link points to a locally hosted aggregate RSS feed.
    • The feeds widget now supports the "until" arg which, like "since", restricts results to a date range.
    • Feeds that have previously been cached but which can no longer be reached or parsed will now fall back on their previously cached version as a last resort.


    • Form submissions now record submission date/time. The submission time is now automatically added to CSV exports as the first field.
    • You can now delete form submissions from the view submissions screen dropdown menu.
    • You can now add multiple e-mail addresses to the form action field by comma-separating them. Submissions will then be e-mailed to each address entered in this field.


    • Added support for the new "filter" arg in applicable widgets. This arg allows you to match results based on custom content rules, such as "firstname starts with 'A'". Supported rules include: equals, contains, matches, before, less_than, after, greater_than, not_equals, range, has. You can use a filter_mode arg to specify whether items should satisfy any of the filters, or all of them.
    • Widgets now support pagination. It is enabled by default (showing 30 items at a time). To disable, set the "paginate" arg to "false". To change the number of items per page, set "paginate" to an integer value.
    • You can now divide widget results across multiple columns by using the "columns" arg. For example, setting "columns" to 3 will divide the results across 3 even columns.
    • The widget manager has been completely redesigned for a greatly streamlined WYSIWYG process of building a widget. It also allows for the creation of widgets that can be saved, shared globally, and easily utilized on your web pages. Saved widgets remember their args, and do not require you to specify them each time. If you make a change to your saved widgets, all instances of it will be updated. Specifying args on a saved widget will override the preset values.
    • The widget manager is now always authorized for all users.
    • All widgets for data types that support tagging now allow you to use a "tags" var in their format args. The tag component will list tags associated with that item, each linked to a page listing other items of that type which share the same tag. This feature requires that your site have a tag details template available.
    • The tag_mode arg for widgets previously accepted "and" and "or" as its values. For sake of clarity, "all" and "any" are now also accepted, and will be the recommended usage.

    Other Improvements

    • Newly refined LiveWhale management interface.
    • When deleting items within the LiveWhale interface, a confirmation prompt will now warn users first.
    • LiveWhale management interfaces now use the "more" style pagination and are loaded via AJAX so you do not lose your place.
    • The list of groups to suggest content to has been redesigned to be more compact when facing the presence of a large number of groups.
    • LiveWhale now allows you to share more data types, not just news. Use the find submenu under any module, or simply obtain shared content from search results. These items can also be suggested to other groups, in the manner that news stories have been.
    • When copying items, attached resources (such as images, galleries, or related content) are now preserved, even though the attached resources are owned by another group. An items tags are not copied.
    • Links to management interfaces from e-mail notifications will now automatically switch you to the appropriate group if you have access to more than one.
    • The admin activity log now links to stories, events, etc. that are mentioned. These links will automatically switch you to the group that owns them.
    • If the file widget does not locate the resource specified via a file system check, it will now make a second attempt routed through the web server, in case the request can be handled virtually (for example, via mod_rewrite). It returns the same message as before if both attempts fail.
    • LiveWhale now uses cleaner, Wordpress-style urls for many requests, using a top level /live request. This functionality is modular and custom plugins can be created to add additional responses.
    • You can now manage comments for data types that support them from the editor interface.
    • If you use LiveWhale's built-in support for Google Analytics tracking, you will automatically be upgraded to the new asynchronous tracking code site-wide.
    • Added support for newly introduced HTML5 elements to LiveWhale's input filter.
    • When viewing an individual news story, event, etc. that you own on the public web site, while logged into LiveWhale, users will gain an extra "Edit this item" link in their editor toolbar taking them directly to edit mode for that item.
    • When editing news stories, etc. that have an image or gallery attached, the master thumbnail is now previewed along side the headline.
    • Web pages with content that can be syndicated, such as a list of featured news, are now automatically attached to your page as an RSS feed for easy subscription to regularly updated content.
    • Microsoft Internet Explorer is now supported in the LiveWhale management interfaces via Google Chrome Frame.


  • Widgets now have a new cache layer that outlives the page cache. Previously widgets were reevaluated each time a page expired from the page cache. Now, individual widgets cache their output and don't expire until either data affecting the widget's output is modified or scheduled data (golive, expiration, etc.) affects the widget's output. This greatly reduces database usage on the public web site.
  • LiveWhale is now much smarter about dynamically loading resources upon request, promoting greater server performance across the board.
  • Added log file rotation support.
  • LiveWhale diagnostics now checks for database tables with high overhead and automatically optimizes them when necessary on a weekly basis.
  • Improvements to memory management for content analysis.
  • In the page editing toolbar, Google Analytics statistics, page errors, etc. are no longer fetched from the server until the relevant tabs are clicked.
  • Improved LiveWhale login time.
  • The feeds library now caches unparsed/unreachable feeds to prevent repeat requests for unavailable resources.
  • LiveWhale now logs detailed benchmarking information for slow requests.
  • Optimizations to Google Analytics statistics collection.


  • Implemented a scheduler for LiveWhale. Routine actions are now performed based on entries in the livewhale_scheduler table. To check the table and execute any pending actions, call the url http://yourdomain/livewhale/scheduler.php. (It is recommended to do this hourly via cron, but that is not required.) Custom actions can be scheduled by adding entries to this table and storing the corresponding executable in your /livewhale/client/exec directory.
  • List items in an item's related content listing are now classed according to the related content type for additional CSS control.
  • Application modules now support AJAX and command registration, just like data modules.
  • The ENABLE_HTML5 flag is now available in the master LiveWhale config. This will begin identifying pages on your site as HTML5 documents. This feature is experimental, as browser support for HTML5 is a work in progress. We recommend using this feature to test support and compatibility, but usage on production sites is not yet recommended.
  • Backend modules can now make use of a "session" handler, which is activated upon initial login or upon a group switch.
  • Due to the updated feeds implementation, feed records now set a "type" field (rss, ical, images, twitter, etc.) Applications that tap into the feeds layer can now adopt this extra field to organize feeds by type.
  • The "support" link in the management interface defaults to If you wish to point this to your own help desk resources, you may do so by changing the value of SUPPORT_URL in the master LiveWhale config.
  • Added support for the following additional handlers on application modules: manager, manager_submit, editor, delete.
  • Backwards incompatibility: If you have a custom script which calls a module function manually (example: mGalleriesListPhotos), this will no longer work. The new method of calling them is $_LW->m_galleries->listPhotos() (use the prefix "w_" if it is a widget). Most LiveWhale clients will not have any instances of this unless significant custom coding has been done.

Bug Fixes

  • Certain HTML-enabled fields (such as news, event, gallery summaries) no longer have an enforced character limit, however they should still be treated as brief sections of content.
  • Using the new $_LW->PAGES_INACTIVITY_TIMEOUT variable (in seconds) in your public config, you may now adjust the 30 minute idle page editing timeout.
  • Fixed a bug where you could not access database records (for removal, restoration, etc.) for pages that no longer exist because their parent directory was removed from the server.
  • Fixed a cosmetic bug where saving certain kinds of pages could omit elements of the refreshed content from display.
  • Improvements to show_rss_link and show_ical_link args to make them more accurately reflect corresponding widget results.
  • Comments on news stories, etc., are now limited to 10,000 characters instead of 750 and now preserve line breaks.
  • The "Public" group is now omitted from the list of groups that news can be shared to.
  • Fixed a bug where event registrations would no longer appear if registration was disabled for the particular event.
  • Improved the sort order of registrants listed for an event with registration.
  • Due to confusion about whether page notes (previously "comments") relate to the page template or a story, event, etc., page notes are no longer allowed on dynamic templates for story, event, etc. details.
  • Page notes length restriction has changed from 140 characters to 500 characters.
  • Fixed a bug in which an image would fail to display in a widget list under rare circumstances.
  • Improved handling of group templates under multi-site configurations.
  • The file widget now repairs any invalid XHTML in the included file on the fly.
  • Fixed an issue that prevented editing of regions with commented-out widgets inside.
  • Fixed an issue that occurred when multiple widgets were placed inside one tag (widgets should not be placed in paragraphs).
  • The label for "Remove from Archive" for news and blurbs is now "Unarchive", so as to be more clearly distinguished from a deletion action.
  • The maximum allowed length of news "contact info" fields has been increased to 1,000 characters.
  • Per-directory password protection is now only enabled if LiveWhale detects that your server supports per-directory .htaccess authentication.
  • Fixed a limitation where tags and images were not restored when restoring a news item, etc. to a previous revision. Any tags or images that no longer exist will not be restored.
  • Fixed an issue where widget args with no value supplied would sometimes not be ignored.
  • Fixed a bug where shared images in attachment lists were always listed at the top, pushing down your own group's images.
  • Images smaller than the sidebar image dimensions on the image editor will no longer be upscaled to fit.
  • ... and dozens of other fixes.