based markup to based one and moving all formatting rules to CSS stylesheets in order to make html more W3C standards compliant. It's planned to move to XHTML in the nearest future.
==== JavaScript refactoring ====
JavaScript layer was substantially refactored and now follows [[http://openjsan.org/ |JSAN]] library namespace conventions. All Limb related code is under Limb namespace which allows to avoid name clashes when used with external JavaScript products.
==== Initial AJAX usage ====
Node select GUI is AJAX based now. We're planning to improve other parts of GUI using AJAX which in theory should decrease the server load.
===== Better I18N support(UTF8) =====
Some new tools were added for multibyte(UTF8) strings processing. All non ASCII content was converted to UTF8.
The following multibyte aware global functions were added(analogous to PHP built ones):
_substr($str, $start, $length=null)
_explode($sep, $str)
_str_replace($s, $r, $str)
_ltrim($str, $charlist='')
_rtrim($str, $charlist='')
_trim($str, $charlist='')
_strtolower($string)
_strtoupper($string)
_strpos($haystack, $needle, $offset=null)
These functions delegate all strings processing to the currently selected strings driver. There're several drivers, the most appropriate one is used according to PHP installed extensions, e.g. if mbstring extension is available then the most optimized driver will be used, if not - a slower pure PHP emulation will be used then.
By default, however, singlebyte driver is loaded. UTF8 is ASCII compatible(i.e. English only content) and it makes sense to use the multibyte driver only if really neccessary. You can enable the multibyte driver by declaring the **ENABLE_UTF8** constant in setup.php(setup.override.php):
...
define('ENABLE_UTF8', true);
...
You should clearly understand when it makes sense to use multibyte aware functions instead of PHP built ones. There's a very good [[http://www.phpwact.org/php/i18n/charsets | tutorial on UTF8]] peculiarites by Harry Fuecks.
===== General code cleanup, refactoring and speed improvements =====
We're gradually increasing the quality of code for 2.x series.
This version of Limb inroduces some transparent for the client levels of caching which speed up notably the overall execution time.
==== Tree cache ====
The new caching_tree decorator wraps materialized_path_tree and caches all requests to the file system cache. This cache persists between requests and is flushed completely if tree gets changed somehow. It allow to keep the cached tree in sync with the actual tree stored in database.
:!: This functionality has beta quality and is switched off be default(on in demo project though), it can be enabled by placing the following code in project setup.php(setup.override.php):
define('ENABLE_TREE_CACHE', true);
==== DB cache ====
The new db_caching_driver decorator was added which caches all identical DB request results during the request session.
:!: This functionality has beta quality and is switched off be default(on in demo project though), it can be enabled by placing the following code in project setup.php(setup.override.php):
define('ENABLE_DB_CACHE', true);