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 AuthorizeScheduledTaskFactory extends Object {
11: 12: 13:
14: private $userRepository;
15:
16: 17: 18:
19: private $scheduledTaskRepository;
20:
21: function __construct(UserRepository $userRepository, ScheduledTaskRepository $scheduledTaskRepository) {
22: $this->userRepository = $userRepository;
23: $this->scheduledTaskRepository = $scheduledTaskRepository;
24: }
25:
26: function createDataGrid() {
27: $grid = new \Nextras\Datagrid\Datagrid;
28:
29: $grid->addColumn('name', 'Název úkolu')->enableSort();
30: $grid->addColumn('date', 'Schváleno')->enableSort();
31: $grid->addColumn('user', 'Schválil')->enableSort();
32:
33: $grid->setRowPrimaryKey('id');
34:
35: $grid->setDatasourceCallback(function ($filter, $order, Paginator $paginator = null) {
36: return $this->scheduledTaskRepository->getAuthorizeGridSelection($filter, $order, $paginator->page, $paginator->itemsPerPage);
37: });
38:
39: $grid->setFilterFormFactory(function () {
40: $form = new \Nette\Forms\Container;
41:
42: $form->addText('name');
43: $form->addSelect('date', 'Schváleno', array('' => '', '1' => 'Ano', 0 => 'Ne'));
44: $form->addSelect('user', 'Schválil', array('' => '') + $this->userRepository->getPairData());
45:
46: $form->addSubmit('filter', 'Hledej');
47: $form->addSubmit('cancel', 'Zrušit');
48:
49: $pretyp = $form['filter']->getControlPrototype();
50: $pretyp->setName("button");
51: $pretyp->type = 'submit';
52: $pretyp->class = 'ico-btn';
53: $pretyp->create('i class="fa fa-search"');
54:
55: $pretyp = $form['cancel']->getControlPrototype();
56: $pretyp->setName("button");
57: $pretyp->type = 'submit';
58: $pretyp->class = 'ico-btn';
59: $pretyp->create('i class="fa fa-times-circle-o"');
60:
61: return $form;
62: });
63:
64: $grid->setPagination(20, function ($filter, $order) {
65: return $this->scheduledTaskRepository->getAuthorizeGridCount($filter);
66: });
67:
68: $grid->addCellsTemplate(__DIR__ . '/../templates/AuthorizeScheduledTask/grid.latte');
69:
70: return $grid;
71: }
72: }