When making a request which fails, we need to ensure that the AJAX query
was not aborted before displaying the error.
This ensures that if the navigation tree is being requested at the same
time as a page load is being processed, the abortion of the AJAX request is
not displayed before the page reloads.
Previously, any inappropriate whitespace found whilst building the admin
tree caused a JSON error and for the site administration tree retrieval to
fail.
This change ensures that access to the site administration tree is unbroken
for non-developers, whilst still alerting developers that there is an
issue.
The patch converts the dock into a YUI shifter module and at
the same time improves several aspects of its operation.
The features of this patch include:
* Dock Module conversion.
* A loader that ensures we don't include the dock JS or its
requirements unless actually required.
* We no longer include the dock JS for themes that don't
enable it.
* Blocks no longer add registration events to the page
instead a dockable attribute is added to the html and the
loader looks for that.
* The dock module is properly documented and running YUIDoc
gives good quality documentation.
* We no longer need the dock module registration or
subcomponent.
* All events that can be delegated are now delegated.
* Removed unused variables and code left over after fixes.
* Support for docking blocks renderered using the new blocks
render method. Better support for custom block regions.
The biggest change is that the navigation block has been converted to a proper YUI module.
The following are the other changes made at the same time:
* A loading icon is displayed when a branch is being loaded by AJAX.
* Fixed a bug where you could trigger multiple AJAX requests by rapidly clicking an unloaded branch.
* Fixed a bug where empty branches weren't being marked as such after a successful AJAX load.
* When docked the width of the blocks dock panel is now inspected an increased if required to try avoid horizontal scrolling.
* Removed the no longer needed inclusion of the YUI2 dom library from the navigation and settings block.
* Expandable nodes are now passed as JS data allowing the navigation JS to be initialised through block_navigation::get_required_javascript.
* AJAX is now focused around the branch in question rather than the tree in general.
* Expansion of branches is now delegated to the tree rather than being an individual event on all branches.
* Tidied up the code in general removing unneeded-unused parameters.