Overview

Namespaces

  • App
    • Components
    • Interfaces
    • Lib
      • Files
      • Forms
        • Controls
      • Html
      • Repair
      • Statics
    • Model
    • Modules
      • BaseModule
        • Presenters
      • PartnersModule
        • Presenters
      • ProductModule
        • Presenters
      • SaleModule
        • Model
        • Presenters
      • SettingsModule
        • Model
        • Presenters
      • StoreModule
        • Model
        • Presenters
    • Presenters
    • Router
  • PHP

Classes

  • DateTime
  • SplFileInfo

Interfaces

  • ArrayAccess
  • Countable
  • Exception
  • Iterator
  • Traversable
  • Overview
  • Namespace
  • Class
  • Tree
  • Deprecated
  • Download
 1: <?php
 2: 
 3: /**
 4:  * Project sberp
 5:  *
 6:  * @file MenuControl
 7:  * @author Jaromír Polášek
 8:  * @version 0.7.1.FORM
 9:  * Encoding UTF-8
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:  * Komponenta pro generování navigace
23:  */
24: class MenuControl extends Control implements IComponent{
25: 
26:     /** @var App\Lib\Tree  */
27:     private $menu;
28: 
29:     /** @var  Nette\Security\User uživatel  */
30:     private $user;
31: 
32:     /**
33:      * Konstruktor
34:      * @param \App\Model\Database $database
35:      * @param \Nette\ComponentModel\IContainer $parent
36:      * @param STRING $name
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:      * Hlavní metoda komponenty. ředává šabloně data
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:      * Vrací Html kód menu
56:      * @return Nette\Utils\Html
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:      * Vytvoří položku menu s odkazem
73:      * @param \App\Lib\Html\Code $menu
74:      * @param \Nette\Database\Table\ActiveRow $item
75:      * @param integer $level
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: 
sberp API API documentation generated by ApiGen