1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10:
11:
12: namespace App\Components;
13:
14: use Nette\Application\UI\Control,
15: Nette\ComponentModel\IContainer,
16: Nette\Security\User,
17: App\Interfaces\IComponent,
18: App\Model\Menu,
19: App\Lib\Html\Tree,
20: App\Lib\Statics\Cons;
21: 22: 23:
24: class MenuControl extends Control implements IComponent{
25:
26:
27: private $menu;
28:
29:
30: private $user;
31:
32: 33: 34: 35: 36: 37:
38: public function __construct(Menu $menu, User $user, IContainer $parent = NULL, $name = NULL) {
39: parent::__construct($parent, $name);
40: $this->menu = $menu;
41: $this->user = $user;
42: }
43:
44: 45: 46:
47: public function render() {
48: $template = $this->template;
49: $template->setFile(__DIR__ . '/Menu.latte');
50: $template->data = $this->create();
51: $template->render();
52: }
53:
54: 55: 56: 57:
58: public function create() {
59: $menu = new Tree();
60: $level = 0;
61: foreach ($this->menu->full as $item) {
62: if ($item->depth > 0) {
63: $this->createItem($menu, $item, $level);
64: $level = $item[Cons::COLUMN_DEPTH];
65: }
66: }
67: $menu->setRemainUlLi($level);
68: return $menu->html;
69: }
70:
71: 72: 73: 74: 75: 76:
77: private function createItem($menu, $item, $level) {
78: $menu->setTreePart($item[Cons::COLUMN_DEPTH], $level);
79: $name = ($item->name == '%user%') ? ($this->user->identity->data[Cons::USER_NAME])? : ($this->user->identity->data[Cons::USER_LOGIN]) : $item[Cons::COLUMN_NAME];
80: $menu->setA($name, (!is_null($item[Cons::COLUMN_LINK])) ?
81: $this->presenter->link($item[Cons::COLUMN_LINK], array('source' => $item[Cons::TABLE_SOURCE][Cons::COLUMN_ID])) :
82: null);
83: }
84:
85: }
86: