blob: 094cec2712ab17401bef96d2aa9346ac64bc1414 [file] [log] [blame]
<?php
class NavigationView {
private static $introductionCount = 0;
private function __construct() {}
public static function create( $filePath ) {
$result = '<ul id="dev-guide-nav">';
$xmlIterator = new SimpleXMLIterator( $filePath, null, true );
$result .= self::createNavigationFromXml( $xmlIterator );
$result .= '</ul>';
return $result;
}
private static function createNavigationFromXml( $xmlIterator ) {
$result = '';
foreach( $xmlIterator as $element ) {
$label = $element[ 'label' ];
if( !self::navEntryIsExcluded( $label ) ) {
$hasChildren = $element -> count() > 0 ? true : false;
if( $hasChildren ) {
$result .= '<li class="category-group"><span><span class="arrow"></span>' . $label . '</span><ul>';
$result .= self::createNavigationFromXml( $element );
$result .= '</ul></li>';
} else if( isset( $element[ 'href' ] ) ) {
$url = str_replace( 'help/html/', '', $element[ 'href' ] );
$active = '';
if( isset( $_GET[ 'topic' ] ) ) {
$active = $url === $_GET[ 'topic' ] ? 'class="active"' : '';
}
$result .= '<li><a ' . $active . ' href="devguide.php?topic=' . $url .'">' . $label . '</a></li>';
}
}
}
return $result;
}
private static function navEntryIsExcluded( $navEntry ) {
$result = false;
switch( $navEntry ) {
case 'Legal':
$result = true;
break;
case 'Reference':
$result = true;
break;
case 'Introduction':
if( self::$introductionCount < 1 ) {
self::$introductionCount++;
$result = true;
break;
}
}
return $result;
}
}
?>