1: <?php
2: namespace Budovy;
3:
4: use Nette\Object;
5: use Nette\Utils\Paginator;
6: use Nette\Utils\Html;
7: use Nette\Application\UI;
8: use Kdyby\BootstrapFormRenderer\BootstrapRenderer;
9:
10: class ContactFactory extends Object {
11: 12: 13:
14: private $contactRepository;
15:
16: function __construct(ContactRepository $contactRepository) {
17: $this->contactRepository = $contactRepository;
18: }
19:
20: function createDataGrid() {
21: $grid = new \Nextras\Datagrid\Datagrid;
22:
23: $grid->addColumn('firstname', 'Jméno')->enableSort();
24: $grid->addColumn('lastname', 'Příjmení')->enableSort();
25: $grid->addColumn('email', 'E-mail')->enableSort();
26: $grid->addColumn('phone', 'Telefon')->enableSort();
27: $grid->addColumn('company', 'Společnost')->enableSort();
28:
29: $grid->setRowPrimaryKey('id');
30:
31: $grid->setDatasourceCallback(function ($filter, $order, Paginator $paginator = null) {
32: return $this->contactRepository->getGridSelection($filter, $order, $paginator->page, $paginator->itemsPerPage);
33: });
34:
35: $grid->setFilterFormFactory(function () {
36: $form = new \Nette\Forms\Container;
37:
38: $form->addText('firstname');
39: $form->addText('lastname');
40: $form->addText('email');
41: $form->addText('phone');
42: $form->addText('company');
43:
44: $form->addSubmit('filter', 'Hledej');
45: $form->addSubmit('cancel', 'Zrušit');
46:
47: $pretyp = $form['filter']->getControlPrototype();
48: $pretyp->setName("button");
49: $pretyp->type = 'submit';
50: $pretyp->class = 'ico-btn';
51: $pretyp->create('i class="fa fa-search"');
52:
53: $pretyp = $form['cancel']->getControlPrototype();
54: $pretyp->setName("button");
55: $pretyp->type = 'submit';
56: $pretyp->class = 'ico-btn';
57: $pretyp->create('i class="fa fa-times-circle-o"');
58:
59: return $form;
60: });
61:
62: $grid->setPagination(20, function ($filter, $order) {
63: return $this->contactRepository->getGridCount($filter);
64: });
65:
66: $grid->addCellsTemplate(__DIR__ . '/../templates/Contact/grid.latte');
67:
68: return $grid;
69: }
70:
71: function createEditForm($backlink) {
72: $form = new UI\Form;
73:
74:
75: $form->setRenderer(new BootstrapRenderer());
76:
77: $form->getElementPrototype()->class = 'form-horizontal';
78:
79: $form->addText('firstname', 'Jméno:')
80: ->setRequired('Zadejte prosím jméno')
81: ->setAttribute('class', 'form-control');
82:
83: $form->addText('lastname', 'Příjmení:')
84: ->setRequired('Zadejte prosím příjmení')
85: ->setAttribute('class', 'form-control');
86:
87: $form->addText('email', 'E-mail:')
88: ->setAttribute('class', 'form-control');
89:
90: $form->addText('phone', 'Telefon:')
91: ->setAttribute('class', 'form-control');
92:
93: $form->addText('company', 'Společnost:')
94: ->setAttribute('class', 'form-control');
95:
96: $form->addText('ic', 'IČ:')
97: ->setAttribute('class', 'form-control');
98:
99: $form->addText('dic', 'DIČ:')
100: ->setAttribute('class', 'form-control');
101:
102: $form->addText('street', 'Ulice:')
103: ->setAttribute('class', 'form-control');
104:
105: $form->addText('city', 'Město:')
106: ->setAttribute('class', 'form-control');
107:
108: $form->addText('zip', 'PSČ:')
109: ->setAttribute('class', 'form-control');
110:
111: $form->addTextArea('description', 'Poznámka:')
112: ->setAttribute('class', 'form-control');
113:
114: $form->addSubmit('saving', 'Uložit a zpět')
115: ->setAttribute('class', 'btn btn-primary');
116:
117: $form->addSubmit('back')
118: ->setAttribute('class', 'btn btn-inverse')
119: ->getControlPrototype()
120: ->setName('a')
121: ->href($backlink)
122: ->add(Html::el('i')->class('fa fa-reply'))
123: ->add(Html::el('span', ' Zpět'));
124:
125: return $form;
126: }
127: }