In PHP 8.2 and later, setting a value to an undeclared class property is
deprecated and emits a deprecation notice.
So we need to add missing class properties that still need to be declared.
Some blocks (e.g. Calendar) load additional JS modules when returning
content. We need to make sure they aren't asked to generate content
unless the user can actually view the block, or the expected content
required by the JS will not exist in the DOM and can cause exceptions.
New method added block_base::get_content_for_external().
It will return all the block contents rendered for external functions.
If your block is returning formatted content or provide files for download,
you should override this method to use the external_format_text,
external_format_string functions for formatting or
external_util::get_area_files for files.
See block_html as example.
block_base->config_save is not used anywhere any more. If contributed plugins
rely on it, it makes no difference since it is not being called, if they do
something like $this->config_save or parent::config_save somewhere in their
block class instance, this will still work as deprecated function will handle
it.
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.