protected function createApplication($handler = null, array $request = []) { $application = new \Mesour\UI\Application('mesourApp'); if ($handler) { list($componentName, $handlerName) = explode('-', $handler); $newRequest = []; foreach ($request as $key => $value) { $newRequest['m_mesourApp-' . $componentName . '-' . $key] = $value; } $request = $newRequest; $request['m_do'] = 'mesourApp-' . $handler; } $application->setRequest($request); $application->run(); return $application; }
//create relations $groups = [['id' => '2', 'name' => 'Group 2', 'type' => 'first'], ['id' => '1', 'name' => 'Group 1', 'type' => 'second'], ['id' => '3', 'name' => 'Group 3', 'type' => 'first']]; // create source $source = new \Mesour\DataGrid\Sources\ArrayGridSource('users', 'id', $data, ['group' => $groups]); $groupStructure = $source->addTableToStructure('group', 'id'); $groupStructure->addNumber('id'); $groupStructure->addText('name'); $groupStructure->addEnum('type')->addValue('first')->addValue('second'); $dataStrucutre = $source->getDataStructure(); $source->joinField('group', 'group_id', 'name', 'group_name'); $dataStrucutre->addDate('last_login'); $dataStrucutre->addDate('timestamp'); $dataStrucutre->addManyToOne('group', 'group', 'group_id', '{name} ({type})'); $currentUserRole = 'registered'; // create application $application = new \Mesour\UI\Application('mesourapp'); $application->setRequest($_REQUEST); $application->setUserRole($currentUserRole); $application->run(); // authorizator settings $auth = $application->getAuthorizator(); $auth->addRole('guest'); $auth->addRole('registered', 'guest'); $auth->addResource('menu'); $auth->allow('guest', 'menu', ['first', 'second']); $auth->allow('registered', 'menu'); $auth->deny('registered', 'menu', 'second'); $grid = new \Mesour\UI\DataGrid('basicDataGrid', $application); $wrapper = $grid->getWrapperPrototype(); $wrapper->class('my-class'); // TRUE = append
function createForUser(\Mesour\Editable\Structures\IDataStructure $structure, $userId) { $structure->addText('name', 'Name', $userId)->setTextarea()->setEditPermission('user-editable', 'name-edit'); $structure->addText('surname', 'Surname', $userId)->setEditPermission('user-editable', 'surname-edit'); $structure->addText('email', 'Email', $userId)->setEditPermission('user-editable', 'email-edit'); $structure->addNumber('amount', 'Amount', $userId)->setUnit('EUR')->setDecimalPoint(',')->setThousandSeparator('.')->setDecimals(2)->setEditPermission('user-editable', 'amount-edit'); $structure->addDate('last_login', 'Last login', $userId)->setFormat('Y-m-d H:i:s')->setEditPermission('user-editable', 'last_login-edit'); $structure->addEnum('role', 'Role', $userId)->addValue('admin', 'Admin')->addValue('moderator', 'Moderator')->setEditPermission('user-editable', 'role-edit'); $structure->addBool('has_pro', 'Has PRO', $userId)->setDescription('Has PRO')->setEditPermission('user-editable', 'has_pro-edit'); $structure->addOneToOne('wallet', 'Wallet', $userId)->enableRemoveRow()->enableCreateNewRow()->setEditPermission('user-editable', 'wallet-edit'); $structure->addManyToOne('group', 'Group', $userId)->enableEditCurrentRow()->enableEditCurrentRow()->enableCreateNewRow()->setEditPermission('user-editable', 'group-edit')->setRemovePermission('user-editable', 'group-remove')->setCreatePermission('user-editable', 'group-create'); $structure->addOneToMany('addresses', 'Addresses', $userId)->enableCreateNewRow()->enableRemoveRow()->setEditPermission('user-editable', 'addresses-edit')->setRemovePermission('user-editable', 'addresses-remove')->setCreatePermission('user-editable', 'addresses-create'); $structure->addManyToMany('companies', 'Companies', $userId)->enableCreateNewRow()->enableRemoveRow()->enableAttachRow()->setEditPermission('user-editable', 'companies-edit')->setRemovePermission('user-editable', 'companies-remove')->setAttachPermission('user-editable', 'companies-attach')->setCreatePermission('user-editable', 'companies-create'); } // APPLICATION $application = new \Mesour\UI\Application('mesourApp'); $application->setRequest($_REQUEST); $application->setUserRole('admin'); $auth = $application->getAuthorizator(); $auth->addRole('guest'); $auth->addRole('registered', 'guest'); $auth->addRole('admin', 'registered'); $auth->addResource('user-editable'); $auth->allow('admin', 'user-editable'); $auth->deny('registered', 'user-editable', 'companies-edit'); $auth->deny('registered', 'user-editable', 'companies-create'); $auth->deny('registered', 'user-editable', 'companies-remove'); $auth->deny('registered', 'user-editable', 'companies-attach'); $application->run(); // EDITABLE $editable = new \Mesour\UI\Editable('editableTest', $application);
<hr> <div class="container"> <h2>Basic functionality</h2> <hr> <?php // CONNECTION & NDBT $connection = new \Nette\Database\Connection('mysql:host=127.0.0.1;dbname=sources_test', 'root', 'root'); $cacheMemoryStorage = new \Nette\Caching\Storages\MemoryStorage(); $structure = new \Nette\Database\Structure($connection, $cacheMemoryStorage); $conventions = new \Nette\Database\Conventions\DiscoveredConventions($structure); $context = new \Nette\Database\Context($connection, $structure, $conventions, $cacheMemoryStorage); // APPLICATION $application = new Mesour\UI\Application(); $application->setRequest($_REQUEST); $application->run(); // SELECTION $selection = $context->table('users'); $selection->select('users.*')->select('group.name group_name')->select('group.type group_type')->select('group.date group_date'); // SOURCE $source = new \Mesour\Filter\Sources\NetteDbFilterSource('users', 'id', $selection, $context, ['group_name' => 'group.name', 'group_type' => 'group.type', 'group_date' => 'group.date']); // FILTER $filter = new \Mesour\UI\Filter('test', $application); $filter->setSource($source); $filter->addTextFilter('action', 'Status', [0 => 'Inactive', 1 => 'Active'])->setMainFilter(false); $filter->setCustomReference('action', [0 => 'Inactive', 1 => 'Active']); $filter->addTextFilter('name', 'Name'); $filter->addNumberFilter('amount', 'Amount'); $filter->addDateFilter('last_login', 'Last login');
\Tracy\Debugger::enable(\Tracy\Debugger::DEVELOPMENT, __DIR__ . '/log'); require_once SRC_DIR . 'Mesour/Pager/Paginator.php'; require_once SRC_DIR . 'Mesour/Pager/IPager.php'; require_once SRC_DIR . 'Mesour/UI/AdvancedPager.php'; require_once SRC_DIR . 'Mesour/UI/Pager.php'; ?> <hr> <div class="container"> <h2>Basic functionality</h2> <hr> <?php $application = new \Mesour\UI\Application(); $application->setRequest($_REQUEST); $application->run(); // pager $pager = new \Mesour\UI\Pager('pager'); $application->addComponent($pager); $pager->getPaginator()->setItemsPerPage(10); $pager->setCount(55); $pagerHtml = $pager->create(); // advanced $advanced = new \Mesour\UI\AdvancedPager('advanced_pager'); $application->addComponent($advanced); $advanced->getPaginator()->setItemsPerPage(5); $advanced->setCount(105); $advancedHtml = $advanced->create(); // rendering