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