User session limit introduced, Flash rendering bugfixes and more

Today's update (42590a8) brings with it the following changes:

Security issues

  • User sharing has never been allowed in Portfolio. It could sometimes cause performance issues that would impact the page response time of the entire system. A security feature was implemented that blocks a user from being logged in more than five places at the same time.

Performance improvements

  • Several database queries that work with arrays was changed to avoid generating very long queries. Now they use bind variables instead, which should be faster and cause less logging overhead.

New features

  • Objects that use quiz() template functions can now be rendered with a submit button outside of the read request handler. You need to set the embed template function parameter is_quiz_context to 1 to use this feature. When it is activated, the quiz form will be submitted using XHR/AJAX instead of generating a page load.

Enhancements

  • The user-interface in the object/container selector was changed from using multiple confirmation buttons to a single OK button and multiple radio buttons used to choose the insert method.
  • When the object selector is used from TinyMCE the object you've highlighted in the editor is now selected in the object selector.
  • The list of fully translated user-interface languages can now be customized. The site configuration variable translated_ui_languages contains a comma-separated list of additional languages that should be supported on the site. This should solve the issue on CEFR sites that couldn't use German translations before logging in.
  • More API documentation for request handlers was added.

Bugfixes

  • In recent versions of Chrome, the iframe-based method of embedding Flash content no longer works. The way Flash (.swf) content is embedded on the page has been changed to be compatible. The use_resolve_path object custom_init parameter no longer has any purpose and can be removed. All Flash files now resolve relative file references based on the .swf object itself.
  • Fixed navigation issue with add comment button on minvei.no
  • Fixed issue with keyboard events not noticed by ping timer inside TinyMCE edit window.
  • Fixed issue with non-HTTPS URLs being returned from LeseWEB API server preventing usage of synthetic speech feature.
  • The JavaScript code for the quiz_timer() template function has been refactored into something that works with the new quiz form.
  • Fixed issue in object selector when width and height was customized. It previously wasn't included in the injected HTML. Now it is. It now supports all CSS units.
  • Fixed an issue where PIPE signal could interrupt WAVE to MP3 transcoding in an unexpected way.

Feature removals / deprecations

  • The Flash plugin checker code was completely removed, as it no longer instructs modern browsers to initiate a Flash runtime download dialog anymore.
  • The older Flash-based MP3 playback engine (musicplayer) used in the object selector was removed. The existing HTML5-based audio player (SoundManager2) is now used in the object selector. The musicplayer 3rd party component was removed.
  • The read request handler query parameter ignore_resolve_path was removed. The old method of embedding Flash content (.swf) was the only code that used it.
  • The metadata panel in the object/container selector wasn't really used for anything, so it was removed.
  • The title and uuid insert method options in the object/container selector were removed, as they weren't useful.
Spinner

Login