MDL-72032 core_behat: secondary navigation behat fixes

- Part of: MDL-69588
This commit is contained in:
Bas Brands 2021-06-28 12:18:16 +02:00 committed by Mathew May
parent 3110abec03
commit da33265d73
6 changed files with 59 additions and 6 deletions

View File

@ -3816,18 +3816,21 @@ EOD;
* @return string
*/
public function more_menu($content, $navbarstyle) {
$tabs = ($navbarstyle == 'nav-tabs');
if (is_object($content)) {
if (!isset($content->children) || count($content->children) == 0) {
return false;
}
return $this->render_from_template('core/moremenu', (object) [
'nodecollection' => $content,
'navbarstyle' => $navbarstyle
'navbarstyle' => $navbarstyle,
'tabs' => $tabs
]);
} else {
return $this->render_from_template('core/moremenu', (object) [
'nodearray' => $content,
'navbarstyle' => $navbarstyle
'navbarstyle' => $navbarstyle,
'tabs' => $tabs
]);
}
}

View File

@ -45,7 +45,7 @@
}
}}
<nav class="moremenu">
<ul id="moremenu-{{ uniqid }}" class="nav more-nav {{navbarstyle}}">
<ul id="moremenu-{{ uniqid }}" {{#tabs}}role="tablist"{{/tabs}} class="nav more-nav {{navbarstyle}}">
{{#nodecollection}}
{{#children}}
{{> core/moremenu_children}}

View File

@ -36,8 +36,29 @@
}
}
}}
{{{secondarynavigation}}}
{{#secondarynavigation}}
{{{secondarynavigation}}}
{{/secondarynavigation}}
{{^secondarynavigation}}
<ul class="nav nav-tabs" role="tablist">
<!-- First the top most node and immediate children -->
<li class="nav-item">
<a class="nav-link active" href="#link{{node.key}}" data-toggle="tab" role="tab" aria-selected="true">{{node.text}}</a>
</li>
<!-- Now the first level children with sub nodes -->
{{#node.children}}
{{#children.count}}
{{#display}}
{{^is_short_branch}}
<li class="nav-item">
<a class="nav-link" href="#link{{key}}" data-toggle="tab" role="tab" aria-selected="false" tabindex="-1">{{text}}</a>
</li>
{{/is_short_branch}}
{{/display}}
{{/children.count}}
{{/node.children}}
</ul>
{{/secondarynavigation}}
<div class="tab-content mt-3">
<div class="tab-pane active" id="link{{node.key}}" role="tabpanel">

View File

@ -936,6 +936,17 @@ class behat_navigation extends behat_base {
$xpath .= '//div[@id = ' . $tabid . ']';
}
array_shift($parentnodes);
} else {
$linkname = behat_context_helper::escape(get_string('moremenu'));
$menuxpath = '//ul[@role=\'tablist\']/li/a[contains(normalize-space(.), ' . $linkname . ')]';
$morebutton = $this->getSession()->getPage()->find('xpath', $menuxpath);
if ($morebutton) {
$this->execute('behat_general::i_click_on', [$morebutton, 'NodeElement']);
$moreitemxpath = '//ul[@data-region=\'moredropdown\']/li/a[contains(normalize-space(.), ' . $tabname . ')]';
if ($morenode = $this->getSession()->getPage()->find('xpath', $moreitemxpath)) {
$this->execute('behat_general::i_click_on', [$morenode, 'NodeElement']);
}
}
}
}

View File

@ -68,6 +68,17 @@ $buildregionmainsettings = !$PAGE->include_region_main_settings_in_header_action
// If the settings menu will be included in the header then don't add it here.
$regionmainsettingsmenu = $buildregionmainsettings ? $OUTPUT->region_main_settings_menu() : false;
if (defined('BEHAT_SITE_RUNNING')) {
$secondarynavigation = false;
} else {
$buildsecondarynavigation = $PAGE->has_secondary_navigation();
$secondarynavigation = $buildsecondarynavigation ? $OUTPUT->more_menu($PAGE->secondarynav, 'nav-tabs') : false;
}
$primary = new core\navigation\output\primary($PAGE);
$renderer = $PAGE->get_renderer('core');
$primarymenu = $primary->export_for_template($renderer);
$templatecontext = [
'sitename' => format_string($SITE->shortname, true, ['context' => context_course::instance(SITEID), "escape" => false]),
'output' => $OUTPUT,
@ -79,7 +90,11 @@ $templatecontext = [
'blockdraweropen' => $blockdraweropen,
'regionmainsettingsmenu' => $regionmainsettingsmenu,
'courseindex' => $courseindex,
'hasregionmainsettingsmenu' => !empty($regionmainsettingsmenu)
'hasregionmainsettingsmenu' => !empty($regionmainsettingsmenu),
'primarymoremenu' => $OUTPUT->more_menu(array_merge($primarymenu['primary'], $primarymenu['custom']), 'navbar-nav'),
'secondarymoremenu' => $secondarynavigation,
'usermenu' => $primarymenu['user'],
'langmenu' => $primarymenu['lang'],
];
$nav = $PAGE->flatnav;

View File

@ -110,6 +110,9 @@
{{/hasblocks}}
</div>
{{{ output.full_header }}}
<div class="secondarynavigation">
{{{ secondarymoremenu }}}
</div>
<div id="page-content" class="pb-3 d-print-block">
<div id="region-main-box">
{{#hasregionmainsettingsmenu}}