108 lines
2.7 KiB
PHP
108 lines
2.7 KiB
PHP
<?php
|
|
|
|
class renderNavigationClass extends renderClass_abstract
|
|
{
|
|
private $_navData = array();
|
|
private $_node = null;
|
|
private $_prefix = '';
|
|
private $_firstKey = 0;
|
|
|
|
public function createNavigation($navData)
|
|
{
|
|
$this->_navData = $navData;
|
|
$this->_node = $this->_tpl->createDocumentFragment();
|
|
$navKeys = array_keys($navData);
|
|
$firstKey = $navKeys[0];
|
|
$this->_firstKey = $firstKey;
|
|
$this->_prefix = renderNavigationClass:: getNavigationPrefix();
|
|
|
|
$node = renderNavigationClass:: getNavigationNode($this->_firstKey);
|
|
if ($node !== false)
|
|
{
|
|
$this->_node->appendChild($node);
|
|
}
|
|
|
|
return $this->_node;
|
|
}
|
|
|
|
private function getNavigationPrefix()
|
|
{
|
|
foreach ($this->_navData[$this->_firstKey][0] as $key => $value)
|
|
{
|
|
if (strpos($key, '_') !== false)
|
|
{
|
|
return substr($key, 0, strpos($key, '_') + 1);
|
|
}
|
|
else
|
|
{
|
|
return '';
|
|
}
|
|
}
|
|
return '';
|
|
}
|
|
|
|
private function getNavigationNode($navStart)
|
|
{
|
|
if (!isset ($this->_navData[$navStart]) || count($this->_navData [$navStart]) == 0)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
$newNode = $this->_tpl->createElement('ul');
|
|
foreach ($this->_navData [$navStart] AS $key => $value)
|
|
{
|
|
if ($this->_textsFromConfig)
|
|
{
|
|
if (array_key_exists($value [$this->_prefix . 'navId'], $this->_website))
|
|
{
|
|
$navTitle = $this->_website[$value [$this->_prefix . 'navId']]['names'];
|
|
}
|
|
else
|
|
{
|
|
$navTitle = $this->_langArray ['navi']['site_' . $value [$this->_prefix . 'navId']];
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$navTitle = $value[$this->_prefix . 'navName'];
|
|
}
|
|
if ($this->_modrewrite)
|
|
{
|
|
$navHref = $value[$this->_prefix . 'navLink'];
|
|
}
|
|
else
|
|
{
|
|
$navHref = (!isset ($value[$this->_prefix . 'navType']) || (isset ($value[$this->_prefix . 'navType']) && $value[$this->_prefix . 'navType'] === 'html'))
|
|
? $value [$this->_prefix . 'navTarget']
|
|
: 'javascript:void( 0 );';
|
|
}
|
|
|
|
$newLi = $this->_tpl->createElement('li');
|
|
$newHref = $this->_tpl->createElement('a');
|
|
if (in_array($value[$this->_prefix . 'navId'], $this->_navpath))
|
|
{
|
|
$newHref->setAttributeNode(new DOMAttr ('class', 'active'));
|
|
}
|
|
$newHref->appendChild(new DOMText ($navTitle));
|
|
$newHref->setAttributeNode(new DOMAttr ('href', $navHref));
|
|
if (isset ($value[$this->_prefix . 'navType']) && $value[$this->_prefix . 'navType'] === 'js')
|
|
{
|
|
$newHref->setAttributeNode(new DOMAttr ('onclick', $value[$this->_prefix . 'navTarget']));
|
|
}
|
|
$newLi->appendChild($newHref);
|
|
|
|
$sub_node = renderNavigationClass:: getNavigationNode($value[$this->_prefix . 'navId']);
|
|
if ($sub_node !== false)
|
|
{
|
|
$newLi->appendChild($sub_node);
|
|
}
|
|
$newNode->appendChild($newLi);
|
|
|
|
}
|
|
|
|
unset ($this->_navData [$navStart]);
|
|
|
|
return $newNode;
|
|
|
|
}
|
|
} |