nextcloud/apps/files_external/lib/Settings/Admin.php
Ferdinand Thiessen e1133ec926 feat(files_external): Migrate settings to Vue
Template parameters are migrated to initial state, common state between admin and user settings is shared in the CommonSettingsTrait.
The template is cleaned and replaced with only a stub for the Vue mount.
Code only used for the frontend of the settings is moved from the MountConfig to the CommonSettingsTrait (the missing dependency messages).

On the frontend a wrapper view is created that currently holds the global credentials settings and the external storages settings.
- The global credentials sections is now a stand-alone sections - fully implemented.
- The external storages section holds the table + user config + warnings on missing dependencies

The legacy UI is temporarly renamed but will be removed in a following commit.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-13 01:30:37 +00:00

78 lines
2.3 KiB
PHP

<?php
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\Files_External\Settings;
use OCA\Files_External\Lib\Auth\Password\GlobalAuth;
use OCA\Files_External\Lib\Backend\Backend;
use OCA\Files_External\Service\BackendService;
use OCA\Files_External\Service\GlobalStoragesService;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Services\IInitialState;
use OCP\Encryption\IManager;
use OCP\IURLGenerator;
use OCP\Settings\ISettings;
class Admin implements ISettings {
use CommonSettingsTrait;
public function __construct(
private IManager $encryptionManager,
private GlobalStoragesService $globalStoragesService,
private BackendService $backendService,
private GlobalAuth $globalAuth,
private IInitialState $initialState,
private IURLGenerator $urlGenerator,
) {
}
/**
* @return TemplateResponse
*/
public function getForm() {
// Shared settings (user & admin)
$this->setInitialState(BackendService::VISIBILITY_ADMIN);
// Admin specific
$backends = $this->backendService->getAvailableBackends();
$allowedBackends = array_filter($backends, fn (Backend $backend) => $backend->isVisibleFor(BackendService::VISIBILITY_PERSONAL));
$this->initialState->provideInitialState('user-mounting', [
'allowUserMounting' => $this->backendService->isUserMountingAllowed(),
'allowedBackends' => array_values(array_map(fn (Backend $backend) => $backend->getIdentifier(), $allowedBackends)),
'backends' => array_values(
array_map(
fn (Backend $backend) => [
'id' => $backend->getIdentifier(),
'displayName' => $backend->getText(),
'deprecated' => $backend->getDeprecateTo()?->getIdentifier(),
],
$backends,
),
),
]);
$this->loadScriptsAndStyles();
return new TemplateResponse('files_external', 'settings', renderAs: '');
}
/**
* @return string the section ID, e.g. 'sharing'
*/
public function getSection() {
return 'externalstorages';
}
/**
* @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
*/
public function getPriority() {
return 40;
}
}