109 lines
3.4 KiB
PHP
109 lines
3.4 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 '';
|
|
}
|
|
}
|
|
}
|
|
|
|
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;
|
|
|
|
}
|
|
}
|
|
|
|
?>
|