public function indexAction() { if (($response = parent::indexAction()) instanceof Response) { return $response; } $form = new Form(package_path('Designs', 'Resources/forms/admin/index-filters.php')); $form->populate($this->view->filters); $this->view->assign('form', $form); }
public function getView() { if (\null === $this->view) { $this->view = new View(); try { $this->view->injectPaths((array) package_path(current_package(), 'Resources/views')); } catch (\Exception $e) { app()->collectException($e); } } return $this->view; }
/** * @param EntityInterface $entity * @return \Micro\Http\Response\RedirectResponse|\Micro\Application\View */ public function addAction(EntityInterface $entity = \null) { $package = $this->request->getParam('package'); $controller = $this->request->getParam('controller'); $model = $this->getModel(); if ($entity === \null) { $entity = $model->createEntity(); } $form = new Form(package_path(ucfirst(Utils::camelize($package)), '/Resources/forms/' . ($this->scope ? $this->scope . '/' : '') . $controller . '-add.php')); $form->populate($entity->toArray()); $this->prepareForm($form, $entity); if ($this->request->isPost()) { $post = $this->request->getPost(); if (isset($post['btnBack'])) { return new RedirectResponse(route(\null, ['action' => 'index', 'id' => \null])); } $post = Utils::arrayMapRecursive('trim', $post); $this->modifyPost($form, $entity, $post); $this->preValidate($form, $entity, $post); $form->isValid($post); $this->postValidate($form, $entity, $post); if (!$form->hasErrors()) { if (!isset($post['languageId']) && $this->container->has('language') && ($language = $this->container->get('language')) instanceof LanguageInterface) { $post['languageId'] = $language->getId(); } try { $post = Utils::arrayMapRecursive('trim', $post, true); $this->modifyData($post); $entity->setFromArray($post); $this->modifyEntity($entity); $model->save($entity); if (isset($post['btnApply'])) { $redirectResponse = new RedirectResponse(route(\null, ['action' => 'edit', 'id' => $entity[$model->getIdentifier()]])); } else { $redirectResponse = new RedirectResponse(route(\null, ['action' => 'index', 'id' => \null])); } return $redirectResponse->withFlash('Информацията е записана'); } catch (\Exception $e) { if ($entity[$model->getIdentifier()]) { $redirectResponse = new RedirectResponse(route(\null, ['action' => 'edit', 'id' => $entity[$model->getIdentifier()]])); } else { $redirectResponse = new RedirectResponse(route(\null, ['action' => 'add', 'id' => \null])); } return $redirectResponse->withFlash(env('development') ? $e->getMessage() : 'Възникна грешка. Опитайте по-късно', 'danger'); } } } $this->view->setTemplate(($this->scope ? $this->scope . '/' : '') . $controller . '/add'); return $this->view->addData(['form' => $form, 'item' => $entity]); }
public function wizzardAction() { $form = new Form(package_path('Brands', 'Resources/forms/admin/wizzard.php')); if ($this->request->isPost()) { $post = $this->request->getPost(); $post = Utils::arrayMapRecursive('trim', $post); if (isset($post['btnBack'])) { return new RedirectResponse(route(\null, ['action' => 'index', 'id' => \null])); } $form->isValid($post); if (isset($post['name']) && $post['name'] && isset($post['countryId']) && $post['countryId']) { $m = new \Brands\Model\Table\Brands(); foreach ($post['countryId'] as $countryId) { $where = array('name = ?' => $post['name'], 'countryId = ?' => $countryId, 'typeId = ?' => $post['typeId']); if ($m->fetchRow($where)) { $form->countryId->addError('Тази марка и тип съществува за някои от избраните държави'); $form->markAsError(); break; } } } if (!$form->hasErrors()) { $redirectResponse = new RedirectResponse(route(\null, ['action' => 'index', 'id' => \null])); try { $post = Utils::arrayMapRecursive('trim', $post, true); $this->getModel()->multipleInsert($post); return $redirectResponse->withFlash('Информацията е записана'); } catch (\Exception $e) { return $redirectResponse->withFlash($e->getMessage(), 'danger'); } } } $this->view->assign('form', $form); }
public function onApplicationStart(Message $message) { $this->view = new View('debug'); $this->view->addPath(package_path('MicroDebug', 'Resources/views')); }
/** * @param string $package * @param Http\Request $request * @param Http\Response $response * @param bool $subRequest * @throws CoreException * @return \Micro\Http\Response */ public function resolve($package, Http\Request $request, Http\Response $response, $subRequest = \false) { if (!is_string($package) || strpos($package, '@') === \false) { throw new CoreException('[' . __METHOD__ . '] Package must be in [Package\\Handler@action] format', 500); } list($package, $action) = explode('@', $package); if (!class_exists($package, \true)) { throw new CoreException('[' . __METHOD__ . '] Package class "' . $package . '" not found', 404); } $parts = explode('\\', $package); $packageParam = Utils::decamelize($parts[0]); $controllerParam = Utils::decamelize($parts[count($parts) - 1]); $actionParam = Utils::decamelize($action); $request->setParam('package', $packageParam); $request->setParam('controller', $controllerParam); $request->setParam('action', $actionParam); $packageInstance = new $package($request, $response); if ($packageInstance instanceof Controller) { $actionMethod = lcfirst(Utils::camelize($action)) . 'Action'; } else { $actionMethod = lcfirst(Utils::camelize($action)); } if (!method_exists($packageInstance, $actionMethod)) { throw new CoreException('[' . __METHOD__ . '] Method "' . $actionMethod . '" not found in "' . $package . '"', 404); } if ($packageInstance instanceof ContainerAwareInterface) { $packageInstance->setContainer($this); } $scope = ''; if ($packageInstance instanceof Controller) { $packageInstance->init(); $scope = $packageInstance->getScope(); } if (($packageResponse = $packageInstance->{$actionMethod}()) instanceof Http\Response) { return $packageResponse; } if (is_object($packageResponse) && !$packageResponse instanceof View) { throw new CoreException('[' . __METHOD__ . '] Package response is object and must be instance of View', 500); } if ($packageResponse === \null || is_array($packageResponse)) { if ($packageInstance instanceof Controller) { $view = $packageInstance->getView(); } else { $view = new View(); } if (is_array($packageResponse)) { $view->addData($packageResponse); } $packageResponse = $view; } if ($packageResponse instanceof View) { if ($packageResponse->getTemplate() === \null) { $packageResponse->setTemplate(($scope ? $scope . '/' : '') . $controllerParam . '/' . $actionParam); } $packageResponse->injectPaths((array) package_path($parts[0], 'Resources/views')); if (($eventResponse = $this->get('event')->trigger('render.start', ['view' => $packageResponse])) instanceof Http\Response) { return $eventResponse; } if ($subRequest) { $packageResponse->setRenderParent(\false); } $response->setBody((string) $packageResponse->render()); } else { $response->setBody((string) $packageResponse); } return $response; }
public function addItemAction() { $menuId = $this->request->getParam('menuId'); $id = $this->request->getParam('id'); $menu = $this->getModel()->find((int) $menuId); if ($menu === null) { return new RedirectResponse(route(\null, array('action' => 'index', 'menuId' => \null))); } $model = new Model\Items(); if ($id) { $item = $model->find((int) $id); if ($item === null) { return new RedirectResponse(route(\null, array('action' => 'items', 'id' => \null))); } } else { $item = $model->createEntity(); } if ($item instanceof Model\Entity\Item) { } $form = new Form(package_path('Navigation', 'Resources/forms/admin/index-add-item.php')); $tree = new Helper\Tree($menu->getAlias()); $form->parentId->setMultiOptions($tree->flat($tree->getTree(null), '---', array((int) $id))); $form->populate($item->toArray()); if ($this->request->isPost()) { $post = $this->request->getPost(); if (isset($post['btnBack'])) { return new RedirectResponse(route(\null, array('action' => 'items', 'id' => \null))); } $form->isValid($post); if (isset($post['alias']) && $post['alias']) { $m = new Model\Table\Items(); $where = array('alias = ?' => $post['alias']); if ($item->getId()) { $where['id <> ?'] = $item->getId(); } if ($m->fetchRow($where)) { $form->alias->addError('Псевдонимът се използва'); $form->markAsError(); } } if (!$form->hasErrors()) { if (isset($post['routeData'])) { $routeData = $post['routeData']; } else { $routeData = array(); } foreach ($routeData as $k => $v) { if (empty($v)) { unset($routeData[$k]); } } $post = Utils::arrayMapRecursive('trim', $post, true); $item->setFromArray($post); $item->setMenuId($menuId); if ($item->getRoute() === \null) { if ($item->getUrl() === \null) { $item->setUrl('#'); } } else { $item->setUrl(\null); } if ($item->getRoute()) { if (($navigationHelper = $this->getNavigationHelper($item->getRoute())) !== \null) { if (method_exists($navigationHelper, 'decode')) { $navigationHelper->decode($routeData, $item); } } } $item->setRouteData(empty($routeData) ? \null : json_encode($routeData)); if ($item->getOrder() === \null) { if ($item->getParentId()) { $and = ' AND parentId = ' . (int) $item->getParentId(); } else { $and = ' AND parentId IS NULL'; } $item->setOrder($model->getTable()->getAdapter()->fetchOne('SELECT IFNULL(MAX(`order`), 0) + 1 FROM MenuItems WHERE menuId = ' . (int) $menuId . $and)); } try { $model->save($item); if (isset($post['btnApply'])) { $redirectResponse = new RedirectResponse(route(\null, ['action' => 'add-item', 'id' => $item->getId()])); } else { $redirectResponse = new RedirectResponse(route(\null, ['action' => 'items', 'id' => \null])); } return $redirectResponse->withFlash('Информацията е записана'); } catch (\Exception $e) { if ($item->getId()) { $redirectResponse = new RedirectResponse(route(\null, ['action' => 'add-item', 'id' => $item->getId()])); } else { $redirectResponse = new RedirectResponse(route(\null, ['action' => 'items', 'id' => \null])); } return $redirectResponse->withFlash(env('development') ? $e->getMessage() : 'Възникна грешка. Опитайте по-късно', 'danger'); } } } $this->view->assign('menu', $menu); $this->view->assign('item', $item); $this->view->assign('form', $form); }
public function brandsAction() { $filters = parent::handleFilters(); if ($filters instanceof Response) { return $filters; } $form = new Form(package_path('Brands', 'Resources/forms/admin/reports-brands-filters.php')); $form->populate($filters); $brands = array(); $brandImages = array(); if (isset($filters['brandId'])) { $brandsModel = new Brands(); $brandsModel->addWhere('name', $filters['brandId']); if (isset($filters['date']) && $filters['date']) { try { $date = new \DateTime($filters['date']); $statusDate = $date->format('Y-m-d'); //$brandsModel->addWhere(new Expr('statusDate <= "' . $brandsModel->getAdapter()->quote($statusDate) . '"')); } catch (\Exception $e) { } } $brandsRows = $brandsModel->getItems(); foreach ($brandsRows as $brandRow) { if (!isset($brands[$brandRow['countryId']])) { $brands[$brandRow['countryId']] = array(); } $brands[$brandRow['countryId']][$brandRow['typeId']] = $brandRow; if (!isset($brandImages[$brandRow['typeId']])) { if ($brandRow->getThumb()) { $brandImages[$brandRow['typeId']] = array('path' => $brandRow->getThumb(), 'image' => 'uploads/brands/thumbs/' . $brandRow->getId() . '.' . pathinfo($brandRow->getImage(), PATHINFO_EXTENSION), 'real' => 'uploads/brands/' . $brandRow->getId() . '.' . pathinfo($brandRow->getImage(), PATHINFO_EXTENSION)); } } } } if (empty($brands)) { return ['form' => $form, 'brands' => $brands]; } $currentCurrency = null; if (isset($filters['currency'])) { $currencyModel = new Currencies(); $currentCurrency = $currencyModel->find((int) $filters['currency']); } $nomContinents = new Continents(); $continents = $nomContinents->fetchCachedPairs(array('active' => 1), null, array('id' => 'ASC')); $nomTypes = new Types(); $types = $nomTypes->fetchCachedPairs(['active' => 1], null, ['id' => 'ASC']); $nomCountries = new Countries(); $nomCountries->addWhere('active', '1'); $nomCountries->addOrder('name', 'ASC'); $countriesRows = $nomCountries->getItems(); $countries = array(); $populations = array(); foreach ($countriesRows as $countryRow) { if (empty($countryRow['continentId'])) { continue; } /** * Създаване на списъци от държави за континент */ if (!isset($countries[$countryRow['continentId']])) { $countries[$countryRow['continentId']] = array(); } $countries[$countryRow['continentId']][$countryRow['id']] = $countryRow; /** * Изчисляване на популацията за континент */ if (!isset($populations[$countryRow['continentId']])) { $populations[$countryRow['continentId']] = 0; } $populations[$countryRow['continentId']] += $countryRow['population']; } $nomStatus = new Statuses(); $statuses = $nomStatus->fetchCachedPairs(); $nomStatus->resetSelect(true); $statusesColors = $nomStatus->fetchCachedPairs(null, array('id', 'color')); return ['form' => $form, 'continents' => $continents, 'populations' => $populations, 'types' => $types, 'countries' => $countries, 'brands' => $brands, 'brandImages' => $brandImages, 'statuses' => $statuses, 'statusesColors' => $statusesColors, 'filters' => $filters, 'currentCurrency' => $currentCurrency]; }
public function loginAction() { if (identity()) { return new RedirectResponse(route('admin', [], \true)); } $form = new Form(package_path('UserManagement', 'Resources/forms/admin/login.php')); if ($this->request->isPost()) { $data = $this->request->getPost(); if ($form->isValid($data)) { $usersModel = new Users(); if ($usersModel->login($data['username'], $data['password'])) { if (($backTo = $this->request->getParam('backTo')) !== \null) { return new RedirectResponse(urldecode($backTo)); } else { return new RedirectResponse(route('admin', [], \true)); } } else { $form->password->addError('Невалидни данни'); } } } return ['form' => $form]; }