* Refactored and unified remove() methods and calls for greater flexibility as well as reliability
* Added option to remove all comments by a user to Comment.remove() method and $Comment#delete skin
* Added global #listItemFlag skin as well as listItemFlag_macro() for rendering vertically written text of items in a list view (e.g. closed)
* Fixed bug in gettext_macro() and ngettext_macro() causing incorrect whitespace
* Refactored timezone and locale handling
* Modified automatic translation of untitled links in HopObject.link_macro()
* Added honeypot to login and registration forms
* Fixed client-side JavaScript to be evaluated when login or registration form is submitted, not only when the submit button is clicked
* Removed redundant filter expression from DB mapping of Membership.images collection
* Added Membership.content collection
* Changed terminology from open to running polls, thus renaming Polls.open_action() method and Polls.open collection
* Moved a lot of CSS used in root or administration sections from Site#stylesheet to $Root#stylesheet skin
* Added Root.updateDomains() method (most likely already obsolete)
* Removed Root.processHref() method (only necessary for very advanced setup) and obsolete comments
* Fixed Root.xgettext() method to correctly read UTF-8 encoded data
* Fixed Site.deleted_macro() to return the date object for late formatting
* Refactored Site.processHref() for more convenient custom domain name mapping
* Renamed Skins.advanced_action() method to Skins.all_action()
* Removed redundant filter from Stories.comments collection
* Removed unnecessary filter from Story.comments collection
* Fixed bug in customized MessageParser.js preventing detection of positional parameters when the skin already contains named parameters
* Fixed bug in customized MessageParser.js causing incorrect whitespace when a gettext macro contains linebreaks
* Added kind of callback skin to HopObject#delete skin to include prototype-specific options in confirmation dialog
* Added content collection to Membership.properties
* Added check for req.postParams.mode in Membership.remove() – if it is set to "exhaustive" all contributions of the member to the site are going to be erased
* Added first draft of asynchronous site deletion using persisting, file-based job queue
* Moved programmatically created nightly cronjob to from global onStart() method to app.properties file
* Added helma.File.copyDirectory() method
* Revamping global breadcrumbs_macro() – WORK IN PROGRESS!
* Minor changes in global link_filter() and poll_macro() methods
* Added Root.SITEREMOVALGRACEPERIOD defining the grace period between request and actual time of site deletion
* Added Root.queue() and Root.dequeue() methods for handling job queue
* Slightly modified notfound_action() and error_action() of Root
* Added second argument to HopObject.remove() method; if set to true, any object will be removed without any checks for permissions or the like
* Enhanced notfound and error screens
* Removed obsolete Image.site property
* Added missing LogEntry.remove() method
* Added Site.deleted property
* Fixed missing calls for remove() methods of some collections in Site.remove()
* Added Root#stylesheet skin for future CSS classes necessary for GUI elements
* Added missing Site.entries collection
* Removed troublesome if condition in Skin.remove()
* Generally deny access to Skin.main_action
* Added missing Skin.getFormValue() method
* Added check in Skin.update() if the Site#page skin contains the <% response.body %> macro
* Added Skins.onRequest() method checking if we are in-between two Skins objects
* Moved the private copy() method in Root.create_action() to helma.File.copyDirectory() in Global.js (will be committed later)
* Replaced the copy routine with call for Layout.reset()