"Enable messaging system" (Site administration > Advanced features) is
supposed to control messaging between site users only, thus it should not
remove user messging preferences menu item. However, it may remove instant
messging preferences from providers list for the user.
Signed-off-by: Ruslan Kabalin <ruslan.kabalin@luns.net.uk>
The problem with strict comparison of numerical values fails badly if one is int and the other is string, moodle core apis do not guarantee return types much.
This commit:
a) moves modinfo code into new library modinfolib.php
b) uses classes instead of stdClass objects, allowing a huge amount of documentation (and IDE completion)
c) adds hooks so that plugins other than forum can display messages like forum's 'unread', and plugins other than label can display html (apart from/as well as their view.php link) on the course view page
d) removes current hacks for forum and label (mainly in print_section but also across the code), replacing with new 'content' and similar variables [this is the reason for the changes in blocks, etc]
e) reduces size of modinfo in database (only when rebuilt) by excluding empty fields
The change is intended to be backward compatible and does not affect the format of modinfo in database.
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.