From 575b3f9ff8cb06e949a2acbb136a6e0d14731eab Mon Sep 17 00:00:00 2001
From: Roeland Jago Douma <rullzer@users.noreply.github.com>
Date: Tue, 19 Mar 2019 22:24:16 +0100
Subject: [PATCH] Revert "Where is your data?"

---
 apps/theming/lib/Settings/Section.php         |  83 ++++++++++++
 apps/theming/tests/ServicesTest.php           |   4 +
 apps/theming/tests/Settings/SectionTest.php   |  77 +++++++++++
 core/css/styles.scss                          |   8 +-
 lib/composer/composer/autoload_classmap.php   |   2 -
 lib/composer/composer/autoload_static.php     |   2 -
 lib/private/Settings/Manager.php              |   5 -
 .../Settings/Personal/PersonalInfo.php        |  44 +------
 lib/private/Settings/Theming/ServerInfo.php   | 121 ------------------
 .../ServerInfoSettingsController.php          |  67 ----------
 settings/css/_server-info.scss                |  99 --------------
 settings/css/_where-is-your-data.scss         |  10 --
 settings/css/settings.scss                    |  13 --
 settings/img/theming-dark.svg                 |   1 -
 settings/js/admin.js                          | 103 ---------------
 settings/routes.php                           |   1 -
 .../templates/settings/admin/server-info.php  | 114 -----------------
 .../personal/partials/where-is-your-data.php  |  76 -----------
 .../settings/personal/personal.info.php       |  10 +-
 .../ServerInfoSettingsControllerTest.php      |  94 --------------
 tests/lib/Settings/ManagerTest.php            |  12 +-
 21 files changed, 180 insertions(+), 766 deletions(-)
 create mode 100644 apps/theming/lib/Settings/Section.php
 create mode 100644 apps/theming/tests/Settings/SectionTest.php
 delete mode 100644 lib/private/Settings/Theming/ServerInfo.php
 delete mode 100644 settings/Controller/ServerInfoSettingsController.php
 delete mode 100644 settings/css/_server-info.scss
 delete mode 100644 settings/css/_where-is-your-data.scss
 delete mode 100644 settings/img/theming-dark.svg
 delete mode 100644 settings/templates/settings/admin/server-info.php
 delete mode 100644 settings/templates/settings/personal/partials/where-is-your-data.php
 delete mode 100644 tests/Settings/Controller/ServerInfoSettingsControllerTest.php

diff --git a/apps/theming/lib/Settings/Section.php b/apps/theming/lib/Settings/Section.php
new file mode 100644
index 00000000000..9ec990ebe48
--- /dev/null
+++ b/apps/theming/lib/Settings/Section.php
@@ -0,0 +1,83 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Joas Schilling <coding@schilljs.com>
+ *
+ * @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 OCA\Theming\Settings;
+
+use OCP\IL10N;
+use OCP\IURLGenerator;
+use OCP\Settings\IIconSection;
+
+class Section implements IIconSection {
+	/** @var IL10N */
+	private $l;
+	/** @var IURLGenerator */
+	private $url;
+
+	/**
+	 * @param IURLGenerator $url
+	 * @param IL10N $l
+	 */
+	public function __construct(IURLGenerator $url, IL10N $l) {
+		$this->url = $url;
+		$this->l = $l;
+	}
+
+	/**
+	 * returns the ID of the section. It is supposed to be a lower case string,
+	 * e.g. 'ldap'
+	 *
+	 * @returns string
+	 */
+	public function getID() {
+		return 'theming';
+	}
+
+	/**
+	 * returns the translated name as it should be displayed, e.g. 'LDAP / AD
+	 * integration'. Use the L10N service to translate it.
+	 *
+	 * @return string
+	 */
+	public function getName() {
+		return $this->l->t('Theming');
+	}
+
+	/**
+	 * @return int whether the form should be rather on the top or bottom of
+	 * the settings navigation. The sections are arranged in ascending order of
+	 * the priority values. It is required to return a value between 0 and 99.
+	 *
+	 * E.g.: 70
+	 */
+	public function getPriority() {
+		return 30;
+	}
+
+	/**
+	 * {@inheritdoc}
+	 */
+	public function getIcon() {
+		return $this->url->imagePath('theming', 'app-dark.svg');
+	}
+}
diff --git a/apps/theming/tests/ServicesTest.php b/apps/theming/tests/ServicesTest.php
index baf7c6edc88..a46e28235f5 100644
--- a/apps/theming/tests/ServicesTest.php
+++ b/apps/theming/tests/ServicesTest.php
@@ -26,11 +26,13 @@ namespace OCA\Theming\Tests;
 use OCA\Theming\Capabilities;
 use OCA\Theming\Controller\ThemingController;
 use OCA\Theming\Settings\Admin;
+use OCA\Theming\Settings\Section;
 use OCA\Theming\ThemingDefaults;
 use OCA\Theming\Util;
 use OCP\AppFramework\App;
 use OCP\Capabilities\ICapability;
 use OCP\IL10N;
+use OCP\Settings\ISection;
 use OCP\Settings\ISettings;
 use Test\TestCase;
 
@@ -70,6 +72,8 @@ class ServicesTest extends TestCase  {
 			// Settings
 			[Admin::class],
 			[Admin::class, ISettings::class],
+			[Section::class],
+			[Section::class, ISection::class],
 		];
 	}
 
diff --git a/apps/theming/tests/Settings/SectionTest.php b/apps/theming/tests/Settings/SectionTest.php
new file mode 100644
index 00000000000..09abf9e34f5
--- /dev/null
+++ b/apps/theming/tests/Settings/SectionTest.php
@@ -0,0 +1,77 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
+ *
+ * @author Joas Schilling <coding@schilljs.com>
+ * @author Lukas Reschke <lukas@statuscode.ch>
+ *
+ * @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 OCA\Theming\Tests\Settings;
+
+use OCA\Theming\Settings\Section;
+use OCP\IL10N;
+use OCP\IURLGenerator;
+use Test\TestCase;
+
+class SectionTest extends TestCase {
+	/** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */
+	private $url;
+	/** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */
+	private $l;
+	/** @var Section */
+	private $section;
+
+	public function setUp() {
+		parent::setUp();
+		$this->url = $this->createMock(IURLGenerator::class);
+		$this->l = $this->createMock(IL10N::class);
+
+		$this->section = new Section(
+			$this->url,
+			$this->l
+		);
+	}
+
+	public function testGetID() {
+		$this->assertSame('theming', $this->section->getID());
+	}
+
+	public function testGetName() {
+		$this->l
+			->expects($this->once())
+			->method('t')
+			->with('Theming')
+			->willReturn('Theming');
+
+		$this->assertSame('Theming', $this->section->getName());
+	}
+
+	public function testGetPriority() {
+		$this->assertSame(30, $this->section->getPriority());
+	}
+
+	public function testGetIcon() {
+		$this->url->expects($this->once())
+			->method('imagePath')
+			->with('theming', 'app-dark.svg')
+			->willReturn('icon');
+
+		$this->assertSame('icon', $this->section->getIcon());
+	}
+}
diff --git a/core/css/styles.scss b/core/css/styles.scss
index 688593bd9a6..e0659d1db61 100644
--- a/core/css/styles.scss
+++ b/core/css/styles.scss
@@ -60,11 +60,11 @@ a {
 	* {
 		cursor: pointer;
 	}
+}
 
-	&.external {
-		margin: 0 3px;
-		text-decoration: underline;
-	}
+a.external {
+	margin: 0 3px;
+	text-decoration: underline;
 }
 
 input {
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php
index 91ecf88dab3..a0fe19e0118 100644
--- a/lib/composer/composer/autoload_classmap.php
+++ b/lib/composer/composer/autoload_classmap.php
@@ -1089,7 +1089,6 @@ return array(
     'OC\\Settings\\Controller\\LogSettingsController' => $baseDir . '/settings/Controller/LogSettingsController.php',
     'OC\\Settings\\Controller\\MailSettingsController' => $baseDir . '/settings/Controller/MailSettingsController.php',
     'OC\\Settings\\Controller\\PersonalSettingsController' => $baseDir . '/settings/Controller/PersonalSettingsController.php',
-    'OC\\Settings\\Controller\\ServerInfoSettingsController' => $baseDir . '/settings/Controller/ServerInfoSettingsController.php',
     'OC\\Settings\\Controller\\TwoFactorSettingsController' => $baseDir . '/settings/Controller/TwoFactorSettingsController.php',
     'OC\\Settings\\Controller\\UsersController' => $baseDir . '/settings/Controller/UsersController.php',
     'OC\\Settings\\Hooks' => $baseDir . '/settings/Hooks.php',
@@ -1101,7 +1100,6 @@ return array(
     'OC\\Settings\\Personal\\Security' => $baseDir . '/lib/private/Settings/Personal/Security.php',
     'OC\\Settings\\Personal\\ServerDevNotice' => $baseDir . '/lib/private/Settings/Personal/ServerDevNotice.php',
     'OC\\Settings\\Section' => $baseDir . '/lib/private/Settings/Section.php',
-    'OC\\Settings\\Theming\\ServerInfo' => $baseDir . '/lib/private/Settings/Theming/ServerInfo.php',
     'OC\\Setup' => $baseDir . '/lib/private/Setup.php',
     'OC\\Setup\\AbstractDatabase' => $baseDir . '/lib/private/Setup/AbstractDatabase.php',
     'OC\\Setup\\MySQL' => $baseDir . '/lib/private/Setup/MySQL.php',
diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php
index 9bd287f302d..3dcca438cb6 100644
--- a/lib/composer/composer/autoload_static.php
+++ b/lib/composer/composer/autoload_static.php
@@ -1119,7 +1119,6 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
         'OC\\Settings\\Controller\\LogSettingsController' => __DIR__ . '/../../..' . '/settings/Controller/LogSettingsController.php',
         'OC\\Settings\\Controller\\MailSettingsController' => __DIR__ . '/../../..' . '/settings/Controller/MailSettingsController.php',
         'OC\\Settings\\Controller\\PersonalSettingsController' => __DIR__ . '/../../..' . '/settings/Controller/PersonalSettingsController.php',
-        'OC\\Settings\\Controller\\ServerInfoSettingsController' => __DIR__ . '/../../..' . '/settings/Controller/ServerInfoSettingsController.php',
         'OC\\Settings\\Controller\\TwoFactorSettingsController' => __DIR__ . '/../../..' . '/settings/Controller/TwoFactorSettingsController.php',
         'OC\\Settings\\Controller\\UsersController' => __DIR__ . '/../../..' . '/settings/Controller/UsersController.php',
         'OC\\Settings\\Hooks' => __DIR__ . '/../../..' . '/settings/Hooks.php',
@@ -1131,7 +1130,6 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
         'OC\\Settings\\Personal\\Security' => __DIR__ . '/../../..' . '/lib/private/Settings/Personal/Security.php',
         'OC\\Settings\\Personal\\ServerDevNotice' => __DIR__ . '/../../..' . '/lib/private/Settings/Personal/ServerDevNotice.php',
         'OC\\Settings\\Section' => __DIR__ . '/../../..' . '/lib/private/Settings/Section.php',
-        'OC\\Settings\\Theming\\ServerInfo' => __DIR__ . '/../../..' . '/lib/private/Settings/Theming/ServerInfo.php',
         'OC\\Setup' => __DIR__ . '/../../..' . '/lib/private/Setup.php',
         'OC\\Setup\\AbstractDatabase' => __DIR__ . '/../../..' . '/lib/private/Setup/AbstractDatabase.php',
         'OC\\Setup\\MySQL' => __DIR__ . '/../../..' . '/lib/private/Setup/MySQL.php',
diff --git a/lib/private/Settings/Manager.php b/lib/private/Settings/Manager.php
index 3f72557d8ec..42ec16e223b 100644
--- a/lib/private/Settings/Manager.php
+++ b/lib/private/Settings/Manager.php
@@ -192,7 +192,6 @@ class Manager implements IManager {
 			1 => [new Section('server', $this->l->t('Basic settings'), 0, $this->url->imagePath('core', 'actions/settings-dark.svg'))],
 			5 => [new Section('sharing', $this->l->t('Sharing'), 0, $this->url->imagePath('core', 'actions/share.svg'))],
 			10 => [new Section('security', $this->l->t('Security'), 0, $this->url->imagePath('core', 'actions/password.svg'))],
-			30 => [new Section('theming', $this->l->t('Theming'), 0, $this->url->imagePath('settings', 'theming-dark.svg'))],
 			50 => [new Section('groupware', $this->l->t('Groupware'), 0, $this->url->imagePath('core', 'places/contacts.svg'))],
 			98 => [new Section('additional', $this->l->t('Additional settings'), 0, $this->url->imagePath('core', 'actions/settings-dark.svg'))],
 		];
@@ -238,10 +237,6 @@ class Manager implements IManager {
 			$form = $this->container->query(Admin\Security::class);
 			$forms[$form->getPriority()] = [$form];
 		}
-		if ($section === 'theming') {
-			$form = $this->container->query(Theming\ServerInfo::class);
-			$forms[$form->getPriority()] = [$form];
-		}
 		if ($section === 'sharing') {
 			/** @var ISettings $form */
 			$form = $this->container->query(Admin\Sharing::class);
diff --git a/lib/private/Settings/Personal/PersonalInfo.php b/lib/private/Settings/Personal/PersonalInfo.php
index 74969806540..98991ce6d40 100644
--- a/lib/private/Settings/Personal/PersonalInfo.php
+++ b/lib/private/Settings/Personal/PersonalInfo.php
@@ -26,7 +26,6 @@
 namespace OC\Settings\Personal;
 
 use OC\Accounts\AccountManager;
-use OC\Settings\Theming\ServerInfo;
 use OCA\FederatedFileSharing\AppInfo\Application;
 use OCP\App\IAppManager;
 use OCP\AppFramework\Http\TemplateResponse;
@@ -39,7 +38,6 @@ use OCP\IUser;
 use OCP\IUserManager;
 use OCP\L10N\IFactory;
 use OCP\Settings\ISettings;
-use OCP\Encryption\IManager as EncryptionManager;
 
 class PersonalInfo implements ISettings {
 
@@ -57,18 +55,14 @@ class PersonalInfo implements ISettings {
 	private $l10nFactory;
 	/** @var IL10N */
 	private $l;
-	/** @var EncryptionManager */
-	private $encryptionManager;
 
 	/**
 	 * @param IConfig $config
 	 * @param IUserManager $userManager
 	 * @param IGroupManager $groupManager
 	 * @param AccountManager $accountManager
-	 * @param IAppManager $appManager
 	 * @param IFactory $l10nFactory
 	 * @param IL10N $l
-	 * @param EncryptionManager $encryptionManager
 	 */
 	public function __construct(
 		IConfig $config,
@@ -77,8 +71,7 @@ class PersonalInfo implements ISettings {
 		AccountManager $accountManager,
 		IAppManager $appManager,
 		IFactory $l10nFactory,
-		IL10N $l,
-		EncryptionManager $encryptionManager
+		IL10N $l
 	) {
 		$this->config = $config;
 		$this->userManager = $userManager;
@@ -87,7 +80,6 @@ class PersonalInfo implements ISettings {
 		$this->appManager = $appManager;
 		$this->l10nFactory = $l10nFactory;
 		$this->l = $l;
-		$this->encryptionManager = $encryptionManager;
 	}
 
 	/**
@@ -143,38 +135,10 @@ class PersonalInfo implements ISettings {
 			'twitterScope' => $userData[AccountManager::PROPERTY_TWITTER]['scope'],
 			'twitterVerification' => $userData[AccountManager::PROPERTY_TWITTER]['verified'],
 			'groups' => $this->getGroups($user),
-		] + $this->getWhereIsYourDataParams() + $messageParameters + $languageParameters + $localeParameters;
+		] + $messageParameters + $languageParameters + $localeParameters;
 
-		return new TemplateResponse('settings', 'settings/personal/personal.info', $parameters, '');
-	}
-
-	/**
-	 * Returns the "where is your data" template params.
-	 *
-	 * @return array
-	 */
-	private function getWhereIsYourDataParams(): array {
-
-		$adminContactConfigId = $this->config->getSystemValue(ServerInfo::SETTING_PROVIDER_ADMIN_CONTACT);
-		$adminContact = $this->userManager->get($adminContactConfigId);
-
-		$params = [
-			'dataLocation' => $this->config->getSystemValue(ServerInfo::SETTING_LOCATION),
-			'provider' => $this->config->getSystemValue(ServerInfo::SETTING_PROVIDER),
-			'providerLink' => $this->config->getSystemValue(ServerInfo::SETTING_PROVIDER_WEBSITE),
-			'providerPrivacyLink' => $this->config->getSystemValue(ServerInfo::SETTING_PROVIDER_PRIVACY_LINK),
-			'encryptionEnabled' => $this->encryptionManager->isEnabled(),
-			'adminName' => $adminContact !== null ? $adminContact->getDisplayName() : '',
-			'adminMail' => $adminContact !== null ? $adminContact->getEMailAddress() : ''
-		];
-
-		$params['show_where_is_your_data_section'] = empty($params['dataLocation']) === false
-			|| empty($params['provider']) === false
-			|| $params['encryptionEnabled'] === true
-			|| empty($params['adminName']) === false;
-
-		return $params;
 
+		return new TemplateResponse('settings', 'settings/personal/personal.info', $parameters, '');
 	}
 
 	/**
@@ -238,7 +202,7 @@ class PersonalInfo implements ISettings {
 		$userLang = $languages['commonlanguages'][$userLangIndex];
 		// search in the other languages
 		if ($userLangIndex === false) {
-			$userLangIndex = array_search($userConfLang, array_column($languages['languages'], 'code'));
+			$userLangIndex = array_search($userConfLang, array_column($languages['languages'], 'code'));		
 			$userLang = $languages['languages'][$userLangIndex];
 		}
 		// if user language is not available but set somehow: show the actual code as name
diff --git a/lib/private/Settings/Theming/ServerInfo.php b/lib/private/Settings/Theming/ServerInfo.php
deleted file mode 100644
index ecd2fc418fc..00000000000
--- a/lib/private/Settings/Theming/ServerInfo.php
+++ /dev/null
@@ -1,121 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2018 Michael Weimann <mail@michael-weimann.eu>
- *
- * @author Michael Weimann <mail@michael-weimann.eu>
- *
- * @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\Theming;
-
-use OCP\AppFramework\Http\TemplateResponse;
-use OCP\IConfig;
-use OCP\IGroupManager;
-use OCP\IUser;
-use OCP\Settings\ISettings;
-
-/**
- * This class describes the server info settings.
- */
-class ServerInfo implements ISettings {
-
-	const SETTING_LOCATION = 'serverinfo.location';
-	const SETTING_PROVIDER = 'serverinfo.provider';
-	const SETTING_PROVIDER_WEBSITE = 'serverinfo.provider.website';
-	const SETTING_PROVIDER_PRIVACY_LINK = 'serverinfo.provider.privacylink';
-	const SETTING_PROVIDER_ADMIN_CONTACT = 'serverinfo.admincontact';
-
-	/**
-	 * @var IConfig
-	 */
-	private $config;
-
-	/**
-	 * @var IGroupManager
-	 */
-	private $groupManager;
-
-	/**
-	 * ServerInfo constructor.
-	 *
-	 * @param IConfig $config
-	 * @param IGroupManager $groupManager
-	 */
-	public function __construct(IConfig $config, IGroupManager $groupManager) {
-		$this->config = $config;
-		$this->groupManager = $groupManager;
-	}
-
-	/**
-	 * @return TemplateResponse
-	 */
-	public function getForm(): TemplateResponse {
-		$parameters = [
-			'location' => $this->config->getSystemValue(self::SETTING_LOCATION),
-			'provider' => $this->config->getSystemValue(self::SETTING_PROVIDER),
-			'providerWebsite' => $this->config->getSystemValue(self::SETTING_PROVIDER_WEBSITE),
-			'providerPrivacyLink' => $this->config->getSystemValue(self::SETTING_PROVIDER_PRIVACY_LINK),
-			'adminUsers' => $this->getAdminListValues(),
-			'adminContact' => $this->config->getSystemValue(self::SETTING_PROVIDER_ADMIN_CONTACT),
-		];
-		return new TemplateResponse('settings', 'settings/admin/server-info', $parameters, '');
-	}
-
-	/**
-	 * Returns the admin list values.
-	 *
-	 * @return array[] An array or arrays with the keys 'id' and 'displayName'
-	 */
-	private function getAdminListValues(): array {
-		$adminGroup = $this->groupManager->get('admin');
-		$users = $adminGroup->getUsers();
-
-		$users = array_map(function(IUser $user) {
-			return [
-				'id' => $user->getUID(),
-				'displayName' => $user->getDisplayName()
-			];
-		}, $users);
-
-		usort($your_data, function(array $a, array $b) {
-			return strcmp($a['displayName'], $b['displayName']);
-		});
-
-		return $users;
-	}
-
-	/**
-	 * Returns the server info section id.
-	 *
-	 * @return string
-	 */
-	public function getSection(): string {
-		return 'theming';
-	}
-
-	/**
-	 * Returns the server info settings priority.
-	 *
-	 * @return int whether the form should be rather on the top or bottom of
-	 * the admin section. The forms are arranged in ascending order of the
-	 * priority values. It is required to return a value between 0 and 100.
-	 */
-	public function getPriority(): int {
-		return 10;
-	}
-
-}
diff --git a/settings/Controller/ServerInfoSettingsController.php b/settings/Controller/ServerInfoSettingsController.php
deleted file mode 100644
index a5c80211712..00000000000
--- a/settings/Controller/ServerInfoSettingsController.php
+++ /dev/null
@@ -1,67 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2018 Michael Weimann <mail@michael-weimann.eu>
- *
- * @author Michael Weimann <mail@michael-weimann.eu>
- *
- * @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 OC\Settings\Theming\ServerInfo;
-use OCP\AppFramework\Controller;
-use OCP\IConfig;
-use OCP\IRequest;
-
-/**
- * This controller handles server info settings requests.
- */
-class ServerInfoSettingsController extends Controller {
-
-	/**
-	 * @var IConfig
-	 */
-	private $config;
-
-	/**
-	 * ServerInfoSettingsController constructor.
-	 *
-	 * @param IConfig $config
-	 */
-	public function __construct($appName, IRequest $request, IConfig $config) {
-		parent::__construct($appName, $request);
-		$this->config = $config;
-	}
-
-	public function storeServerInfo(
-		string $location,
-		string $provider,
-		string $providerWebsite,
-		string $providerPrivacyLink,
-		string $adminContact
-	): void {
-		$configs = [
-			ServerInfo::SETTING_LOCATION => $location,
-			ServerInfo::SETTING_PROVIDER => $provider,
-			ServerInfo::SETTING_PROVIDER_WEBSITE => $providerWebsite,
-			ServerInfo::SETTING_PROVIDER_PRIVACY_LINK => $providerPrivacyLink,
-			ServerInfo::SETTING_PROVIDER_ADMIN_CONTACT => $adminContact
-		];
-		$this->config->setSystemValues($configs);
-	}
-
-}
diff --git a/settings/css/_server-info.scss b/settings/css/_server-info.scss
deleted file mode 100644
index 1073cab2954..00000000000
--- a/settings/css/_server-info.scss
+++ /dev/null
@@ -1,99 +0,0 @@
-/* Copyright (c) 2018 Michael Weimann <mail@michael-weimann.eu
- This file is licensed under the Affero General Public License version 3 or later.
- See the COPYING-README file. */
-
-.server-info-settings {
-	.label {
-		display: block;
-	}
-
-	.form-input {
-		margin-bottom: 10px;
-		width: 100%;
-	}
-
-	.margin-bottom {
-		margin-bottom: 15px;
-	}
-
-	.form-actions {
-		text-align: right;
-
-		.button {
-			align-items: center;
-			display: inline-flex;
-			margin: 0;
-			transition: background-color 500ms linear;
-
-			.default-label,
-			.working-label,
-			.success-label,
-			.error-label {
-				align-items: center;
-				gap: 4px;
-			}
-
-			.working-label,
-			.success-label,
-			.error-label {
-				display: none;
-			}
-		}
-
-		.button-working,
-		.button-success,
-		.button-error {
-			background-color: $color-background-dark;
-			color: $color-text-lighter;
-			opacity: 1;
-
-			.default-label {
-				display: none;
-			}
-		}
-
-		.button-working {
-			.working-label {
-				display: inline-flex;
-			}
-		}
-
-		.button-success {
-			background-color: $color-success;
-			border-color: darken($color-success, 10%);
-			color: $color-primary-text-dark;
-
-			.success-label {
-				display: inline-flex;
-			}
-		}
-
-		.button-error {
-			background-color: $color-error;
-			border-color: darken($color-error, 10%);
-			color: $color-primary-text-dark;
-
-			.error-label {
-				display: inline-flex;
-			}
-		}
-	}
-
-	@media (min-width: 1000px) {
-		.label {
-			display: inline-block;
-			text-align: right;
-			width: 175px;
-		}
-
-		.form-input {
-			margin-left: 5px;
-			width: 225px;
-		}
-
-		.form-actions {
-			margin-left: 180px;
-			width: 225px;
-		}
-	}
-}
diff --git a/settings/css/_where-is-your-data.scss b/settings/css/_where-is-your-data.scss
deleted file mode 100644
index fc71bb0a023..00000000000
--- a/settings/css/_where-is-your-data.scss
+++ /dev/null
@@ -1,10 +0,0 @@
-/* Copyright (c) 2018 Michael Weimann <mail@michael-weimann.eu
- This file is licensed under the Affero General Public License version 3 or later.
- See the COPYING-README file. */
-
-.where-is-your-data {
-	// @todo replace by common link style as soon as available
-	a:not(.icon-info) {
-		border-bottom: 1px dotted;
-	}
-}
diff --git a/settings/css/settings.scss b/settings/css/settings.scss
index 90b01ca9ee7..42d6f285aac 100644
--- a/settings/css/settings.scss
+++ b/settings/css/settings.scss
@@ -2,9 +2,6 @@
  This file is licensed under the Affero General Public License version 3 or later.
  See the COPYING-README file. */
 
-@import "server-info";
-@import "where-is-your-data";
-
 input {
 	&#openid, &#webdav {
 		width: 20em;
@@ -101,7 +98,6 @@ input {
 
 #personal-settings-avatar-container {
 	display: inline-grid;
-  	grid-row: span 3;
 	grid-template-columns: 1fr;
 	grid-template-rows: 2fr 1fr;
 	vertical-align: top;
@@ -182,15 +178,6 @@ select {
 		grid-template-columns: 1fr;
 		#personal-settings-avatar-container {
 			grid-template-rows: 1fr;
-
-			// swap "Where is my data" and "Detail"
-			*:nth-child(2) {
-				order: 3;
-			}
-
-			*:nth-child(3) {
-				order: 2;
-			}
 		}
 		.personal-settings-container {
 			grid-template-columns: 1fr 1fr;
diff --git a/settings/img/theming-dark.svg b/settings/img/theming-dark.svg
deleted file mode 100644
index adf97966c41..00000000000
--- a/settings/img/theming-dark.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M10.707 11.412l-.587-.587-.03-.03a.513.513 0 0 1-.074-.526L13.07 3.4l-1.5-1.498-.15.15-.708-.706.505-.505a.538.538 0 0 1 .224-.128c.04-.01.05-.01.087-.016h.087c.04.006.05.006.086.016.072.02.134.055.192.1.74.676 1.42 1.415 2.127 2.124a.503.503 0 0 1 .103.556l-3.053 6.87.344.343.49-.49 3.01 3.01a1.192 1.192 0 0 1-1.685 1.686l-3.012-3.01.49-.488zm-.533-10.217a.986.986 0 0 0-1.396 0l-7.582 7.58a.99.99 0 0 0 0 1.398l1.397 1.396a.986.986 0 0 0 1.396 0l7.58-7.583a.988.988 0 0 0 0-1.396l-1.396-1.395z" fill="#000"/></svg>
diff --git a/settings/js/admin.js b/settings/js/admin.js
index 0ca9b6162e2..ae6b2262c44 100644
--- a/settings/js/admin.js
+++ b/settings/js/admin.js
@@ -315,107 +315,4 @@ $(document).ready(function(){
 	if (document.getElementById('security-warning') !== null) {
 		setupChecks();
 	}
-
-	// server info
-
-	var serverInfoForm = $('#server-info-form');
-	var serverInfoWorkingTimeoutHandle;
-	var serverInfoSubmitButton = $('#server-info-submit-button');
-
-	/**
-	 * Sets the server info submit button state to default.
-	 */
-	function setServerInfoButtonDefault() {
-		serverInfoSubmitButton.removeClass('button-success');
-		serverInfoSubmitButton.removeClass('button-error');
-		serverInfoSubmitButton.removeClass('button-working');
-	}
-
-	/**
-	 * Sets the server info submit button state to working.
-	 */
-	function setServerInfoButtonWorking() {
-		serverInfoSubmitButton.removeClass('button-success');
-		serverInfoSubmitButton.removeClass('button-error');
-		serverInfoSubmitButton.addClass('button-working');
-	}
-
-	/**
-	 * Sets the server info submit button state to success.
-	 */
-	function setServerInfoButtonSuccess() {
-		serverInfoSubmitButton.removeClass('button-error');
-		serverInfoSubmitButton.removeClass('button-working');
-		serverInfoSubmitButton.addClass('button-success');
-	}
-
-	/**
-	 * Sets the server info submit button state to error.
-	 */
-	function setServerInfoButtonError() {
-		serverInfoSubmitButton.removeClass('button-success');
-		serverInfoSubmitButton.removeClass('button-working');
-		serverInfoSubmitButton.addClass('button-error');
-	}
-
-	/**
-	 * Clears the server info working timeout, if present.
-	 */
-	function clearServerInfoWorkingTimeout() {
-		if (serverInfoWorkingTimeoutHandle) {
-			clearTimeout(serverInfoWorkingTimeoutHandle);
-			serverInfoWorkingTimeoutHandle = undefined;
-		}
-	}
-
-	/**
-	 * Unlocks the server info form, e.g. removing readonly from inputs.
-	 */
-	function unlockForm() {
-		serverInfoForm.find('input, select').prop('readonly', false);
-		serverInfoSubmitButton.prop('disabled', false);
-	}
-
-	/**
-	 * Resets the submit button state one of the form elements is changed.
-	 */
-	serverInfoForm.find('input, select').on('keyup change', function() {
-		setServerInfoButtonDefault();
-	});
-
-	/**
-	 * Handles the server info form submit.
-	 */
-	serverInfoForm.on('submit', function(event) {
-		event.stopImmediatePropagation();
-		event.preventDefault();
-
-		serverInfoForm.find('input, select').prop('readonly', true);
-		serverInfoSubmitButton.prop('disabled', true);
-
-		clearServerInfoWorkingTimeout();
-
-		// start show spinner only if request takes longer than one second
-		serverInfoWorkingTimeoutHandle = setTimeout(function() {
-			setServerInfoButtonWorking();
-		}, 1000);
-
-		$.ajax({
-			url: OC.generateUrl('/settings/serverinfo'),
-			type: 'POST',
-			data: serverInfoForm.serialize(),
-			success: function() {
-				clearServerInfoWorkingTimeout();
-				setServerInfoButtonSuccess();
-				unlockForm();
-				serverInfoSubmitButton.blur();
-			},
-			error: function() {
-				clearServerInfoWorkingTimeout();
-				setServerInfoButtonError();
-				unlockForm();
-				serverInfoSubmitButton.blur();
-			}
-		});
-	});
 });
diff --git a/settings/routes.php b/settings/routes.php
index 277bcca484f..7c8120f9be4 100644
--- a/settings/routes.php
+++ b/settings/routes.php
@@ -83,7 +83,6 @@ $application->registerRoutes($this, [
 		['name' => 'ChangePassword#changeUserPassword', 'url' => '/settings/users/changepassword', 'verb' => 'POST'],
 		['name' => 'TwoFactorSettings#index', 'url' => '/settings/api/admin/twofactorauth', 'verb' => 'GET'],
 		['name' => 'TwoFactorSettings#update', 'url' => '/settings/api/admin/twofactorauth', 'verb' => 'PUT'],
-		['name' => 'ServerInfoSettings#storeServerInfo', 'url' => '/settings/serverinfo', 'verb' => 'POST'],
 	]
 ]);
 
diff --git a/settings/templates/settings/admin/server-info.php b/settings/templates/settings/admin/server-info.php
deleted file mode 100644
index ac6cf48ee80..00000000000
--- a/settings/templates/settings/admin/server-info.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2018 Michael Weimann <mail@michael-weimann.eu>
- *
- * @author Michael Weimann <mail@michael-weimann.eu>
- *
- * @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/>.
- */
-
-/**
- * This file contains the server info settings template.
- */
-
-/** @var array $_ */
-
-?>
-
-<div class="section server-info-settings">
-	<h2><?php p($l->t('Server info')); ?></h2>
-	<p class="settings-hint">
-		<?php p($l->t('Enter common info about your Nextcloud instance here. These info are visible to all users.')) ?>
-	</p>
-	<form id="server-info-form" name="server-info-form">
-		<div class="margin-bottom">
-			<label class="label" for="location"><?php p($l->t('Server location')); ?></label>
-			<input
-				class="form-input"
-				id="location"
-				name="location"
-				type="text"
-				maxlength="100"
-				value="<?php p($_['location']); ?>"
-				placeholder="<?php p($l->t('country')); ?>">
-		</div>
-		<div>
-			<label class="label" for="provider"><?php p($l->t('Service provider')); ?></label>
-			<input
-				class="form-input"
-				id="provider"
-				name="provider"
-				type="text"
-				maxlength="100"
-				value="<?php p($_['provider']); ?>"
-				placeholder="<?php p($l->t('company or person')); ?>">
-		</div>
-		<div>
-			<label class="label" for="providerWebsite"><?php p($l->t('Provider website')); ?></label>
-			<input
-				class="form-input"
-				id="providerWebsite"
-				name="providerWebsite"
-				type="url"
-				maxlength="200"
-				value="<?php p($_['providerWebsite']); ?>"
-				placeholder="<?php p($l->t('link to website')); ?>">
-		</div>
-		<div class="margin-bottom">
-			<label class="label" for="providerPrivacyLink"><?php p($l->t('Link to privacy policy')); ?></label>
-			<input
-				class="form-input"
-				id="providerPrivacyLink"
-				name="providerPrivacyLink"
-				type="url"
-				maxlength="200"
-				value="<?php p($_['providerPrivacyLink']); ?>"
-				placeholder="<?php p($l->t('link to privacy policy')); ?>">
-		</div>
-		<div class="margin-bottom">
-			<label class="label" for="adminContact"><?php p($l->t('Admin contact')); ?></label>
-			<select class="form-input" name="adminContact" id="adminContact">
-				<option value=""><?php p($l->t('choose admin contact')); ?></option>
-				<?php foreach($_['adminUsers'] as $adminUser): ?>
-					<option
-						value="<?php p($adminUser['id']); ?>"
-						<?php if ($adminUser['id'] === $_['adminContact']): ?>selected="selected"<?php endif; ?>>
-						<?php p($adminUser['displayName']); ?>
-					</option>
-				<?php endforeach; ?>
-			</select>
-		</div>
-		<div class="form-actions">
-			<button id="server-info-submit-button" class="button">
-				<span class="default-label">
-					<?php p($l->t('save')); ?>
-				</span>
-				<span class="working-label">
-					<span class="icon-loading-small-dark"></span>
-					<?php p($l->t('saving')); ?>
-				</span>
-				<span class="success-label">
-					<span class="icon-checkmark-white"></span>
-					<?php p($l->t('saved')); ?>
-				</span>
-				<span class="error-label">
-					<span class="icon-error-white"></span>
-					<?php p($l->t('error saving settings')); ?>
-				</span>
-			</button>
-		</div>
-	</form>
-</div>
diff --git a/settings/templates/settings/personal/partials/where-is-your-data.php b/settings/templates/settings/personal/partials/where-is-your-data.php
deleted file mode 100644
index 56f261f9c00..00000000000
--- a/settings/templates/settings/personal/partials/where-is-your-data.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<div class="personal-settings-setting-box personal-settings-group-box section where-is-your-data">
-	<h3>
-		<?php p($l->t('Where is your data?')); ?>
-		<a
-			target="_blank"
-			rel="noreferrer noopener"
-			class="icon-info"
-			title=""
-			href="https://nextcloud.com/yourdata/"
-			data-original-title="Open documentation"></a>
-	</h3>
-	<?php if (empty($_['dataLocation']) === false): ?>
-	<div class="personal-info icon-address">
-		<p>
-			<?php echo $l->t('Your data is located in <b>%s</b>.', [$_['dataLocation']]); ?>
-		</p>
-	</div>
-	<?php endif; ?>
-
-	<?php if (empty($_['provider']) === false): ?>
-	<div class="personal-info icon-home">
-		<p>
-			<?php
-				if (empty($_['providerLink']) === false) {
-					echo $l->t('Your provider is %s%s%s.', [
-						'<a href="' . $_['providerLink'] . '" target="_blank" title="" rel="noreferrer noopener">',
-						$_['provider'],
-						'</a>'
-					]);
-				} else {
-					echo $l->t('Your provider is %s.', [$_['provider']]);
-				}
-			?>
-			<?php
-				if (empty($_['providerPrivacyLink']) === false) {
-					echo $l->t('Read the %sprivacy policy%s now.', [
-						'<a href="' . $_['providerPrivacyLink'] . '" target="_blank" title="" rel="noreferrer noopener">',
-						'</a>'
-					]);
-				}
-			?>
-		</p>
-	</div>
-	<?php endif; ?>
-
-	<?php if ($_['encryptionEnabled'] === true): ?>
-		<div class="personal-info icon-password">
-			<p>
-				<?php echo $l->t(
-					'Your files are encrypted with %sserver side encryption%s.',
-					[
-						'<a href="https://nextcloud.com/blog/encryption-in-nextcloud/" target="_blank" title="" rel="noreferrer noopener">',
-						'</a>'
-					]
-				); ?>
-			</p>
-		</div>
-	<?php endif; ?>
-
-	<?php if (empty($_['adminName']) === false): ?>
-	<div class="personal-info icon-user-admin">
-		<p>
-			<?php echo $l->t(
-				'%s%s%s is your admin. If you have any issues, %scontact them%s.',
-				[
-					'<a href="mailto:' . $_['adminMail'] . '" target="_blank" title="" rel="noreferrer noopener">',
-					$_['adminName'],
-					'</a>',
-					'<a href="mailto:' . $_['adminMail'] . '" target="_blank" title="" rel="noreferrer noopener">',
-					'</a>'
-				]
-			); ?>
-		</p>
-	</div>
-	<?php endif; ?>
-</div>
diff --git a/settings/templates/settings/personal/personal.info.php b/settings/templates/settings/personal/personal.info.php
index a6e3eaf345b..d873f6821b8 100644
--- a/settings/templates/settings/personal/personal.info.php
+++ b/settings/templates/settings/personal/personal.info.php
@@ -95,11 +95,6 @@ script('settings', [
 				<progress value="<?php p($_['usage_relative']); ?>" max="100"<?php if($_['usage_relative'] > 80): ?> class="warn" <?php endif; ?>></progress>
 			</div>
 		</div>
-		<?php
-			if ($_['show_where_is_your_data_section']) {
-				include __DIR__ . '/partials/where-is-your-data.php';
-			}
-		?>
 	</div>
 
 	<div class="personal-settings-container">
@@ -380,4 +375,9 @@ script('settings', [
 		</div>
 		<span class="msg"></span>
 	</div>
+
+	<div id="personal-settings-group-container">
+
+	</div>
+
 </div>
diff --git a/tests/Settings/Controller/ServerInfoSettingsControllerTest.php b/tests/Settings/Controller/ServerInfoSettingsControllerTest.php
deleted file mode 100644
index 8d2083d0acb..00000000000
--- a/tests/Settings/Controller/ServerInfoSettingsControllerTest.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-/**
- * @copyright Copyright (c) 2018 Michael Weimann <mail@michael-weimann.eu>
- *
- * @author Michael Weimann <mail@michael-weimann.eu>
- *
- * @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 Settings\Controller;
-
-use OC\Settings\Theming\ServerInfo;
-use OC\Settings\Controller\ServerInfoSettingsController;
-use OCP\IConfig;
-use OCP\IRequest;
-use PHPUnit\Framework\MockObject\MockObject;
-use Test\TestCase;
-
-/**
- * This class provides tests for the server info settings controller.
- */
-class ServerInfoSettingsControllerTest extends TestCase {
-
-	/**
-	 * @var IConfig|MockObject
-	 */
-	private $config;
-
-	/**
-	 * @var ServerInfoSettingsController
-	 */
-	private $controller;
-
-	/**
-	 * Does the test setup.
-	 */
-	protected function setUp() {
-		parent::setUp();
-
-		$request = $this->getMockBuilder(IRequest::class)->getMock();
-		/* @var IRequest|MockObject $request */
-		$this->config = $this->getMockBuilder(IConfig::class)->getMock();
-		$this->controller = new ServerInfoSettingsController(
-			'settings',
-			$request,
-			$this->config
-		);
-	}
-
-	/**
-	 * Tests that the handler passes the params to the config.
-	 */
-	public function testStoreServerInfo() {
-
-		$location = 'test-location';
-		$provider = 'test-provider';
-		$providerWebsite = 'https://example.com/';
-		$providerPrivacyLink = 'https://example.com/privacy';
-		$adminContact = 'testuser';
-
-		$this->config->expects($this->once())
-			->method('setSystemValues')
-			->with([
-				ServerInfo::SETTING_LOCATION => $location,
-				ServerInfo::SETTING_PROVIDER => $provider,
-				ServerInfo::SETTING_PROVIDER_WEBSITE => $providerWebsite,
-				ServerInfo::SETTING_PROVIDER_PRIVACY_LINK => $providerPrivacyLink,
-				ServerInfo::SETTING_PROVIDER_ADMIN_CONTACT => $adminContact,
-			]);
-
-		$this->controller->storeServerInfo(
-			$location,
-			$provider,
-			$providerWebsite,
-			$providerPrivacyLink,
-			$adminContact
-		);
-
-	}
-
-}
diff --git a/tests/lib/Settings/ManagerTest.php b/tests/lib/Settings/ManagerTest.php
index 8323452934f..b82fb5bc3ca 100644
--- a/tests/lib/Settings/ManagerTest.php
+++ b/tests/lib/Settings/ManagerTest.php
@@ -72,14 +72,13 @@ class ManagerTest extends TestCase {
 
 		$this->manager->registerSection('admin', \OCA\WorkflowEngine\Settings\Section::class);
 
-		$this->url->expects($this->exactly(7))
+		$this->url->expects($this->exactly(6))
 			->method('imagePath')
 			->willReturnMap([
 				['settings', 'admin.svg', '0'],
 				['core', 'actions/settings-dark.svg', '1'],
 				['core', 'actions/share.svg', '2'],
 				['core', 'actions/password.svg', '3'],
-				['settings', 'theming-dark.svg', '6'],
 				['core', 'places/contacts.svg', '5'],
 				['settings', 'help.svg', '4'],
 			]);
@@ -89,7 +88,6 @@ class ManagerTest extends TestCase {
 			1 => [new Section('server', 'Basic settings', 0, '1')],
 			5 => [new Section('sharing', 'Sharing', 0, '2')],
 			10 => [new Section('security', 'Security', 0, '3')],
-			30 => [new Section('theming', 'Theming', 0, '6')],
 			50 => [new Section('groupware', 'Groupware', 0, '5')],
 			55 => [\OC::$server->query(\OCA\WorkflowEngine\Settings\Section::class)],
 			98 => [new Section('additional', 'Additional settings', 0, '1')],
@@ -126,14 +124,13 @@ class ManagerTest extends TestCase {
 			->method('t')
 			->will($this->returnArgument(0));
 
-		$this->url->expects($this->exactly(7))
+		$this->url->expects($this->exactly(6))
 			->method('imagePath')
 			->willReturnMap([
 				['settings', 'admin.svg', '0'],
 				['core', 'actions/settings-dark.svg', '1'],
 				['core', 'actions/share.svg', '2'],
 				['core', 'actions/password.svg', '3'],
-				['settings', 'theming-dark.svg', '6'],
 				['core', 'places/contacts.svg', '5'],
 				['settings', 'help.svg', '4'],
 			]);
@@ -143,7 +140,6 @@ class ManagerTest extends TestCase {
 			1 => [new Section('server', 'Basic settings', 0, '1')],
 			5 => [new Section('sharing', 'Sharing', 0, '2')],
 			10 => [new Section('security', 'Security', 0, '3')],
-			30 => [new Section('theming', 'Theming', 0, '6')],
 			50 => [new Section('groupware', 'Groupware', 0, '5')],
 			98 => [new Section('additional', 'Additional settings', 0, '1')],
 		], $this->manager->getAdminSections());
@@ -213,7 +209,7 @@ class ManagerTest extends TestCase {
 		$this->manager->registerSection('personal', \OCA\WorkflowEngine\Settings\Section::class);
 		$this->manager->registerSection('admin', \OCA\WorkflowEngine\Settings\Section::class);
 
-		$this->url->expects($this->exactly(10))
+		$this->url->expects($this->exactly(9))
 			->method('imagePath')
 			->willReturnMap([
 				['core', 'actions/info.svg', '1'],
@@ -223,7 +219,6 @@ class ManagerTest extends TestCase {
 				['core', 'actions/settings-dark.svg', '1'],
 				['core', 'actions/share.svg', '2'],
 				['core', 'actions/password.svg', '3'],
-				['settings', 'theming-dark.svg', '6'],
 				['core', 'places/contacts.svg', '5'],
 				['settings', 'help.svg', '4'],
 			]);
@@ -240,7 +235,6 @@ class ManagerTest extends TestCase {
 			1 => [new Section('server', 'Basic settings', 0, '1')],
 			5 => [new Section('sharing', 'Sharing', 0, '2')],
 			10 => [new Section('security', 'Security', 0, '3')],
-			30 => [new Section('theming', 'Theming', 0, '6')],
 			50 => [new Section('groupware', 'Groupware', 0, '5')],
 			55 => [\OC::$server->query(\OCA\WorkflowEngine\Settings\Section::class)],
 			98 => [new Section('additional', 'Additional settings', 0, '1')],
-- 
GitLab