diff options
author | greta <gretadoci@gmail.com> | 2022-08-29 15:11:41 +0200 |
---|---|---|
committer | Christopher Ng <chrng8@gmail.com> | 2022-09-14 20:17:01 +0000 |
commit | 02cc42d40ae7334609a3270ee1d16eec75098aa6 (patch) | |
tree | d6668a5a9834f70d300d0e3384ed7293dbd9b0c7 /apps/dashboard/lib | |
parent | bd03c7978537334822f1fc05049045d89cc56533 (diff) | |
download | nextcloud-server-02cc42d40ae7334609a3270ee1d16eec75098aa6.tar.gz nextcloud-server-02cc42d40ae7334609a3270ee1d16eec75098aa6.zip |
Move background settings from dashboard app to Appearance and accessibility settings
Signed-off-by: greta <gretadoci@gmail.com>
Signed-off-by: Christopher Ng <chrng8@gmail.com>
Diffstat (limited to 'apps/dashboard/lib')
-rw-r--r-- | apps/dashboard/lib/Controller/DashboardController.php | 72 | ||||
-rw-r--r-- | apps/dashboard/lib/Service/BackgroundService.php | 196 |
2 files changed, 0 insertions, 268 deletions
diff --git a/apps/dashboard/lib/Controller/DashboardController.php b/apps/dashboard/lib/Controller/DashboardController.php index 4d4f6a5f31c..6a7690b535c 100644 --- a/apps/dashboard/lib/Controller/DashboardController.php +++ b/apps/dashboard/lib/Controller/DashboardController.php @@ -28,16 +28,12 @@ declare(strict_types=1); */ namespace OCA\Dashboard\Controller; -use OCA\Dashboard\Service\BackgroundService; use OCA\Files\Event\LoadSidebar; use OCA\Viewer\Event\LoadViewer; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; -use OCP\AppFramework\Http\FileDisplayResponse; use OCP\AppFramework\Http\JSONResponse; -use OCP\AppFramework\Http\NotFoundResponse; use OCP\AppFramework\Http\TemplateResponse; -use OCP\App\IAppManager; use OCP\AppFramework\Services\IInitialState; use OCP\Dashboard\IManager; use OCP\Dashboard\IWidget; @@ -52,38 +48,28 @@ class DashboardController extends Controller { private $inititalState; /** @var IEventDispatcher */ private $eventDispatcher; - /** @var IAppManager */ - private $appManager; /** @var IManager */ private $dashboardManager; /** @var IConfig */ private $config; /** @var string */ private $userId; - /** - * @var BackgroundService - */ - private $backgroundService; public function __construct( string $appName, IRequest $request, IInitialState $initialState, IEventDispatcher $eventDispatcher, - IAppManager $appManager, IManager $dashboardManager, IConfig $config, - BackgroundService $backgroundService, $userId ) { parent::__construct($appName, $request); $this->inititalState = $initialState; $this->eventDispatcher = $eventDispatcher; - $this->appManager = $appManager; $this->dashboardManager = $dashboardManager; $this->config = $config; - $this->backgroundService = $backgroundService; $this->userId = $userId; } @@ -119,18 +105,10 @@ class DashboardController extends Controller { // It does not matter if some statuses are missing from the array, missing ones are considered enabled $statuses = ($statuses && count($statuses) > 0) ? $statuses : ['weather' => true]; - // if theming app is enabled and wants to override default, we pass it - $themingDefaultBackground = $this->appManager->isEnabledForUser('theming') - ? $this->config->getAppValue('theming', 'backgroundMime', '') - : ''; - $this->inititalState->provideInitialState('themingDefaultBackground', $themingDefaultBackground); $this->inititalState->provideInitialState('panels', $widgets); $this->inititalState->provideInitialState('statuses', $statuses); $this->inititalState->provideInitialState('layout', $userLayout); $this->inititalState->provideInitialState('firstRun', $this->config->getUserValue($this->userId, 'dashboard', 'firstRun', '1') === '1'); - $this->inititalState->provideInitialState('shippedBackgrounds', BackgroundService::SHIPPED_BACKGROUNDS); - $this->inititalState->provideInitialState('background', $this->config->getUserValue($this->userId, 'dashboard', 'background', 'default')); - $this->inititalState->provideInitialState('version', $this->config->getUserValue($this->userId, 'dashboard', 'backgroundVersion', 0)); $this->config->setUserValue($this->userId, 'dashboard', 'firstRun', '0'); $response = new TemplateResponse('dashboard', 'index', [ @@ -165,54 +143,4 @@ class DashboardController extends Controller { $this->config->setUserValue($this->userId, 'dashboard', 'statuses', $statuses); return new JSONResponse(['statuses' => $statuses]); } - - /** - * @NoAdminRequired - */ - public function setBackground(string $type = 'default', string $value = ''): JSONResponse { - $currentVersion = (int)$this->config->getUserValue($this->userId, 'dashboard', 'backgroundVersion', '0'); - try { - switch ($type) { - case 'shipped': - $this->backgroundService->setShippedBackground($value); - break; - case 'custom': - $this->backgroundService->setFileBackground($value); - break; - case 'color': - $this->backgroundService->setColorBackground($value); - break; - case 'default': - $this->backgroundService->setDefaultBackground(); - break; - default: - return new JSONResponse(['error' => 'Invalid type provided'], Http::STATUS_BAD_REQUEST); - } - } catch (\InvalidArgumentException $e) { - return new JSONResponse(['error' => $e->getMessage()], Http::STATUS_BAD_REQUEST); - } catch (\Throwable $e) { - return new JSONResponse(['error' => $e->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR); - } - $currentVersion++; - $this->config->setUserValue($this->userId, 'dashboard', 'backgroundVersion', (string)$currentVersion); - return new JSONResponse([ - 'type' => $type, - 'value' => $value, - 'version' => $this->config->getUserValue($this->userId, 'dashboard', 'backgroundVersion', $currentVersion) - ]); - } - - /** - * @NoAdminRequired - * @NoCSRFRequired - */ - public function getBackground(): Http\Response { - $file = $this->backgroundService->getBackground(); - if ($file !== null) { - $response = new FileDisplayResponse($file, Http::STATUS_OK, ['Content-Type' => $file->getMimeType()]); - $response->cacheFor(24 * 60 * 60); - return $response; - } - return new NotFoundResponse(); - } } diff --git a/apps/dashboard/lib/Service/BackgroundService.php b/apps/dashboard/lib/Service/BackgroundService.php deleted file mode 100644 index c98b92412cb..00000000000 --- a/apps/dashboard/lib/Service/BackgroundService.php +++ /dev/null @@ -1,196 +0,0 @@ -<?php - -declare(strict_types=1); - -/** - * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net> - * - * @author Jan C. Borchardt <hey@jancborchardt.net> - * @author Julius Härtl <jus@bitgrid.net> - * - * @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\Dashboard\Service; - -use InvalidArgumentException; -use OC\User\NoUserException; -use OCP\Files\File; -use OCP\Files\IAppData; -use OCP\Files\IRootFolder; -use OCP\Files\NotFoundException; -use OCP\Files\NotPermittedException; -use OCP\Files\SimpleFS\ISimpleFile; -use OCP\Files\SimpleFS\ISimpleFolder; -use OCP\IConfig; -use OCP\Lock\LockedException; -use OCP\PreConditionNotMetException; - -class BackgroundService { - // true when the background is bright and need dark icons - public const THEMING_MODE_DARK = 'dark'; - - public const SHIPPED_BACKGROUNDS = [ - 'anatoly-mikhaltsov-butterfly-wing-scale.jpg' => [ - 'attribution' => 'Butterfly wing scale (Anatoly Mikhaltsov, CC BY-SA)', - 'attribution_url' => 'https://commons.wikimedia.org/wiki/File:%D0%A7%D0%B5%D1%88%D1%83%D0%B9%D0%BA%D0%B8_%D0%BA%D1%80%D1%8B%D0%BB%D0%B0_%D0%B1%D0%B0%D0%B1%D0%BE%D1%87%D0%BA%D0%B8.jpg', - ], - 'bernie-cetonia-aurata-take-off-composition.jpg' => [ - 'attribution' => 'Cetonia aurata take off composition (Bernie, Public Domain)', - 'attribution_url' => 'https://commons.wikimedia.org/wiki/File:Cetonia_aurata_take_off_composition_05172009.jpg', - 'theming' => self::THEMING_MODE_DARK, - ], - 'dejan-krsmanovic-ribbed-red-metal.jpg' => [ - 'attribution' => 'Ribbed red metal (Dejan Krsmanovic, CC BY)', - 'attribution_url' => 'https://www.flickr.com/photos/dejankrsmanovic/42971456774/', - ], - 'eduardo-neves-pedra-azul.jpg' => [ - 'attribution' => 'Pedra azul milky way (Eduardo Neves, CC BY-SA)', - 'attribution_url' => 'https://commons.wikimedia.org/wiki/File:Pedra_Azul_Milky_Way.jpg', - ], - 'european-space-agency-barents-bloom.jpg' => [ - 'attribution' => 'Barents bloom (European Space Agency, CC BY-SA)', - 'attribution_url' => 'https://www.esa.int/ESA_Multimedia/Images/2016/08/Barents_bloom', - ], - 'hannes-fritz-flippity-floppity.jpg' => [ - 'attribution' => 'Flippity floppity (Hannes Fritz, CC BY-SA)', - 'attribution_url' => 'http://hannes.photos/flippity-floppity', - ], - 'hannes-fritz-roulette.jpg' => [ - 'attribution' => 'Roulette (Hannes Fritz, CC BY-SA)', - 'attribution_url' => 'http://hannes.photos/roulette', - ], - 'hannes-fritz-sea-spray.jpg' => [ - 'attribution' => 'Sea spray (Hannes Fritz, CC BY-SA)', - 'attribution_url' => 'http://hannes.photos/sea-spray', - ], - 'kamil-porembinski-clouds.jpg' => [ - 'attribution' => 'Clouds (Kamil Porembiński, CC BY-SA)', - 'attribution_url' => 'https://www.flickr.com/photos/paszczak000/8715851521/', - ], - 'bernard-spragg-new-zealand-fern.jpg' => [ - 'attribution' => 'New zealand fern (Bernard Spragg, CC0)', - 'attribution_url' => 'https://commons.wikimedia.org/wiki/File:NZ_Fern.(Blechnum_chambersii)_(11263534936).jpg', - ], - 'rawpixel-pink-tapioca-bubbles.jpg' => [ - 'attribution' => 'Pink tapioca bubbles (Rawpixel, CC BY)', - 'attribution_url' => 'https://www.flickr.com/photos/byrawpixel/27665140298/in/photostream/', - 'theming' => self::THEMING_MODE_DARK, - ], - 'nasa-waxing-crescent-moon.jpg' => [ - 'attribution' => 'Waxing crescent moon (NASA, Public Domain)', - 'attribution_url' => 'https://www.nasa.gov/image-feature/a-waxing-crescent-moon', - ], - 'tommy-chau-already.jpg' => [ - 'attribution' => 'Cityscape (Tommy Chau, CC BY)', - 'attribution_url' => 'https://www.flickr.com/photos/90975693@N05/16910999368', - ], - 'tommy-chau-lion-rock-hill.jpg' => [ - 'attribution' => 'Lion rock hill (Tommy Chau, CC BY)', - 'attribution_url' => 'https://www.flickr.com/photos/90975693@N05/17136440246', - 'theming' => self::THEMING_MODE_DARK, - ], - 'lali-masriera-yellow-bricks.jpg' => [ - 'attribution' => 'Yellow bricks (Lali Masriera, CC BY)', - 'attribution_url' => 'https://www.flickr.com/photos/visualpanic/3982464447', - 'theming' => self::THEMING_MODE_DARK, - ] - ]; - /** - * @var IRootFolder - */ - private $rootFolder; - /** - * @var IAppData - */ - private $appData; - /** - * @var IConfig - */ - private $config; - private $userId; - - public function __construct(IRootFolder $rootFolder, IAppData $appData, IConfig $config, $userId) { - if ($userId === null) { - return; - } - $this->rootFolder = $rootFolder; - $this->appData = $appData; - $this->config = $config; - $this->userId = $userId; - } - - public function setDefaultBackground(): void { - $this->config->deleteUserValue($this->userId, 'dashboard', 'background'); - } - - /** - * @param $path - * @throws NotFoundException - * @throws NotPermittedException - * @throws LockedException - * @throws PreConditionNotMetException - * @throws NoUserException - */ - public function setFileBackground($path): void { - $this->config->setUserValue($this->userId, 'dashboard', 'background', 'custom'); - $userFolder = $this->rootFolder->getUserFolder($this->userId); - /** @var File $file */ - $file = $userFolder->get($path); - $image = new \OCP\Image(); - if ($image->loadFromFileHandle($file->fopen('r')) === false) { - throw new InvalidArgumentException('Invalid image file'); - } - $this->getAppDataFolder()->newFile('background.jpg', $file->fopen('r')); - } - - public function setShippedBackground($fileName): void { - if (!array_key_exists($fileName, self::SHIPPED_BACKGROUNDS)) { - throw new InvalidArgumentException('The given file name is invalid'); - } - $this->config->setUserValue($this->userId, 'dashboard', 'background', $fileName); - } - - public function setColorBackground(string $color): void { - if (!preg_match('/^#([0-9a-f]{3}|[0-9a-f]{6})$/i', $color)) { - throw new InvalidArgumentException('The given color is invalid'); - } - $this->config->setUserValue($this->userId, 'dashboard', 'background', $color); - } - - public function getBackground(): ?ISimpleFile { - $background = $this->config->getUserValue($this->userId, 'dashboard', 'background', 'default'); - if ($background === 'custom') { - try { - return $this->getAppDataFolder()->getFile('background.jpg'); - } catch (NotFoundException | NotPermittedException $e) { - } - } - return null; - } - - /** - * @return ISimpleFolder - * @throws NotPermittedException - */ - private function getAppDataFolder(): ISimpleFolder { - try { - return $this->appData->getFolder($this->userId); - } catch (NotFoundException $e) { - return $this->appData->newFolder($this->userId); - } - } -} |