diff --git a/blocks/classes/local/views/secondary.php b/blocks/classes/navigation/views/secondary.php similarity index 96% rename from blocks/classes/local/views/secondary.php rename to blocks/classes/navigation/views/secondary.php index c23e857a5f7..43acdadf8c8 100644 --- a/blocks/classes/local/views/secondary.php +++ b/blocks/classes/navigation/views/secondary.php @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . -namespace core_block\local\views; +namespace core_block\navigation\views; /** * Class secondary diff --git a/lib/blocklib.php b/lib/blocklib.php index 9c4f2badbfc..ce4f72b6405 100644 --- a/lib/blocklib.php +++ b/lib/blocklib.php @@ -1688,8 +1688,12 @@ class block_manager { * @return \core\navigation\views\secondary */ protected function get_secondarynav(block_base $block): \core\navigation\views\secondary { - $class = "core_block\\local\\views\\secondary"; - if (class_exists("block_{$block->name()}\\local\\views\\secondary")) { + $class = "core_block\\navigation\\views\\secondary"; + if (class_exists("block_{$block->name()}\\navigation\\views\\secondary")) { + $class = "block_{$block->name()}\\navigation\\views\\secondary"; + } else if (class_exists("block_{$block->name()}\\local\\views\\secondary")) { + // For backwards compatibility, support the old location for this class (it was in a + // 'local' namespace which shouldn't be used for core APIs). $class = "block_{$block->name()}\\local\\views\\secondary"; } $secondarynav = new $class($this->page); diff --git a/lib/db/renamedclasses.php b/lib/db/renamedclasses.php index 39d6de58801..515c8040100 100644 --- a/lib/db/renamedclasses.php +++ b/lib/db/renamedclasses.php @@ -83,4 +83,6 @@ $renamedclasses = [ 'core_question\\form\\tags' => 'qbank_tagquestion\\form\\tags_form', 'context_to_string_translator' => 'core_question\\local\\bank\\context_to_string_translator', 'question_edit_contexts' => 'core_question\\local\\bank\\question_edit_contexts', + // Since Moodle 4.0.5. + 'core_block\\local\\views\\secondary' => 'core_block\\navigation\\views\\secondary', ]; diff --git a/lib/pagelib.php b/lib/pagelib.php index 26cc6e5f86d..189f0c723d0 100644 --- a/lib/pagelib.php +++ b/lib/pagelib.php @@ -873,7 +873,11 @@ class moodle_page { if ($this->_secondarynav === null) { $class = 'core\navigation\views\secondary'; // Try and load a custom class first. - if (class_exists("mod_{$this->activityname}\\local\\views\\secondary")) { + if (class_exists("mod_{$this->activityname}\\navigation\\views\\secondary")) { + $class = "mod_{$this->activityname}\\navigation\\views\\secondary"; + } else if (class_exists("mod_{$this->activityname}\\local\\views\\secondary")) { + // For backwards compatibility, support the old location for this class (it was in a + // 'local' namespace which shouldn't be used for core APIs). $class = "mod_{$this->activityname}\\local\\views\\secondary"; } diff --git a/lib/upgrade.txt b/lib/upgrade.txt index eca92585625..185b8858582 100644 --- a/lib/upgrade.txt +++ b/lib/upgrade.txt @@ -1,6 +1,11 @@ This files describes API changes in core libraries and APIs, information provided here is intended especially for developers. +=== 4.0.5 === +* For plugins that override secondary navigation, the namespace for the custom secondary navigation class has + changed. It was (for example) mod_mymodule\local\views\secondary but is now + mod_mymodule\navigation\views\secondary. The old location will continue to work, but will be deprecated in 4.1. + === 4.0.2 === * The core renderer `edit_button` method now accepts an optional `$method` argument (get/post) for the button * The check for $plugin->incompatible was found to be incorrect. The $plugin->incompatible attribute is meant to define the minimum diff --git a/mod/assign/classes/local/views/secondary.php b/mod/assign/classes/navigation/views/secondary.php similarity index 97% rename from mod/assign/classes/local/views/secondary.php rename to mod/assign/classes/navigation/views/secondary.php index 4b490964c15..e7a83770c10 100644 --- a/mod/assign/classes/local/views/secondary.php +++ b/mod/assign/classes/navigation/views/secondary.php @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . -namespace mod_assign\local\views; +namespace mod_assign\navigation\views; use core\navigation\views\secondary as core_secondary; diff --git a/mod/assign/db/renamedclasses.php b/mod/assign/db/renamedclasses.php index dca2b289f9f..1e1dbee41ae 100644 --- a/mod/assign/db/renamedclasses.php +++ b/mod/assign/db/renamedclasses.php @@ -28,5 +28,7 @@ defined('MOODLE_INTERNAL') || die(); $renamedclasses = [ // Since Moodle 4.0. 'assign_header' => 'mod_assign\output\assign_header', - 'assign_submission_status' => 'mod_assign\output\assign_submission_status' + 'assign_submission_status' => 'mod_assign\output\assign_submission_status', + // Since Moodle 4.0.5. + 'mod_assign\local\views\secondary' => 'mod_assign\navigation\views\secondary', ]; diff --git a/mod/feedback/classes/local/views/secondary.php b/mod/feedback/classes/navigation/views/secondary.php similarity index 98% rename from mod/feedback/classes/local/views/secondary.php rename to mod/feedback/classes/navigation/views/secondary.php index 2aaa9d39eeb..e61d5aef411 100644 --- a/mod/feedback/classes/local/views/secondary.php +++ b/mod/feedback/classes/navigation/views/secondary.php @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . -namespace mod_feedback\local\views; +namespace mod_feedback\navigation\views; use core\navigation\views\secondary as core_secondary; use settings_navigation; diff --git a/mod/glossary/classes/local/views/secondary.php b/mod/glossary/classes/navigation/views/secondary.php similarity index 97% rename from mod/glossary/classes/local/views/secondary.php rename to mod/glossary/classes/navigation/views/secondary.php index 83e2edd46e8..0c1b7fec585 100644 --- a/mod/glossary/classes/local/views/secondary.php +++ b/mod/glossary/classes/navigation/views/secondary.php @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . -namespace mod_glossary\local\views; +namespace mod_glossary\navigation\views; use core\navigation\views\secondary as core_secondary; diff --git a/mod/label/classes/local/views/secondary.php b/mod/label/classes/navigation/views/secondary.php similarity index 98% rename from mod/label/classes/local/views/secondary.php rename to mod/label/classes/navigation/views/secondary.php index bba9e330302..64be842fd86 100644 --- a/mod/label/classes/local/views/secondary.php +++ b/mod/label/classes/navigation/views/secondary.php @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . -namespace mod_label\local\views; +namespace mod_label\navigation\views; use core\navigation\views\secondary as core_secondary; use settings_navigation; diff --git a/mod/quiz/classes/local/views/secondary.php b/mod/quiz/classes/navigation/views/secondary.php similarity index 98% rename from mod/quiz/classes/local/views/secondary.php rename to mod/quiz/classes/navigation/views/secondary.php index e9be56666a4..89a6d3f17a9 100644 --- a/mod/quiz/classes/local/views/secondary.php +++ b/mod/quiz/classes/navigation/views/secondary.php @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Moodle. If not, see . -namespace mod_quiz\local\views; +namespace mod_quiz\navigation\views; use core\navigation\views\secondary as core_secondary; diff --git a/mod/quiz/db/renamedclasses.php b/mod/quiz/db/renamedclasses.php new file mode 100644 index 00000000000..d351caa17ba --- /dev/null +++ b/mod/quiz/db/renamedclasses.php @@ -0,0 +1,30 @@ +. + +/** + * This file contains mappings for classes that have been renamed. + * + * @package mod_quiz + * @copyright 2022 The Open University + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +$renamedclasses = [ + // Since Moodle 4.0.5. + 'mod_quiz\local\views\secondary' => 'mod_quiz\navigation\views\secondary', +];