* Added setup routine to Root.main_action() which is executed when there is an unconfigured root site or no privileged user (admin)
* Modified $Image#edit skin: check for Image.fileName property insteaed of "created" when deciding whether to show the name and dimension input fields
* Added missing res.data.title to $Members#register skin
* Removed app.log() calls when catching login or registration exceptions
* Added empty User.onLogout() method to get rid of some "errors" in the log file
* Removed obsolete code
* Reverted to GET method in Site.referrers_macro() because otherwise the display of filtered spam won't work (Antville.Query cannot handle POST requests)
* Modified LogEntry to fit into the new logging mechanics
* Added commitRequests(), commitReferrers() and purgeReferrers() to Root prototype
* Added referrers collection to Root
* Re-added Site.spamfilter property for now
* Refactored Site.referrers_macro() and Story.referrers_macro() (formerly backlinks_macro, but compatibility is granted)
* Removed obsolete method Stories.flushRequests()
* Reactivated referrers (thus, including backlinks) for privileged users for testing purposes
* Added global nightly() method which is called from a new cronjob at 5 am
* Added calls for referrer purge and commit methods in Root to scheduler
* Added Story.count() method to increment the request counter; overwrites Helma's built-in HopObject method but it's anyway redundant with HopObject.size()
* Added utility methods for database access in Sql.js
* Added status code to Root.error_action()
* Moved notfound.skin and error.skin as subskins into $Root.skin
* Removed obsolete <script>-Element from Site#page skin
* Added Membership.toString() method for human-readable output
* Assigned Membership.valueOf() method original toString() method
* Fixed output of site list in userland
* Added mountpoint for Api prototype in Root
* Added trimming for Story text and title input
* Completely render skin outline and drop down menu from application directory
* Moved remaining skins into protected (ie. non-customizable) skin files
* Removed obsolete skin files
* Removed obsolete code
* Fixed various b/w compatibility issues found in some sites
* Fixed pager action in Images
* Added confirmation dialog before resetting a layout
* Added collection containing updated sites in reverse chronological order
* Modified site listing (still work in progress)
* Save site name as title if no title is entered
* Removed some res.debug() calls
* Removed obsolete skin files (ie. content moved to the protected skin file)
* Moved contents of Messages.skins to their protected siblings
* Prefixed notification skins (used in e-mails) with "notify_"
* Fixed and simplified a whole bunch of issues in compatibility layer
* Refactored Poll and Polls prototypes (still not really happy)
* Fixed sorting of sites in Root.updates_xml_action()
* Allowed access to debug_action in Root
* Improved image data conversion in updater to only create thumbnail information if there actually is a thumbnail available
* Fixed some minor issues introduced with the latest changes
* Disabled file tags for now
* Renamed global renderPageNavigation() method to renderPager()
* Added support for rendering the list of updated sites in global list_macro()
* Fixed return point when cancelling a file edit action
* Fixed nasty bug in deletion routine
* Implemented sorting of values in Layout.values_macro()
* Disabled layout title, description, origin and sharing for now
* Renamed list_action() to sites_action() in Root prototype
* Enabled filter of root site in default collection
* Moved Root's list.skin as subskin in Root.skin
* Added experimental Root.search_xml_action()
* Renamed "unpublish" link to "close" in Story list
* Reduced display of backlinks to last 24 hours
* Removed obsolete skin files
* Added custom Layout.href() method to prevent the URL from being corrupted with the layout ID (which strangely happens from time to time)
* Uncommented $tags collection in Root.properties to prevent conflict with collection in Site having the same name
* Fixed output of tags list in Story.getFormValue() method
* Renamed tags collection to $tags in Root
* Fixed a few links in page.skin and Site.skin of Site
* Added CSS class for selected calendar day
* Fixed skin name for rendering tag items
* Fixed default skin name for rendering tag items
* Removed obsolete Tag.properties file
* Removed some lines of obsolete code
* Reduced layout functionality to 1 (one!) layout per site as a first step to eliminate future obstacles of backwards compatibility
* Fixed Images.main_action for layout images
* Aggregated functionality of layout export in one method (Layout.export_action)
* Extended functionality of layout import to every layout (ie. any comptabile layout can be imported to any site)
* Fixed some minor bugs
* Removed obsolete debug code
* Added content type to JavaScript / CSS output
* Moved client-side JavaScript code from Root/javascript.skin to static directory
* Removed hack in Site.main_action() to provide jQuery
* Added debugging CSS classes for skins
* Fixed b/w compatible logo_macro()
* Removed option to set a layout value in compatibility module
* Call global link_macro() when argument in HopObject.link_macro() contains a colon (probably not sufficient)
* Set application's charset to UTF8
* Added Layout.getFile() method returning the layout's directory as helma.File
* Simplified Layout.getSkinPath() method (still work in progress)
* Replaced occurrences of Site.language with Site.locale
* Modified some wording
* Added slight b/w compatibility fix in Story.macro_filter() method
* Added timex factor in Story.getDelta() method to prevent counting edits as site updates in-beteen 10 minutes
* Moved site-related aspect hooks to Site prototype of compatibility module
* Removed obsolete conversion code in compatibility module (has moved to updater app)
* Re-included spacer_macro() method in compat. module
* Temporarily overwrote HopObject.renderSkin() method to debug skin rendering process
* Replaced individual legacy macros of Layout prototype by appropriate code in onUnhandledMacro() method (compat.)
* Reflect legacy macros of Layout prototype in value() method of compat. module
* Added and improved compatibility methods
* Implemented support for renamed prototypes in updater app (still needs to be applied for database, too)