mirror of
https://github.com/e107inc/e107.git
synced 2025-07-31 03:40:37 +02:00
Fixes a bug in drop-down navigation containing HTML.
This commit is contained in:
@@ -15,6 +15,7 @@ require_once(__DIR__.'/navigation_shortcodes_legacy.php');
|
||||
public $active;
|
||||
public $depth = 0;
|
||||
public $navClass;
|
||||
private $activeSubFound = false;
|
||||
|
||||
/**
|
||||
* As set by {NAVIGATION: class=xxxx}
|
||||
@@ -286,17 +287,17 @@ require_once(__DIR__.'/navigation_shortcodes_legacy.php');
|
||||
|
||||
if(is_string($this->var['link_sub'])) // html override option.
|
||||
{
|
||||
|
||||
// e107::getDebug()->log($this->var);
|
||||
|
||||
return $this->var['link_sub'];
|
||||
}
|
||||
|
||||
$this->depth++;
|
||||
|
||||
// Assume it's an array.
|
||||
|
||||
$startTemplate = !empty($this->var['link_sub'][0]['link_sub']) && isset($this->template['submenu_lowerstart']) ? $this->template['submenu_lowerstart'] : $this->template['submenu_start'];
|
||||
$endTemplate = !empty($this->var['link_sub'][0]['link_sub']) && isset($this->template['submenu_lowerstart']) ? $this->template['submenu_lowerend'] : $this->template['submenu_end'];
|
||||
$startTemplate = is_array($this->var['link_sub']) && !empty($this->var['link_sub'][0]['link_sub']) && isset($this->template['submenu_lowerstart']) ? $this->template['submenu_lowerstart'] : $this->template['submenu_start'];
|
||||
$endTemplate = is_array($this->var['link_sub']) && !empty($this->var['link_sub'][0]['link_sub']) && isset($this->template['submenu_lowerstart']) ? $this->template['submenu_lowerend'] : $this->template['submenu_end'];
|
||||
|
||||
|
||||
|
||||
|
@@ -1660,7 +1660,7 @@ i.e-cat_users-32{ background-position: -555px 0; width: 32px; height: 32px; }
|
||||
$active = ($this->isActive($_data, $this->activeMainFound)) ? "_active" : "";
|
||||
$sc->setDepth(0);
|
||||
$sc->setVars($_data); // isActive is allowed to alter data
|
||||
$itemTmpl = is_array($_data['link_sub']) && count($_data['link_sub']) > 0 ? $template['item_submenu'.$active] : $template['item'.$active];
|
||||
$itemTmpl = !empty($_data['link_sub']) ? $template['item_submenu'.$active] : $template['item'.$active];
|
||||
$ret .= e107::getParser()->parseTemplate($itemTmpl, true, $sc);
|
||||
$sc->active = ($active) ? true : false;
|
||||
if($sc->active)
|
||||
|
@@ -316,7 +316,7 @@ class e_parse_shortcodeTest extends \Codeception\Test\Unit
|
||||
'link_parent' => '0',
|
||||
'link_open' => '0',
|
||||
'link_class' => '0',
|
||||
'link_function' => 'news::last_ten',
|
||||
'link_function' => 'page::bookNav',
|
||||
'link_sefurl' => 'index',
|
||||
'link_owner' => 'news'
|
||||
);
|
||||
@@ -325,6 +325,45 @@ class e_parse_shortcodeTest extends \Codeception\Test\Unit
|
||||
|
||||
$this->processShortcodeMethods($sc);
|
||||
|
||||
|
||||
// Test sub links with deep level array.
|
||||
$template = e107::getCoreTemplate('navigation', 'main');
|
||||
$sc->template = $template;
|
||||
|
||||
$outArray = array();
|
||||
$data = array($vars);
|
||||
|
||||
$ret = e107::getNav()->compile($data, $outArray);
|
||||
|
||||
$sc->setVars($ret[0]);
|
||||
$actual = e107::getParser()->parseTemplate('{LINK_SUB}', true, $sc);
|
||||
$this->assertStringContainsString('<a href="https://localhost/e107/page.php?bk=1">General</a>', $actual);
|
||||
$this->assertStringContainsString('<li role="menuitem" class="dropdown-submenu lower">', $actual);
|
||||
$this->assertStringContainsString('<li role="menuitem" class="link-depth-3">', $actual);
|
||||
|
||||
// test sublink with HTML.
|
||||
|
||||
$vars['link_function'] = 'theme::sc_bootstrap_megamenu_example';
|
||||
|
||||
$outArray = array();
|
||||
$data = array($vars);
|
||||
|
||||
$ret = e107::getNav()->compile($data, $outArray);
|
||||
|
||||
// HTML in {LINK_SUB}
|
||||
$sc->setVars($ret[0]);
|
||||
$actual = e107::getParser()->parseTemplate('{LINK_SUB}', false, $sc);
|
||||
$this->assertStringContainsString('<div class="dropdown-menu">', $actual);
|
||||
|
||||
// HTML in {NAV_LINK_SUB}
|
||||
$actual = e107::getParser()->parseTemplate('{NAV_LINK_SUB}', false, $sc);
|
||||
$this->assertStringContainsString('<div class="dropdown-menu">', $actual);
|
||||
|
||||
// test HTML with core template using e107::getNav()->render();
|
||||
$result = e107::getNav()->render($ret, $template);
|
||||
$this->assertStringContainsString('<li class="nav-item dropdown theme-sc-bootstrap-megamenu-example">', $result);
|
||||
$this->assertStringContainsString('<div class="dropdown-menu"><div class="container mega-menu-example">', $result);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user