Product news and other information from the developers of Portfolio.
Showing 6 - 10 of 83
Faster user search, improved history feature and more bugfixes
Today's update (4920618) brings with it the following changes:
- The user search now uses an indexed search method, making it much faster. This has a side-effect that pure substring search is no longer possible. You can now only search on full tokens (like the full name or email).
- The read request handler and embed template function are now history-aware. This feature enables the history request handler to show the historic content of objects that use data request handler to refer to the content, like images, videos and other binary content. The thumbnail, watermark and wav2mp3 request handlers have also been made history-aware.
- The following object types don't support relative file references (because they use resolve_path) when viewed using history:
- Flash apps
- SVG images
- Perl scripts
- CSS stylesheets
- Text files
- XML files
- Java apps don't support history viewing at all (because they use resolve_path which doesn't support history).
- Zip files can't be unpacked from history, they must be restored first. You can download them, though.
- The embed template function now supports
- It is now possible to restore a deleted object or container into the correct parent container. The parent container must exist, or you'll get a database error during restore. Be aware that the parent container must be restored before the child object or container, or you'll get a database error about missing parent. This is most likely to occur when trying to restore a recursive delete.
- Some flash info messages are now considered redundant and are not shown during normal usage.
- Small change in behavior. If embed template function is called with an odd number of options the options variable is now empty instead of cut at the last missing key/value pair. This should make the error in API usage more obvious. This could potentially trigger some regressions in content that was previously working.
- The user search feature wasn't able to search for
firstname lastname after a recent update. This has now been fixed.
- A regression was found in the matchbox quiz type, which could return invalid data from the database when used together with the history-aware feature.
- The links to Bokmålsordboka and Nynorskordboka have been updated.
- Whitespace is now trimmed when using the history request handler.
- Backend importing of content was not possible because the cost and copyright boolean object attributes where not sent properly to the database. This has now been fixed.
Blob storage, history feature and performance improvements
Today's update (0b662f0) brings with it the following changes:
- Object content is now stored in an external service called BlobMachine, making it possible to scale to multiple web servers.
- All objects are stored named by the digest checksum of the content, improving caching because identical files only need to be read once. This feature also improves the transactional behavior during object modification.
- Whenever objects are modified the old version of content and metadata is stored, allowing quick restoration of content back to a previous version. Use the history button in the toolbar to access this feature. The history is kept for 6 weeks.
- It's also possible to restore deleted containers and objects, but because of a bug they are restored to the root instead of their proper location. When restoring content on an existing object or container the parent is maintained. This issue will be fixed in a future update.
- Cache files are now properly named after the digest checksum, which allows them to be created only once, becaues they never change without the name also changing.
- The cache directory is regularly cleaned of old files, recovering disk space more efficiently.
- The timeout in thumbnail(r) was increased to account for the increased time it takes to fetch videos from the blob service.
- The thumbnail request handler was unable to generate thumbnails for SVG images. Changed to return the SVG image directly when asked for a thumbnail of it. It should be able to scale to the needed size because it's a vector image.
IP address session protection changed and multiple bugfixes
Today's update (ce51eda) brings with it the following changes:
- Session hijacking was previously mitigated by ensuring the IP address always matched. When you're using HTTPS this is no longer needed, so it's no longer verified. Roaming between different networks (e.g. with a laptop or tablet) should now work without being logged out.
- The CEFR final report could in some situations include voice recordings for competence levels other than the one the student self-evaluated as. This has been fixed.
- Using the back browser button and answering a CEFR document again would skip over a document in the workflow. This should now be fixed.
- The page activity timer is no longer restarted if you use the back/forward browser buttons to navigate to a page.
- The wav2mp3 request handler had a race condition when dealing with ADPCM WAV files from the Java-based voice recorder. This should now be fixed.
- Some broken HTML markup in my configuration and other reports was fixed.
SASS stylesheet rendering, page timeout, timers and more improvements
Today's update (7601a42) brings with it the following changes:
- A new template function called
explain() was added, used to dump the contents of variables used in templates with proper color and indentation. The use of
Dumper.dump() caused sensitive data to be made available. The old
Dumper.dump() method will still work, but restricted attribute values will be trimmed, just like
- All HTTP request handlers and backend cron jobs now has a timeout value. The default timeout for a request handlers is now 2 minutes. The developer resource that lists request handlers now also includes information about the timeout for each handler. This should ensure that runaway processes no longer cause worker process resource starvation.
- When PORTFOLIO.create_search_form() is executed, it will no longer perform the XmlHttpRequest call if the DOM element it should be rendered into is not present.
- It's now possible to compile SASS stylesheets into CSS on the fly. A new menu item for creating a SASS stylesheet has been added. Text files with the extension .sass or .scss will be detected as SASS/SCSS stylesheets during upload. The libsass C++ engine is used for the compilation.
@import statements are supported, and resolve relative to the object that is being rendered. The prefix
_ and the extension (.sass/.scss) is automatically appended if not specified to support the same behavior as the Ruby implementation.
resolve_path() template function is finally available. It works just like the resolve_path request handler, and must start with a container identifier. They both just verify permission on the final object/container in the path, just like before.
current_site template function can now be used. Some of the other site_XXX template variables are now redundant. Using
current_site.container_data.resolve_path("path/to/file") is a good way of getting access to content below the site root without resorting to hard-coded container identifiers.
- It's now possible to start and stop timers during template rendering. This allows more detailed timing information about page rendering to be displayed as an HTML comment at the end of the page if the
enable_timing_report configuration variable is set. The report will also include how much time is spent in each template function, each template and the total time spent on generating the HTML.
- Added new parameter render_mode to the
embed() template function. You can set the value to either
- When a stylesheet is viewed directly instead of embedded, the actual CSS text is now rendered, so it is easier to know what you're working with.
- Stylesheet objects are no longer forced to text/css mimetype regardless of which mimetype was set. It is now only used as a default.
- The e-portal single-sign-on and push message handling now use the standard timeout feature, giving more consistency.
- Improved code layout in
read request handler, enabling proper filename when downloading content in more situations.
- The generic error pages which are shown when the application doesn't respond properly have been improved. The language should be more user-friendly.
- Fix an internal server error when trying to upload a zero-length file. Now it shows the correct error message.
- An unhandled exception when generating thumbnails is now handled, returning a proper error message instead.
- Browsers have changed behavior with how they handle strong ETag cache validation tokens. Browsers now return a weak validator token even though we send a strong one. Ignore the weak ETag classifier so HTTP 304 NOT MODIFIED responses are generated when they should.
- The word occured was consistently mistyped. Now it has been changed to the correct occurred in all strings.
Feature removals / deprecations
page_timer template function no longer returns the timer value for the entire page. It now returns a timer instance you can use to start, stop and report timing information. This changes the API, so documentation has been updated to match the new behavior.
- The request.filename local template variable was not used anywhere and was removed.
Fixed regressions in MP3 audio player
Today's hotpatch (5806a47) fixes the following regressions:
- The MP3 audio player was eating DOM elements, causing lots of different kinds of errors. This should now be fixed.
Showing 6-10 of 83