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 DocumenttypeFactory extends Object {
11: 12: 13:
14: private $documenttypeRepository;
15:
16: function __construct(DocumenttypeRepository $documenttypeRepository) {
17: $this->documenttypeRepository = $documenttypeRepository;
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->documenttypeRepository->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->documenttypeRepository->getGridCount($filter);
56: });
57:
58: $grid->addCellsTemplate(__DIR__ . '/../templates/Documenttype/grid.latte');
59:
60: return $grid;
61: }
62:
63: function createEditForm($backlink) {
64: $form = new UI\Form;
65:
66:
67: $form->setRenderer(new BootstrapRenderer());
68:
69: $form->getElementPrototype()->class = 'form-horizontal';
70:
71: $form->addText('name', 'Název:')
72: ->setRequired('Zadejte prosím název')
73: ->setAttribute('class', 'form-control');
74:
75: $form->addSubmit('saving', 'Uložit a zpět')
76: ->setAttribute('class', 'btn btn-primary');
77:
78: $form->addSubmit('back')
79: ->setAttribute('class', 'btn btn-inverse')
80: ->getControlPrototype()
81: ->setName('a')
82: ->href($backlink)
83: ->add(Html::el('i')->class('fa fa-reply'))
84: ->add(Html::el('span', ' Zpět'));
85:
86: return $form;
87: }
88: }