* Call Admin.purgeSites() from scheduler() to reduce delay between deletion date and running nightly()
* Do not remove already existing deletion job, can be useful for debugging
* Do not increase Site.deleted property when queueing the deletion job
* Remove deletion job if exists and the site status has been changed again to prevent undesired deletion of sites
* Removed <select> elements for long and short date formats in $Site.edit skin
* Removed compatibility support for long and short date formats
* Removed global getDateFormats() method and commented code in global formatDate() method
* Slightly shortened <select> elements in site preferences again
* Rewrite client-side code for reformatting the time zone <select> element according to changes in global getTimeZones() method
* Replaced “return false” with call for event.preventDefault() in client-side event-driven code
* Rewrote global getDateFormats() and formatDate() methods – caution! getDateFormats() will be removed in the next commit because the dropdown menus in site preferences are obsolete; just committing the code for the record
* Removed call for Site.processHref() method in Site.getStaticUrl() - still to be evaluated
* Added call for Feature.getPermission() in Site.getPermission()
* Metadata is now written to its own table instead of a column only
* Values are saved as JSON-like structure only for certain types (like Array or Function)
* Adding custom metadata is more generic using the new HopObject methods setMetadata(), getMetadata() and deleteMetadata()
* Searching keys and values via common SQL query is much more straightforward (no JSON-like structure involved when basic types like String and Number)
* Removed numbered, footnote-like links in most of the noficitaion messages
* Added prefix to subjects of notification mails (like “[Antville] ...”) for convenience
* Added markgettext() calls for most of the prototype names and their plural forms – this time in each corresponding prototype file, though
* Added options argument to global sendMail() method, currently only to switch inclusion of generic footer in mail body
* Fix bug in Membership.contact_action() method when an unknown (i.e. unregistered or unsubscribed) user tries to send a message via contact form
* Unified naming of notify skins (e.g. #notify_delete instead of #notify_deletion)
* Updated and rebuilt i18n and message files
* Slightly modified the message informing about successful deletion of an object
* Fixed type when calling Membership.remove() in Site.unsubscribe_action() method
* Fixed bug causing exception when calling Membership.remove() method with no arguments
* FIxed still incorrect permissions for editing and deleting a membership
* Added markgettext_macro()
* Readjusted Admin.dropdown_macro() and the global defineConstants() methods to work with the modified markgettext() calls
* Updated Members.properties and added SQL patch for lowercasing all membership status due to the modified margettext() calls
* Added Membership.role_macro() as convenience method
* Removed syntactic sugar from HopObject.link_macro() and moved it to the compatibility layer to prevent current layouts from breaking
* Removed obsolete permission for non-existing Image.replace_action()
* Refactored Admin.queue(), Admin.dequeue() and Admin.purgeSites() methods to use new Admin.Job prototype
* Refactored Exporter and Importer objects to use new Admin.Job prototype (the way sites are im/exported still needs to be rewritten)
* Refactored resetting and importing a layout to always backup the current layout in a temporary ZIP file
* Moved import_action() method along with corresponding skins from Root to Site
* Moved #create skin from $Root to $Site
* Added the root site itself to the Root.sites collection
* Permitted deletion of the root site by adding appropriate checks and treatment in Site.remove()
* Moved call for Admin.dequeue() from scheduler() to nightly() method
* Removed obsolete Admin.importExport() method
* Removed obsolete app.data.exports and app.data.imports properties