summaryrefslogtreecommitdiffstats
path: root/settings/Controller
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@arthur-schiwon.de>2016-08-08 23:31:26 +0200
committerArthur Schiwon <blizzz@arthur-schiwon.de>2016-08-09 18:05:09 +0200
commitceeb44bd04f2606bea4c94107850157719127581 (patch)
tree7ecb64a3ca929a7b3a721cfed65c65bf0c61831d /settings/Controller
parentedeb41ccaff186b116852df4caf8df144db682c8 (diff)
downloadnextcloud-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.php114
-rw-r--r--settings/Controller/CheckSetupController.php2
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')
);
}