<?php defined('SYSPATH') or die('No direct access allowed.');

/**
 * This class is used to create our Menu/Navbars
 *
 * @package    lnApp
 * @category   Helpers
 * @author     Deon George
 * @copyright  (c) 2009-2013 Deon George
 * @license    http://dev.leenooks.net/license.html
 */
class lnApp_Menu {
	public static function items($type) {
		$result = array();

		if (empty(URL::$method_directory[$type]))
			return NULL;

		$list = Kohana::list_files('classes/Controller/'.ucfirst($type));

		// This will be used a lot!
		$ext_length = strlen(EXT);

		foreach ($list as $name => $path)
			if (is_array($path)) {
				$result += self::items($path);

			} elseif (substr($name, -$ext_length) === EXT) {
				// Remove "classes/" and the extension
				$class = substr($name, 8, -$ext_length);

				// Convert slashes to underscores
				$class = str_replace(DIRECTORY_SEPARATOR, '_', $class);

				if (method_exists($class,'menu')) {
					$cat = strtolower(str_replace('Controller_'.ucfirst($type).'_','',$class));

					foreach ($class::menu() as $k=>$v)
						$result[$cat][$k] = $v;
				}
			}

		return $result;
	}

	public static function ul($type,array $result,array $append=NULL,$sub=FALSE,$method=NULL) {
		$output = $sub ? '<ul class="dropdown-menu">' : '<ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">';

		foreach ($result as $k => $v)
			if (is_array($v))
				$output .= sprintf('<li class="dropdown-submenu">%s%s',HTML::anchor('#',$k,array('nocg'=>TRUE)),self::ul($type,$v,NULL,TRUE,$k).'</li>');
			else
				$output .= '<li>'.HTML::anchor(URL::$method_directory[$type].'/'.$method.'/'.$k,$v,array('tabindex'=>-1,'nocg'=>TRUE)).'</li>';

		if ($append) {
			$output .= '<li class="divider"></li>';

			foreach ($append as $k => $v)
				$output .= sprintf('<li>%s</li>',HTML::anchor($k,$v,array('nocg'=>TRUE)));
		}

		$output .= '</ul>';

		return $output;
	}
}
?>
