mirror of
https://github.com/e107inc/e107.git
synced 2025-08-02 20:57:26 +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 $active;
|
||||||
public $depth = 0;
|
public $depth = 0;
|
||||||
public $navClass;
|
public $navClass;
|
||||||
|
private $activeSubFound = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* As set by {NAVIGATION: class=xxxx}
|
* 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.
|
if(is_string($this->var['link_sub'])) // html override option.
|
||||||
{
|
{
|
||||||
|
|
||||||
// e107::getDebug()->log($this->var);
|
// e107::getDebug()->log($this->var);
|
||||||
|
|
||||||
return $this->var['link_sub'];
|
return $this->var['link_sub'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->depth++;
|
$this->depth++;
|
||||||
|
|
||||||
// Assume it's an array.
|
// 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'];
|
$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 = !empty($this->var['link_sub'][0]['link_sub']) && isset($this->template['submenu_lowerstart']) ? $this->template['submenu_lowerend'] : $this->template['submenu_end'];
|
$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" : "";
|
$active = ($this->isActive($_data, $this->activeMainFound)) ? "_active" : "";
|
||||||
$sc->setDepth(0);
|
$sc->setDepth(0);
|
||||||
$sc->setVars($_data); // isActive is allowed to alter data
|
$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);
|
$ret .= e107::getParser()->parseTemplate($itemTmpl, true, $sc);
|
||||||
$sc->active = ($active) ? true : false;
|
$sc->active = ($active) ? true : false;
|
||||||
if($sc->active)
|
if($sc->active)
|
||||||
|
@@ -316,7 +316,7 @@ class e_parse_shortcodeTest extends \Codeception\Test\Unit
|
|||||||
'link_parent' => '0',
|
'link_parent' => '0',
|
||||||
'link_open' => '0',
|
'link_open' => '0',
|
||||||
'link_class' => '0',
|
'link_class' => '0',
|
||||||
'link_function' => 'news::last_ten',
|
'link_function' => 'page::bookNav',
|
||||||
'link_sefurl' => 'index',
|
'link_sefurl' => 'index',
|
||||||
'link_owner' => 'news'
|
'link_owner' => 'news'
|
||||||
);
|
);
|
||||||
@@ -325,6 +325,45 @@ class e_parse_shortcodeTest extends \Codeception\Test\Unit
|
|||||||
|
|
||||||
$this->processShortcodeMethods($sc);
|
$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