. */ namespace SP\Modules\Web\Controllers; use SP\Core\Acl\Acl; use SP\Core\Events\Event; use SP\Core\Language; use SP\Modules\Web\Controllers\Helpers\TabsHelper; use SP\Mvc\View\Components\DataTab; use SP\Mvc\View\Components\SelectItemAdapter; /** * Class UserSettingsManagerController * * @package web\Controllers */ final class UserSettingsManagerController extends ControllerBase { /** * @var TabsHelper */ protected $tabsHelper; public function indexAction() { $this->getTabs(); } /** * Returns a tabbed grid with items */ protected function getTabs() { $this->tabsHelper = $this->dic->get(TabsHelper::class); $this->tabsHelper->addTab($this->getUserPreferences()); $this->eventDispatcher->notifyEvent('show.userSettings', new Event($this)); $this->tabsHelper->renderTabs(Acl::getActionRoute(Acl::USERSETTINGS), $this->request->analyzeInt('tabIndex', 0)); $this->view(); } /** * @return DataTab */ private function getUserPreferences() { $template = clone $this->view; $template->setBase('usersettings'); $template->addTemplate('general'); $userData = $this->session->getUserData(); $userPreferences = $userData->getPreferences(); $template->assign('langs', SelectItemAdapter::factory(Language::getAvailableLanguages())->getItemsFromArraySelected([$userPreferences->getLang() ?: $this->configData->getSiteLang()])); $template->assign('themes', SelectItemAdapter::factory($this->theme->getThemesAvailable())->getItemsFromArraySelected([$userPreferences->getTheme() ?: $this->configData->getSiteTheme()])); $template->assign('chkAccountLink', $userPreferences->isAccountLink() ? 'checked="checked"' : ''); $template->assign('resultsPerPage', $userPreferences->getResultsPerPage() ?: $this->configData->getAccountCount()); $template->assign('chkSortViews', $userPreferences->isSortViews() ? 'checked="checked"' : ''); $template->assign('chkTopNavbar', $userPreferences->isTopNavbar() ? 'checked="checked"' : ''); $template->assign('chkOptionalActions', $userPreferences->isOptionalActions() ? 'checked="checked"' : ''); $template->assign('chkResultsAsCards', $userPreferences->isResultsAsCards() ? 'checked="checked"' : ''); $template->assign('route', 'userSettingsGeneral/save'); return new DataTab(__('Preferencias'), $template); } /** * @throws \Psr\Container\ContainerExceptionInterface * @throws \Psr\Container\NotFoundExceptionInterface * @throws \SP\Services\Auth\AuthException */ protected function initialize() { $this->checkLoggedIn(); } }