1: <?php
2: 3: 4: 5: 6: 7: 8: 9:
10:
11: namespace Kotchasan;
12:
13: 14: 15: 16: 17: 18: 19:
20: class Menu
21: {
22: 23: 24: 25: 26: 27: 28:
29: public static function render($items, $select)
30: {
31: $menus = array();
32: foreach ($items as $alias => $values) {
33: if (isset($values['url'])) {
34: $menus[] = self::getItem($alias, $values, false, $select).'</li>';
35: } elseif (isset($values['submenus'])) {
36: $menus[] = self::getItem($alias, $values, true, $select).'<ul>';
37: $menus[] = self::render($values['submenus'], $select);
38: $menus[] = '</ul>';
39: }
40: }
41:
42: return implode('', $menus);
43: }
44:
45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55:
56: protected static function getItem($name, $item, $arrow, $select)
57: {
58: if (empty($name) && !is_int($name)) {
59: $c = '';
60: } else {
61: $c = array($name);
62: if ($name == $select) {
63: $c[] = 'select';
64: }
65: $c = ' class="'.implode(' ', $c).'"';
66: }
67: if (!empty($item['url'])) {
68: $a = array('href="'.$item['url'].'"');
69: if (!empty($item['target'])) {
70: $a[] = 'target="'.$item['target'].'"';
71: }
72: }
73: if (!empty($item['text'])) {
74: $a[] = 'title="'.$item['text'].'"';
75: }
76: $a = isset($a) ? ' '.implode(' ', $a) : '';
77: if ($arrow) {
78: return '<li'.$c.'><span class=menu-arrow'.$a.'><span>'.(empty($item['text']) ? ' ' : strip_tags(htmlspecialchars_decode($item['text']))).'</span></span>';
79: } else {
80: return '<li'.$c.'><a'.$a.'><span>'.(empty($item['text']) ? ' ' : strip_tags(htmlspecialchars_decode($item['text']))).'</span></a>';
81: }
82: }
83: }
84: