From a596251d6b8b27ad5ea626d1939adab6866dfe61 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Thu, 22 Jun 2017 18:15:33 +0200 Subject: [PATCH] avoid marking two sections as active when they have the same name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit … in both personal and admin. --- .../Controller/AdminSettingsController.php | 2 +- settings/Controller/CommonSettingsTrait.php | 25 +++++++++++-------- .../Controller/PersonalSettingsController.php | 3 ++- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/settings/Controller/AdminSettingsController.php b/settings/Controller/AdminSettingsController.php index 834534f95a..33d9cb2c2a 100644 --- a/settings/Controller/AdminSettingsController.php +++ b/settings/Controller/AdminSettingsController.php @@ -65,7 +65,7 @@ class AdminSettingsController extends Controller { */ public function index($section) { $this->navigationManager->setActiveEntry('admin'); - return $this->getIndexResponse($section); + return $this->getIndexResponse('admin', $section); } /** diff --git a/settings/Controller/CommonSettingsTrait.php b/settings/Controller/CommonSettingsTrait.php index 4854f40586..ac316aa7f4 100644 --- a/settings/Controller/CommonSettingsTrait.php +++ b/settings/Controller/CommonSettingsTrait.php @@ -36,14 +36,14 @@ trait CommonSettingsTrait { * @param string $currentSection * @return array */ - private function getNavigationParameters($currentSection) { + private function getNavigationParameters($currentType, $currentSection) { $templateParameters = [ - 'personal' => $this->formatPersonalSections($currentSection), + 'personal' => $this->formatPersonalSections($currentType, $currentSection), 'admin' => [] ]; if(\OC_User::isAdminUser(\OC_User::getUser())) { - $templateParameters['admin'] = $this->formatAdminSections($currentSection); + $templateParameters['admin'] = $this->formatAdminSections($currentType, $currentSection); } return [ @@ -51,7 +51,7 @@ trait CommonSettingsTrait { ]; } - protected function formatSections($sections, $currentSection, $type) { + protected function formatSections($sections, $currentSection, $type, $currentType) { $templateParameters = []; /** @var \OCP\Settings\ISection[] $prioritizedSections */ foreach($sections as $prioritizedSections) { @@ -70,10 +70,13 @@ trait CommonSettingsTrait { $icon = $section->getIcon(); } + $active = $section->getID() === $currentSection + && $type === $currentType; + $templateParameters[] = [ 'anchor' => $section->getID(), 'section-name' => $section->getName(), - 'active' => $section->getID() === $currentSection, + 'active' => $active, 'icon' => $icon, ]; } @@ -81,16 +84,16 @@ trait CommonSettingsTrait { return $templateParameters; } - protected function formatPersonalSections($currentSections) { + protected function formatPersonalSections($currentType, $currentSections) { $sections = $this->settingsManager->getPersonalSections(); - $templateParameters = $this->formatSections($sections, $currentSections, 'personal'); + $templateParameters = $this->formatSections($sections, $currentSections, 'personal', $currentType); return $templateParameters; } - protected function formatAdminSections($currentSections) { + protected function formatAdminSections($currentType, $currentSections) { $sections = $this->settingsManager->getAdminSections(); - $templateParameters = $this->formatSections($sections, $currentSections, 'admin'); + $templateParameters = $this->formatSections($sections, $currentSections, 'admin', $currentType); return $templateParameters; } @@ -111,9 +114,9 @@ trait CommonSettingsTrait { return ['content' => $html]; } - private function getIndexResponse($section) { + private function getIndexResponse($type, $section) { $templateParams = []; - $templateParams = array_merge($templateParams, $this->getNavigationParameters($section)); + $templateParams = array_merge($templateParams, $this->getNavigationParameters($type, $section)); $templateParams = array_merge($templateParams, $this->getSettings($section)); return new TemplateResponse('settings', 'settings/frame', $templateParams); diff --git a/settings/Controller/PersonalSettingsController.php b/settings/Controller/PersonalSettingsController.php index 3ccef025a7..7e2d62961b 100644 --- a/settings/Controller/PersonalSettingsController.php +++ b/settings/Controller/PersonalSettingsController.php @@ -57,7 +57,8 @@ class PersonalSettingsController extends Controller { */ public function index($section) { $this->navigationManager->setActiveEntry('personal'); - return $this->getIndexResponse($section); + return $this->getIndexResponse('personal', $section); + } /**