Cached the package_object_attribute_list indefinitely as this is a serious performance degrader if you use the CR TCL functions. Furthermore, attributes should not be changed without a restart if I'm not mistaken, therefore util_memoizing indefinitely seems to be a valid way of doing this. Kudos to Timo.
Significant refactor. Moved the tcl code out of the .adp file and added dynamic expand collapse if the browser supports javascript. Works on non-js browsers too. The tree building still isn't as clean as I'd like, this probably requires a recursive function to do cleanly, but it works and is IMHO a vast improvement over the previous version.
Retrieve and include header stuff from global variable dotlrn_master__header_stuff. This is helpful for portlets that use javascript, e.g. dotlrn-main-portlet, and gives us a way to do it without having to ship the javascript on every page.
Fix: Import QTI text following the texttype attribute.If texttype is text/plain we convert to HTML and if texttype is text/htmlwe get it raw.This way all the text fields in the database are always HTML