/** * Setup navigation. * * @return void */ protected function _setupNavigation() { $path = explode('/', $this->request->get('_url')); $activeItem = ''; $limit = count($path) > 3 ? 1 : 0; for ($i = 1, $count = count($path); $i < $count - $limit && $i < 3; $i++) { $activeItem .= $path[$i] . '/'; } $activeItem = substr($activeItem, 0, -1); $menuItems = ['admin' => ['href' => 'admin', 'title' => 'Dashboard', 'prepend' => '<i class="glyphicon glyphicon-home"></i>'], 'users' => ['title' => 'Manage', 'items' => ['admin/users' => ['title' => 'Users and Roles', 'href' => 'admin/users', 'prepend' => '<i class="glyphicon glyphicon-user"></i>'], 'admin/pages' => ['title' => 'Pages', 'href' => 'admin/pages', 'prepend' => '<i class="glyphicon glyphicon-list-alt"></i>'], 'admin/menus' => ['title' => 'Menus', 'href' => 'admin/menus', 'prepend' => '<i class="glyphicon glyphicon-th-list"></i>'], 'admin/languages' => ['title' => 'Languages', 'href' => 'admin/languages', 'prepend' => '<i class="glyphicon glyphicon-globe"></i>'], 'admin/files' => ['title' => 'Files', 'href' => 'admin/files', 'prepend' => '<i class="glyphicon glyphicon-file"></i>'], 'admin/packages' => ['title' => 'Packages', 'href' => 'admin/packages', 'prepend' => '<i class="glyphicon glyphicon-th"></i>']]], 'settings' => ['title' => 'Settings', 'items' => ['admin/settings' => ['title' => 'System', 'href' => 'admin/settings', 'prepend' => '<i class="glyphicon glyphicon-cog"></i>'], 'admin/settings/performance' => ['title' => 'Performance', 'href' => 'admin/performance', 'prepend' => '<i class="glyphicon glyphicon-signal"></i>'], 'admin/access' => ['title' => 'Access Rights', 'href' => 'admin/access', 'prepend' => '<i class="glyphicon glyphicon-lock"></i>']]]]; $modules = Package::findByType(Manager::PACKAGE_TYPE_MODULE, 1); if ($modules->count()) { $modulesMenuItems = []; foreach ($modules as $module) { if ($module->is_system) { continue; } $href = 'admin/module/' . $module->name; $modulesMenuItems[$href] = ['title' => $module->title, 'href' => $href, 'prepend' => '<i class="glyphicon glyphicon-th-large"></i>']; } if (!empty($modulesMenuItems)) { $menuItems['modules'] = ['title' => 'Modules', 'items' => $modulesMenuItems]; } } $navigation = new Navigation(); $navigation->setItems($menuItems)->setActiveItem($activeItem)->setListClass('nav nav-categories')->setDropDownItemClass('nav-category')->setDropDownItemMenuClass('nav')->setDropDownIcon('')->setEnabledDropDownHighlight(false); $this->view->headerNavigation = $navigation; }
/** * Initialize form. * * @return void */ public function initialize() { $this->setLegend('Widget information'); $modules = Package::findByType(Manager::PACKAGE_TYPE_MODULE, true); $widgetModules = [null => 'No']; foreach ($modules as $module) { $widgetModules[$module->name] = $module->title; } $this->addSelect('module', 'Is related to module?', null, $widgetModules)->addCheckbox('is_paginated', 'Is Paginated?', 'If this enabled - widget will has additional control enabled for allowed per page items count selection in admin form', 1, false, 0)->addCheckbox('is_acl_controlled', 'Is ACL controlled?', 'If this enabled - widget will has additional control enabled for allowed roles selection in admin form', 1, false, 0)->addSelect('admin_form', 'Admin form', 'Does this widget have some controlling form?', [null => 'No', 'action' => 'Action', 'form_class' => 'Form class'])->addText('form_class', 'Form class', 'Enter existing form class')->addCheckbox('enabled', 'Enabled?', null, 1, false, 0); $this->setCondition('form_class', 'admin_form', 'form_class'); }
/** * Create package from metadata file. * * @param string $file File path to metadata. * * @return Package */ protected function _package($file) { $package = new Package(); $package->fromJson(file_get_contents(ROOT_PATH . Config::CONFIG_METADATA_PACKAGES . '/' . $file)); return $package; }
/** * Save finish form action. * * @return ResponseInterface * * @Route("/save", methods={"GET"}, name="install-save") */ public function saveAction() { if (!$this->_isPassed('finishAction')) { return $this->_selectAction(); } foreach ($this->_actions as $action) { $this->_setPassed($action, false); } $this->_setupDatabase(); $this->config->offsetSet('installed', true); $packageManager = new PackageManager(Package::find()); $packageManager->generateMetadata(); $assetsManager = new AssetManager($this->getDI(), false); $assetsManager->clear(true, PUBLIC_PATH . '/themes/' . Settings::getSetting('system_theme')); return $this->response->redirect(); }
/** * Validates the form. * * @param array $data Data to validate. * @param bool $skipEntityCreation Skip entity creation. * * @return boolean */ public function isValid($data = null, $skipEntityCreation = true) { if (!$data) { $data = $this->getDI()->getRequest()->getPost(); } // Check package location. $packageManager = new Manager(); $path = $packageManager->getPackageLocation($data['type']); if (!is_writable($path)) { $this->addError('Can not create package. Package location isn\'t writable: ' . $path); $this->setValues($data); return false; } // Also check that config file is writable. if (!is_writable(ROOT_PATH . Config::CONFIG_PATH)) { $this->addError('Configuration file isn\'t writable...'); $this->setValues($data); return false; } if (isset($data['type']) && $data['type'] == 'widget' && !$this->hasEntity('widget')) { $this->addEntity(new WidgetModel(), 'widget'); } if (!parent::isValid($data, $skipEntityCreation)) { return false; } // Check package existence. $id = $this->getEntity()->id; $condition = "type='{$data['type']}' AND name='{$data['name']}'" . ($id ? " AND id!='{$id}'" : ''); if (Package::findFirst($condition)) { $this->addError('Package with that name already exist!'); return false; } // Check widget existence. if ($this->hasEntity('widget')) { $name = ucfirst($data['name']); $id = $this->getEntity('widget')->id; $condition = "module='{$data['module']}' AND name='{$name}'" . ($id ? " AND id!='{$id}'" : ''); if (WidgetModel::findFirst($condition)) { $this->addError('Widget with that name already exist!'); return false; } } return true; }
/** * Update packages metadata. * * @return void */ protected function _updateMetadata() { $packageManager = new Manager(); $packageManager->generateMetadata(Package::find()); }