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 PriorityFactory extends Object {
11: 12: 13:
14: private $priorityRepository;
15:
16: function __construct(PriorityRepository $priorityRepository) {
17: $this->priorityRepository = $priorityRepository;
18: }
19:
20: function createDataGrid() {
21: $grid = new \Nextras\Datagrid\Datagrid;
22:
23: $grid->addColumn('name', 'Název')->enableSort();
24: $grid->addColumn('color', 'Barva')->enableSort();
25:
26: $grid->setRowPrimaryKey('id');
27:
28: $grid->setDatasourceCallback(function ($filter, $order, Paginator $paginator = null) {
29: return $this->priorityRepository->getGridSelection($filter, $order, $paginator->page, $paginator->itemsPerPage);
30: });
31:
32: $grid->setFilterFormFactory(function () {
33: $form = new \Nette\Forms\Container;
34:
35: $form->addText('name');
36: $form->addText('color');
37:
38: $form->addSubmit('filter', 'Hledej');
39: $form->addSubmit('cancel', 'Zrušit');
40:
41: $pretyp = $form['filter']->getControlPrototype();
42: $pretyp->setName("button");
43: $pretyp->type = 'submit';
44: $pretyp->class = 'ico-btn';
45: $pretyp->create('i class="fa fa-search"');
46:
47: $pretyp = $form['cancel']->getControlPrototype();
48: $pretyp->setName("button");
49: $pretyp->type = 'submit';
50: $pretyp->class = 'ico-btn';
51: $pretyp->create('i class="fa fa-times-circle-o"');
52:
53: return $form;
54: });
55:
56: $grid->setPagination(20, function ($filter, $order) {
57: return $this->priorityRepository->getGridCount($filter);
58: });
59:
60: $grid->addCellsTemplate(__DIR__ . '/../templates/Priority/grid.latte');
61:
62: return $grid;
63: }
64:
65: function createEditForm($backlink) {
66: $form = new UI\Form;
67:
68: $form->setRenderer(new BootstrapRenderer());
69:
70: $form->getElementPrototype()->class = 'form-horizontal';
71:
72: $form->addText('name', 'Název:')
73: ->setRequired('Zadejte prosím název')
74: ->setAttribute('class', 'form-control');
75:
76: $form->addText('color', 'Barva:')
77: ->setRequired('Zadejte prosím barvu')
78: ->setAttribute('class', 'form-control colorpicker');
79:
80: $form->addSubmit('saving', 'Uložit a zpět')
81: ->setAttribute('class', 'btn btn-primary');
82:
83: $form->addSubmit('back')
84: ->setAttribute('class', 'btn btn-inverse')
85: ->getControlPrototype()
86: ->setName('a')
87: ->href($backlink)
88: ->add(Html::el('i')->class('fa fa-reply'))
89: ->add(Html::el('span', ' Zpět'));
90:
91: return $form;
92: }
93: }