From 12968cd8295343edfc33859658e4eafa02cd5c10 Mon Sep 17 00:00:00 2001 From: Stefan Topfstedt Date: Wed, 29 Oct 2025 16:43:34 -0700 Subject: [PATCH] MDL-86416 navigation: Render the more menu only when it's not empty Co-authored-by: Jun Pataleta --- .../classes/navigation/output/more_menu.php | 4 ++ .../navigation/output/more_menu_test.php | 46 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 public/lib/tests/navigation/output/more_menu_test.php diff --git a/public/lib/classes/navigation/output/more_menu.php b/public/lib/classes/navigation/output/more_menu.php index 89b9c4c8ed9..3b38ff060f6 100644 --- a/public/lib/classes/navigation/output/more_menu.php +++ b/public/lib/classes/navigation/output/more_menu.php @@ -83,6 +83,10 @@ class more_menu implements renderable, templatable { $data['nodecollection'] = $this->content; } else { $data['nodearray'] = (array) $this->content; + // If there is no node array to render then return an empty array. + if (empty($data['nodearray'])) { + return []; + } } $data['moremenuid'] = uniqid(); diff --git a/public/lib/tests/navigation/output/more_menu_test.php b/public/lib/tests/navigation/output/more_menu_test.php new file mode 100644 index 00000000000..db817f5f697 --- /dev/null +++ b/public/lib/tests/navigation/output/more_menu_test.php @@ -0,0 +1,46 @@ +. + +namespace core\navigation\output; + +use basic_testcase; +use core\output\renderer_base; +use stdClass; + +/** + * More menu navigation renderable test. + * + * @package core + * @category navigation + * @copyright Stefan Topfstedt + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @covers \core\navigation\output\more_menu + */ +final class more_menu_test extends basic_testcase { + /** + * Checks that export_for_template() returns an empty array if the given content is empty. + * See MDL-86416. + * + * @return void + */ + public function test_export_for_template_returns_empty_array(): void { + $moremenu = new more_menu(new stdClass(), 'whatever', false, false); + $output = $this->createStub(renderer_base::class); + $data = $moremenu->export_for_template($output); + $this->assertIsArray($data); + $this->assertEmpty($data); + } +}