| // | Demian Turner | // | James Floyd | // +---------------------------------------------------------------------------+ require_once STR_PATH . '/tests/classes/FileScanner.php'; require_once 'HTML/TreeMenu.php'; /** * A class for managing the construction of groups of tests, and for * presenting them in an HTML menu. * * @author Andrew Hill */ class STR_Menu { /** * A method to return the HTML code needed to display a tree-based * menu of all the Max tests. * * @return string A string containing the HTML code needed to display * the tests in a tree-based menu. */ function buildTree() { $conf = $GLOBALS['_STR']['CONF']; // Create the root of the test suite $menu = new HTML_TreeMenu(); $rootNode = new HTML_TreeNode( array( 'text' => $conf['project']['name'] . ' Tests', 'icon' => "package.png" ) ); // Create the top-level test groups foreach (array('unit', 'web') as $type) { $nodeName = $type . 'RootNode'; ${$nodeName} = new HTML_TreeNode( array( 'text' => ucwords($type) . ' Test Suite', 'icon' => "package.png", 'link' => "run.php?type=$type&level=all", 'linkTarget' => "right" ) ); $structure = STR_FileScanner::getAllTestFiles($type); foreach ($structure as $layerCode => $folders) { $firstNode = &${$nodeName}->addItem( new HTML_TreeNode( array( 'text' => $GLOBALS['_STR'][$type . '_layers'][$layerCode][0], 'icon' => "package.png", 'link' => "run.php?type=$type&level=layer&layer=$layerCode", 'linkTarget' => 'right' ) ) ); foreach ($folders as $folder => $files) { if (count($files)) { $secondNode = &$firstNode->addItem( new HTML_TreeNode( array( 'text' => $folder, 'icon' => "class_folder.png", 'link' => "run.php?type=$type&level=folder&layer=$layerCode&folder=$folder", 'linkTarget' => 'right' ) ) ); } foreach ($files as $index => $file) { $secondNode->addItem( new HTML_TreeNode( array( 'text' => $file, 'icon' => "Method.png", 'link' => "run.php?type=$type&level=file&layer=$layerCode&folder=$folder&file=$file", 'linkTarget' => 'right' ) ) ); } } } $rootNode->addItem(${$nodeName}); } // Add the root node to the menu, and return the HTML code $menu->addItem($rootNode); $tree = new HTML_TreeMenu_DHTML($menu); $code = file_get_contents(STR_PATH . '/tests/media/menu.css'); $code .= "\n"; $code .= $tree->toHTML(); return $code; } } ?>