diff options
author | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2016-08-08 23:31:26 +0200 |
---|---|---|
committer | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2016-08-09 18:05:09 +0200 |
commit | ceeb44bd04f2606bea4c94107850157719127581 (patch) | |
tree | 7ecb64a3ca929a7b3a721cfed65c65bf0c61831d /settings/Controller | |
parent | edeb41ccaff186b116852df4caf8df144db682c8 (diff) | |
download | nextcloud-server-ceeb44bd04f2606bea4c94107850157719127581.tar.gz nextcloud-server-ceeb44bd04f2606bea4c94107850157719127581.zip |
Initial work on Apps page split:
* interfaces for the Admin settings (IAdmin) and section (ISection)
* SettingsManager service
* example setup with LDAP app
Diffstat (limited to 'settings/Controller')
-rw-r--r-- | settings/Controller/AdminSettingsController.php | 114 | ||||
-rw-r--r-- | settings/Controller/CheckSetupController.php | 2 |
2 files changed, 115 insertions, 1 deletions
diff --git a/settings/Controller/AdminSettingsController.php b/settings/Controller/AdminSettingsController.php new file mode 100644 index 00000000000..68707addfe4 --- /dev/null +++ b/settings/Controller/AdminSettingsController.php @@ -0,0 +1,114 @@ +<?php +/** + * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OC\Settings\Controller; + +use Doctrine\DBAL\Connection; +use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\TemplateResponse; +use OC\Encryption\Manager as EncryptionManager; +use OCP\IConfig; +use OCP\IDBConnection; +use OCP\IL10N; +use OCP\INavigationManager; +use OCP\IRequest; +use OCP\IUserManager; +use OCP\Settings\IManager as ISettingsManager; + +/** + * @package OC\Settings\Controller + */ +class AdminSettingsController extends Controller { + + /** @var INavigationManager */ + private $navigationManager; + + /** @var ISettingsManager */ + private $settingsManager; + + public function __construct( + $appName, + IRequest $request, + INavigationManager $navigationManager, + IL10N $l, + IConfig $config, + EncryptionManager $encryptionManager, + IUserManager $userManager, + IDBConnection $db, + ISettingsManager $settingsManager + ) { + parent::__construct($appName, $request); + $this->navigationManager = $navigationManager; + $this->settingsManager = $settingsManager; + } + + /** + * @param string $section + * @return TemplateResponse + * + * @NoCSRFRequired + */ + public function index($section) { + $this->navigationManager->setActiveEntry('admin'); + + $templateParams = []; + $templateParams = array_merge($templateParams, $this->getNavigationParameters()); + $templateParams = array_merge($templateParams, $this->getSettings($section)); + + return new TemplateResponse('settings', 'admin/frame', $templateParams); + } + + public function form() { + + } + + private function getSettings($section) { + $settings = $this->settingsManager->getAdminSettings($section); + $html = ''; + foreach ($settings as $prioritizedSettings) { + foreach ($prioritizedSettings as $setting) { + /** @var \OCP\Settings\IAdmin $setting */ + $form = $setting->render(); + $html .= $form->fetchPage(); + } + } + return ['content' => $html]; + } + + private function getNavigationParameters() { + $a = 'anchor'; + $name = 'section-name'; + + $sections = $this->settingsManager->getAdminSections(); + $templateParameters = []; + foreach($sections as $prioritizedSections) { + foreach ($prioritizedSections as $section) { + $templateParameters[] = [$a => $section->getID(), $name => $section->getName()]; + } + } + + return [ + 'forms' => $templateParameters + ]; + } +} diff --git a/settings/Controller/CheckSetupController.php b/settings/Controller/CheckSetupController.php index 13e7e443621..0441c507f34 100644 --- a/settings/Controller/CheckSetupController.php +++ b/settings/Controller/CheckSetupController.php @@ -290,7 +290,7 @@ class CheckSetupController extends Controller { public function rescanFailedIntegrityCheck() { $this->checker->runInstanceVerification(); return new RedirectResponse( - $this->urlGenerator->linkToRoute('settings_admin') + $this->urlGenerator->linkToRoute('settings.AdminSettings.index') ); } |