* Wrapped zipping of layout images in try/catch block to prevent exceptions when there is no thumbnail image
* Introduced a more elegant way to include necessary script files (jQuery et al.) in Site.main_js_action()
* Slightly modified jQuery "onload" calls
* 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
* Fixed bug in Layout.image_macro() preventing the URL from being written
* Wrapped output of Site.getStaticUrl in encodeURI() call
* Removed test macro in Site.skin (AAAAAAAAAAAAAAA!)
* Disabled ip address property in LogEntry (will be removed in the long run)
* Removed custom property from Skin (still needs some care)
* Removed commented code
* Commented out redundant rendering of layout values
* Added static Layout.VALUES array
* Commented out READONLY mode of comments for now
* Fixed custom content handling in Story (however, content_macro still needs to be fixed!)
* Fixed rendering of date header by correcting references to Story#date skin
* Added aspects for b/w compatible story editing
* Cleaned up aspects
* Fixed deprecated Story macros for b/w compatibility
* Added missing entries to translation table of updated app
* 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 option to retrieve the redirect URL from the static remove() method of a prototype
* Added Layout.getMacroHandler() method to enable linking the Skins prototype from here
* Fixed the (in)correct spelling of req.data.referer in the LogEntry() constructor method
* Fixed referrer display by correcting the skin name for the referrer item and the variable name for the referrer count
* Fixed link to galleries (ie. image tags)
* Fixed output of RSS feed when there's no site tagline
* Disabled moderated comments for now
* Modified permission check for displaying tags to always refer to the site's permissions
* Removed obsolete links in Images.skin
* Added comment to Skin.js reminding of the inconsistency between renderSkin() and app.skinfilesInPath() methods
* Disabled custom href() method in Skins prototype (still marked with FIXME)
* Zapped a gremlin in Comments.js!
* 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
* Moved data created by the global value_macro() into res.meta.values namespace
* Ignore case of res.meta.values keys
* Added reset_action() to Layout
* Write/retrieve basic layout information into/from Layout#values subskin
* Renamed key names of basic layout information for convenience (eg. "background color" instead of "bgcolor")
* Fixed Layout.remove() method according to generic approach
* Fixed digest generation for main.css and main.js output
* Added Skin.render() method (ie. to the application prototype, NOT Helma's internal Skin class)
* Removed obsolete code
* Removed obsolete files
* 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
* 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)
* Implemented support for web hooks
* Added default_hook_action() method to Root
* Renamed webHookEnabled to webHookMode in Root prototype
* Moved currently obsolete module code, macros and skins to compatibility module
* Disabled notification of updates (probably forever)
* Fixed _children.filter in Archive
* Added missing permission checks
* Modified global defineConstants() method to return the getter function instead of automatically defining it with given argument
* Added HopObject.macro_macro() method to display userland macro code
* Removed colorpicker (will be replaced by third-party library)
* Removed obsolete global constants and functions
* Overhauled and tested global userland macros like story_macro(), image_macro() etc.
* Implemented global list_macro() to replace any special listFoobar_macro() methods
* Moved global autoLogin() method into User prototype
* Overhauled global randomize_macro()
* Renamed global evalURL() method to validateUrl() as well as evalEmail() to validateEmail()
* Re-added accidentally removed subskins to Members.skin
* Fixed some skin names which were changed recently
* Remove delete_action() from Membership
* Fixed foreign key of images collection in Membership
* Removed global username_macro() and replaced it with appropriate membership macros
* Moved contents of systemscripts.skin into javascript.skin in Root prototype
* Removed main_css_action(), main_js_action() and sitecounter_macro() methods from Root
* Added accessname to sites collection in Root
* Upgraded jQuery to version 1.2.1
* Replaced call for global history_macro() with corresponding list_macro() call
* Renamed "public" collection of Stories prototype to "featured"
* Moved a lot of styles from Root's style.skin to the one in Site
* Added comments collection to Site
* Moved embed.skin as subskin #embed into Site.skin
* Fixed some minor issues in Story.js (removed check for creator before setting the story's mode)
* Defined cookie names as constants of User which can be overriden via app.properties userCookie and hashCookie
* Moved a lot of code into compatibility module
* Changed order of filters in collection handlers (member items go first, all items last)
* Fixed global file_macro and image_macro methods
* Reactivated Images.Default
* Added Layout.value_macro to allow per request definitions of variables for the CSS stylesheet (still experimental)
* Finally removed PropertyMgr (replaced by Metadata)
* Renamed a bunch of collections, mountpoints and variables
* Reduced commentsMode options to "enabled" and "disabled" in Site prototype
* Renamed "shared" mode to "restricted" in Site prototype
* Moved a lot of stuff into the compatibility module
* Added first story formatting filters
* Fixed global breadcrumbs_macro
* Improved distinction check for layout images
* Re-added accidentally removed replace action for layout images
* Moved mostread_action from Site to Stories.top_action
* Replaced links to topics with those to tags
* Re-enabled referrers
* Switched default permission poplicy from allow to deny in some prototypes
* Added redirect from main_action of a skin to its edit_action (that's where all editing is taking place now)
* Merged default and custom skin editor (still needs tweakin' of potential moving / renaming issues)
* Renamed getNavigationName() methods to getTitle()
* Renamed ImageMgr to Images
* Fiddled with more elegant context switch between Layout and Site images (still a little bit messy)
* Added getUrl and getDirectory methods to File and Image
* Moved global getPoolObj to HopObject.getFromPath
* Moved global renderImage to Image.render
* Moved global DefaultImages to Images.Default
* Moved global thumbnail constants to Image
* Moved global evalImageType to Image.validate
* Streamlined image_macro (good-bye pop-ups!)
* Added HopObject.upload_macro to support file upload form element
* Added conversion and compatibility scripts for images and layouts
* Implemented first basic version of skin management using subskins
* Added remove() method to HopObject and most object prototypes which are automatically called after confirmation in HopObject.delete_action()
* Enhanced support for various form elements via HopObject macros
* Added HopObject.removeChildren() method
* Removed color and font settings in layouts (maybe just temporarily)
* Implemented generic framework for layouts and skins
* Renamed LayoutMgr to Layouts and SkinMgr to Skins
* Renamed "properties" property to "metadata" (finally)
* Added conversion and compatibility code for the changes
* Added handleMetadata method to define getters and setters for metadata properties
* Reduced and renamed value() method to map()
* Renamed most of the sys_* properties
* Fixed issue caused by setting a Metadata property to a Java value, e.g. java.net.URL instance becomes string without quotes. (Could this be a Rhino bug?)
* Finalized conversion of AV_USER table to simple naming scheme ("user")
* Added global getTitle() method which returns either site.title or root.sys_title
* Implemented universal HopObject.value() method
* Rededicated User.update() method since its previous functionality is now taken over by User.value()
* Restructured login and register functionalities in User and MemberMgr
* Replaced first occurrences of Exception with Error
* Introduced i18n via gettext in User and MemberMgr
* Removed getMessage() and Message in User and MemberMgr
* Added first possible implementation of global getPermission() method
* Modified code of global evalEmail() and evalURL() methods to work with Helma modules
* Simplified global sendMail() method by not throwing any MailException anymore and returning the status code only
* sendMail() now is using helma.Mail (so we can debug message output)
* Improved tag framework
* Added support for image tags
* Moved most code of StoryMgr.evalNewStory to Story.evalStory to decrease redundancy
* Added compatibility module (including drafts for database conversions)
* Moved code for topics to compatibility module
* Removed obsolete code