diff options
Diffstat (limited to 'apps/theming/lib/Settings')
-rw-r--r-- | apps/theming/lib/Settings/Admin.php | 26 | ||||
-rw-r--r-- | apps/theming/lib/Settings/AdminSection.php (renamed from apps/theming/lib/Settings/Section.php) | 20 | ||||
-rw-r--r-- | apps/theming/lib/Settings/Personal.php | 93 | ||||
-rw-r--r-- | apps/theming/lib/Settings/PersonalSection.php | 100 |
4 files changed, 213 insertions, 26 deletions
diff --git a/apps/theming/lib/Settings/Admin.php b/apps/theming/lib/Settings/Admin.php index 045f0b3fe77..6caa174d99b 100644 --- a/apps/theming/lib/Settings/Admin.php +++ b/apps/theming/lib/Settings/Admin.php @@ -36,22 +36,20 @@ use OCP\IURLGenerator; use OCP\Settings\IDelegatedSettings; class Admin implements IDelegatedSettings { - /** @var IConfig */ - private $config; - /** @var IL10N */ - private $l; - /** @var ThemingDefaults */ - private $themingDefaults; - /** @var IURLGenerator */ - private $urlGenerator; - /** @var ImageManager */ - private $imageManager; + private string $appName; + private IConfig $config; + private IL10N $l; + private ThemingDefaults $themingDefaults; + private IURLGenerator $urlGenerator; + private ImageManager $imageManager; - public function __construct(IConfig $config, + public function __construct(string $appName, + IConfig $config, IL10N $l, ThemingDefaults $themingDefaults, IURLGenerator $urlGenerator, ImageManager $imageManager) { + $this->appName = $appName; $this->config = $config; $this->l = $l; $this->themingDefaults = $themingDefaults; @@ -86,14 +84,14 @@ class Admin implements IDelegatedSettings { 'privacyUrl' => $this->themingDefaults->getPrivacyUrl(), ]; - return new TemplateResponse('theming', 'settings-admin', $parameters, ''); + return new TemplateResponse($this->appName, 'settings-admin', $parameters, ''); } /** * @return string the section ID, e.g. 'sharing' */ public function getSection(): string { - return 'theming'; + return $this->appName; } /** @@ -113,7 +111,7 @@ class Admin implements IDelegatedSettings { public function getAuthorizedAppConfig(): array { return [ - 'theming' => '/.*/', + $this->appName => '/.*/', ]; } } diff --git a/apps/theming/lib/Settings/Section.php b/apps/theming/lib/Settings/AdminSection.php index fe2cc9243bb..2fcc81a9279 100644 --- a/apps/theming/lib/Settings/Section.php +++ b/apps/theming/lib/Settings/AdminSection.php @@ -26,17 +26,13 @@ use OCP\IL10N; use OCP\IURLGenerator; use OCP\Settings\IIconSection; -class Section implements IIconSection { - /** @var IL10N */ - private $l; - /** @var IURLGenerator */ - private $url; +class AdminSection implements IIconSection { + private string $appName; + private IL10N $l; + private IURLGenerator $url; - /** - * @param IURLGenerator $url - * @param IL10N $l - */ - public function __construct(IURLGenerator $url, IL10N $l) { + public function __construct(string $appName, IURLGenerator $url, IL10N $l) { + $this->appName = $appName; $this->url = $url; $this->l = $l; } @@ -48,7 +44,7 @@ class Section implements IIconSection { * @returns string */ public function getID() { - return 'theming'; + return $this->appName; } /** @@ -76,6 +72,6 @@ class Section implements IIconSection { * {@inheritdoc} */ public function getIcon() { - return $this->url->imagePath('theming', 'app-dark.svg'); + return $this->url->imagePath($this->appName, 'app-dark.svg'); } } diff --git a/apps/theming/lib/Settings/Personal.php b/apps/theming/lib/Settings/Personal.php new file mode 100644 index 00000000000..6dd865b9cf6 --- /dev/null +++ b/apps/theming/lib/Settings/Personal.php @@ -0,0 +1,93 @@ +<?php +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * @copyright Copyright (c) 2019 Janis Köhr <janiskoehr@icloud.com> + * + * @author Christoph Wurst <christoph@winzerhof-wurst.at> + * @author John Molakvoæ <skjnldsv@protonmail.com> + * @author Roeland Jago Douma <roeland@famdouma.nl> + * + * @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 OCA\Theming\Service\ThemesService; +use OCP\AppFramework\Http\TemplateResponse; +use OCP\AppFramework\Services\IInitialState; +use OCP\IConfig; +use OCP\IUserSession; +use OCP\Settings\ISettings; +use OCP\Util; + +class Personal implements ISettings { + + protected string $appName; + private IConfig $config; + private IUserSession $userSession; + private ThemesService $themesService; + private IInitialState $initialStateService; + + public function __construct(string $appName, + IConfig $config, + IUserSession $userSession, + ThemesService $themesService, + IInitialState $initialStateService) { + $this->appName = $appName; + $this->config = $config; + $this->userSession = $userSession; + $this->themesService = $themesService; + $this->initialStateService = $initialStateService; + } + + public function getForm(): TemplateResponse { + $themes = array_map(function($theme) { + return [ + 'id' => $theme->getId(), + 'type' => $theme->getType(), + 'title' => $theme->getTitle(), + 'enableLabel' => $theme->getEnableLabel(), + 'description' => $theme->getDescription(), + 'enabled' => $this->themesService->isEnabled($theme), + ]; + }, $this->themesService->getThemes()); + + $this->initialStateService->provideInitialState('themes', array_values($themes)); + Util::addScript($this->appName, 'theming-settings'); + + return new TemplateResponse($this->appName, 'settings-personal'); + } + + /** + * @return string the section ID, e.g. 'sharing' + * @since 9.1 + */ + public function getSection(): string { + return $this->appName; + } + + /** + * @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. + * + * E.g.: 70 + * @since 9.1 + */ + public function getPriority(): int { + return 40; + } +} diff --git a/apps/theming/lib/Settings/PersonalSection.php b/apps/theming/lib/Settings/PersonalSection.php new file mode 100644 index 00000000000..821708e3970 --- /dev/null +++ b/apps/theming/lib/Settings/PersonalSection.php @@ -0,0 +1,100 @@ +<?php +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author Christoph Wurst <christoph@winzerhof-wurst.at> + * @author John Molakvoæ <skjnldsv@protonmail.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 PersonalSection implements IIconSection { + + /** @var string */ + protected $appName; + + /** @var IURLGenerator */ + private $urlGenerator; + + /** @var IL10N */ + private $l; + + /** + * Personal Section constructor. + * + * @param string $appName + * @param IURLGenerator $urlGenerator + * @param IL10N $l + */ + public function __construct(string $appName, + IURLGenerator $urlGenerator, + IL10N $l) { + $this->appName = $appName; + $this->urlGenerator = $urlGenerator; + $this->l = $l; + } + + /** + * returns the relative path to an 16*16 icon describing the section. + * e.g. '/core/img/places/files.svg' + * + * @returns string + * @since 13.0.0 + */ + public function getIcon() { + return $this->urlGenerator->imagePath($this->appName, 'app-dark.svg'); + } + + /** + * returns the ID of the section. It is supposed to be a lower case string, + * e.g. 'ldap' + * + * @returns string + * @since 9.1 + */ + public function getID() { + return $this->appName; + } + + /** + * returns the translated name as it should be displayed, e.g. 'LDAP / AD + * integration'. Use the L10N service to translate it. + * + * @return string + * @since 9.1 + */ + public function getName() { + return $this->l->t('Appearance and accessibility'); + } + + /** + * @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 + * @since 9.1 + */ + public function getPriority() { + return 15; + } +} |