/**
  * 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;
 }
Beispiel #2
0
 /**
  * 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');
 }
Beispiel #3
0
 /**
  * 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;
 }
Beispiel #4
0
 /**
  * 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();
 }
Beispiel #5
0
 /**
  * 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());
 }