app->accountManager->get($request->header->account), $this->app->dbPool, $this->app->unitId, $this->app->appId ); $navView = new NavigationView($this->app->l11nManager, $request, $response); $navView->setTemplate('/Modules/Navigation/Theme/Backend/mid'); $navView->nav = $nav->nav; $navView->parent = $pageId; return $navView; } /** * Create mid navigation * * @param int $pageId Page/parent Id for navigation * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * * @return NavigationView * * @since 1.0.0 * @codeCoverageIgnore */ public function createNavigationMidSub(int $pageId, RequestAbstract $request, ResponseAbstract $response) : NavigationView { $nav = Navigation::getInstance( $request, $this->app->accountManager->get($request->header->account), $this->app->dbPool, $this->app->unitId, $this->app->appId ); $navView = new NavigationView($this->app->l11nManager, $request, $response); $navView->setTemplate('/Modules/Navigation/Theme/Backend/mid-sub'); $navView->nav = $nav->nav; $navView->parent = $pageId; return $navView; } /** * Create mid navigation * * @param int $pageId Page/parent Id for navigation * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * * @return NavigationView * * @since 1.0.0 * @codeCoverageIgnore */ public function createNavigationMidSide(int $pageId, RequestAbstract $request, ResponseAbstract $response) : NavigationView { $nav = Navigation::getInstance( $request, $this->app->accountManager->get($request->header->account), $this->app->dbPool, $this->app->unitId, $this->app->appId ); $navView = new NavigationView($this->app->l11nManager, $request, $response); $navView->setTemplate('/Modules/Navigation/Theme/Backend/mid-side'); $navView->nav = $nav->nav; $navView->parent = $pageId; return $navView; } /** * Get basic navigation view * * Usually used for 'top' and 'side' navigation (= root level navigation) * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * * @return NavigationView * * @since 1.0.0 * @codeCoverageIgnore */ public function getView(RequestAbstract $request, ResponseAbstract $response) : NavigationView { $navObj = Navigation::getInstance( $request, $this->app->accountManager->get($request->header->account), $this->app->dbPool, $this->app->unitId, $this->app->appId ); $nav = new NavigationView($this->app->l11nManager, $request, $response); $nav->nav = $navObj->nav; $unread = []; foreach ($this->receiving as $receiving) { $unread[$receiving] = $this->app->moduleManager->get($receiving)->openNav($request->header->account); } $nav->data['unread'] = $unread; return $nav; } /** * Load navigation language * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * * @return void * * @since 1.0.0 * @codeCoverageIgnore */ public function loadLanguage(RequestAbstract $request, ResponseAbstract $response) : void { $languages = $this->app->moduleManager->getLanguageFiles($request); $langCode = $response->header->l11n->language; // Add application navigation $languages[] = '/Web/' . ($this->app->appName) . '/lang/Navigation'; foreach ($languages as $path) { $path = __DIR__ . '/../../..' . $path . '.' . $langCode . '.lang.php'; if (!\is_file($path)) { continue; } /** @noinspection PhpIncludeInspection */ $lang = include $path; $this->app->l11nManager->loadLanguage($langCode, 'Navigation', $lang); } } /** * @param int $pageId Page/parent Id for navigation * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * * @return NavigationView * * @since 1.0.0 * @codeCoverageIgnore */ public function createNavigationSplash(int $pageId, RequestAbstract $request, ResponseAbstract $response) : NavigationView { $nav = Navigation::getInstance( $request, $this->app->accountManager->get($request->header->account), $this->app->dbPool, $this->app->unitId, $this->app->appId ); $navView = new NavigationView($this->app->l11nManager, $request, $response); $navView->setTemplate('/Modules/Navigation/Theme/Backend/splash'); $navView->nav = $nav->nav; $navView->parent = $pageId; return $navView; } /** * Method which generates the module settings view. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param array $data Generic data * * @return RenderableInterface Response can be rendered * * @since 1.0.0 */ public function viewModuleSettings(RequestAbstract $request, ResponseAbstract $response, array $data = []) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); $view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1000105001, $request, $response); $id = $request->getDataString('id') ?? ''; /** @var \Model\Setting[] $settings */ $settings = SettingMapper::getAll()->where('module', $id)->executeGetArray(); if (!empty($settings)) { $view->data['settings'] = \is_array($settings) ? $settings : [$settings]; } $navigation = NavElementMapper::getAll()->executeGetArray(); $view->data['navigation'] = $navigation; $view->setTemplate('/Modules/' . static::NAME . '/Admin/Settings/Theme/Backend/settings'); return $view; } /** * Method which generates a navigation settings view. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param array $data Generic data * * @return RenderableInterface Response can be rendered * * @since 1.0.0 */ public function viewModuleNavElementSettings(RequestAbstract $request, ResponseAbstract $response, array $data = []) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); $view->setTemplate('/Modules/' . static::NAME . '/Admin/Settings/Theme/Backend/settings-nav'); $view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1000105001, $request, $response); $view->data['nav-element'] = NavElementMapper::get()->where('id', (int) $request->getData('nav'))->execute(); return $view; } /** * Method which generates the module profile view. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param array $data Generic data * * @return RenderableInterface Response can be rendered * * @since 1.0.0 */ public function viewModuleNavigationList(RequestAbstract $request, ResponseAbstract $response, array $data = []) : RenderableInterface { $view = new View($this->app->l11nManager, $request, $response); $view->setTemplate('/Modules/Navigation/Admin/Settings/Theme/Backend/modules-nav-list'); $view->data['nav'] = $this->app->moduleManager->get('Navigation')->createNavigationMid(1000105001, $request, $response); $module = $request->getDataString('id') ?? ''; $view->data['module'] = $module; $query = NavElementMapper::getAll() ->where('from', $module); if ($module === 'Navigation') { $query = $query->where('from', '0', connector: 'OR'); } $activeNavElements = $query->execute(); $view->data['navs'] = $activeNavElements; $apps = AppMapper::getAll()->executeGetArray(); $view->data['apps'] = $apps; return $view; } }