* develop:
Fixed compatibility issues with missing core stylesheet / JavaScript
Moved client-side upload code to Images#upload skin
Re-added click handler for cancel links (compatibility)
Fixed display of Gravatar for accounts
Added code for embedded audio and video player (HTML5)
(Whitespace)
Updated proxy URL
Updated translation files
Slightly rearranged code
Moved image dimension limits from image creation to site settings
Fixed batch upload for layout images
Refactored Story.getAbstract() method. Commented out abstract for custom content.
Refactored Story.getDelta() method. Commented out calculation for custom content.
Moved calculation of delta behind sanitizing comment title and completely removed HTML sanitization
Moved calculation of delta behind sanitizing comment title and replaced call for setMetadata() with setCustomContent()
Fixed appearance of button for new site creation
Added box argument to image macro output
Added metadata for Open Graph et al. to Stories.create_action()
Implemented first version of multiple image upload by drag&drop
Refactored Comment.update() method - text is now required, title remains optional - sanitize text first to catch potential empty string afterwards
Conflicts:
i18n/antville.pot
i18n/de.po
i18n/en.po
i18n/messages.de.js
i18n/messages.en.js
* Fixed rendering of legacy navigation skins with overridden HopObject.renderSkinAsString() method
* Fixed typo when saving the original HopObject.renderSkinAsString() method
* Fixed value of layout sandbox cookie in Layout.sandbox() method
* Removed (yet) unused Layout.sandbox_action()
* Removed (yet) unused session.data.layout in HopObject.onRequest()
* Moved code setting res.contentType to top of Tag.rss_xml_action()
* Disburdened constructor methods of most of the prototypes by moving most of the code to the new static add() method.
* Added temporary debugging method HopObject.confirmConstructor() to log a warning whenever a constructor is directly called – in which case it should be checked if the static add() method is to be preferred.
* Removed obsolete code in Poll.edit_action() method.
* Removed “extras” code because I just forgot I already implemented a Feature prototype
* Added global <% feature %> macro calling the main() method of the desired feature
* Added Feature.getPermission() method which can be invoked from HopObject.getPermission()
* Refactored connect feature to work with modified Feature prototype
* Added global app.data.extras collection and registerExtra() method
* Defined res.handlers.extra in HopObject.onRequest() handler to provide extra macros
* Implemented reCAPTCHA for anonymously contacting an Antville member as proof of concept
* Removed limitation to edit running polls
* Fixed some issues in MySQL database scheme
* Moved routine for replacing version tags from init to export target in build script
* 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()
* Modified default sorting of user list in $Admin#users skin. Fixes issue 70.
* Added property argument to HopObject.self_macro() to allow access to subnodes of the HopObject
* Replace macros directly accessing HopObject subnodes with <% this.self property %> ones
* Reverted changes made in r4026
* Replaced custom SQL query in Comment.remove() with code using new Membership.comments collection
* Removed obsolete Sql.COMMENTS statement
* Added getConfirmText() method to Comment, File, Image, Layout, Membership, Poll, Skin and Story prototypes – which is used in HopObject.delete_action() for more convenient feedback about what is going to be deleted (fixes issue 37 for now)
* Fully enabled translation in global breadcrumb_macro()
* Removed obsolete Layout.getTitle() method
* Disabled translation in HopObject.toString() methods
* Fixed and added some i18n messages to ease translation