diff --git a/apps/files_external/composer/composer/autoload_classmap.php b/apps/files_external/composer/composer/autoload_classmap.php index 61165ee67fb..c73085d6346 100644 --- a/apps/files_external/composer/composer/autoload_classmap.php +++ b/apps/files_external/composer/composer/autoload_classmap.php @@ -122,6 +122,7 @@ return array( 'OCA\\Files_External\\Service\\UserStoragesService' => $baseDir . '/../lib/Service/UserStoragesService.php', 'OCA\\Files_External\\Service\\UserTrait' => $baseDir . '/../lib/Service/UserTrait.php', 'OCA\\Files_External\\Settings\\Admin' => $baseDir . '/../lib/Settings/Admin.php', + 'OCA\\Files_External\\Settings\\CommonSettingsTrait' => $baseDir . '/../lib/Settings/CommonSettingsTrait.php', 'OCA\\Files_External\\Settings\\Personal' => $baseDir . '/../lib/Settings/Personal.php', 'OCA\\Files_External\\Settings\\PersonalSection' => $baseDir . '/../lib/Settings/PersonalSection.php', 'OCA\\Files_External\\Settings\\Section' => $baseDir . '/../lib/Settings/Section.php', diff --git a/apps/files_external/composer/composer/autoload_static.php b/apps/files_external/composer/composer/autoload_static.php index 11001c58c9c..887aaaa13e9 100644 --- a/apps/files_external/composer/composer/autoload_static.php +++ b/apps/files_external/composer/composer/autoload_static.php @@ -137,6 +137,7 @@ class ComposerStaticInitFiles_External 'OCA\\Files_External\\Service\\UserStoragesService' => __DIR__ . '/..' . '/../lib/Service/UserStoragesService.php', 'OCA\\Files_External\\Service\\UserTrait' => __DIR__ . '/..' . '/../lib/Service/UserTrait.php', 'OCA\\Files_External\\Settings\\Admin' => __DIR__ . '/..' . '/../lib/Settings/Admin.php', + 'OCA\\Files_External\\Settings\\CommonSettingsTrait' => __DIR__ . '/..' . '/../lib/Settings/CommonSettingsTrait.php', 'OCA\\Files_External\\Settings\\Personal' => __DIR__ . '/..' . '/../lib/Settings/Personal.php', 'OCA\\Files_External\\Settings\\PersonalSection' => __DIR__ . '/..' . '/../lib/Settings/PersonalSection.php', 'OCA\\Files_External\\Settings\\Section' => __DIR__ . '/..' . '/../lib/Settings/Section.php', diff --git a/apps/files_external/lib/Settings/Admin.php b/apps/files_external/lib/Settings/Admin.php index 9af0f3c61c1..591fb9bc591 100644 --- a/apps/files_external/lib/Settings/Admin.php +++ b/apps/files_external/lib/Settings/Admin.php @@ -15,6 +15,7 @@ use OCP\Encryption\IManager; use OCP\Settings\ISettings; class Admin implements ISettings { + use CommonSettingsTrait; public function __construct( private IManager $encryptionManager, @@ -40,6 +41,7 @@ class Admin implements ISettings { 'globalCredentialsUid' => '', ]; + $this->loadScriptsAndStyles(); return new TemplateResponse('files_external', 'settings', $parameters, ''); } diff --git a/apps/files_external/lib/Settings/CommonSettingsTrait.php b/apps/files_external/lib/Settings/CommonSettingsTrait.php new file mode 100644 index 00000000000..b52cc9419a2 --- /dev/null +++ b/apps/files_external/lib/Settings/CommonSettingsTrait.php @@ -0,0 +1,55 @@ + + * + * @author Ferdinand Thiessen + * + * @license AGPL-3.0-or-later + * + * 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 . + * + */ + +namespace OCA\Files_External\Settings; + +use OCA\Files_External\Service\BackendService; +use OCP\Util; + +trait CommonSettingsTrait { + protected BackendService $backendService; + + /** + * Load the frontend script including the custom backend dependencies + */ + protected function loadScriptsAndStyles() { + Util::addScript('files_external', 'settings'); + Util::addStyle('files_external', 'settings'); + + // load custom JS + foreach ($this->backendService->getAvailableBackends() as $backend) { + foreach ($backend->getCustomJs() as $script) { + Util::addScript('files_external', $script); + } + } + + foreach ($this->backendService->getAuthMechanisms() as $authMechanism) { + foreach ($authMechanism->getCustomJs() as $script) { + Util::addScript('files_external', $script); + } + } + } +} diff --git a/apps/files_external/lib/Settings/Personal.php b/apps/files_external/lib/Settings/Personal.php index 8478badb842..767794e1dcc 100644 --- a/apps/files_external/lib/Settings/Personal.php +++ b/apps/files_external/lib/Settings/Personal.php @@ -16,6 +16,7 @@ use OCP\IUserSession; use OCP\Settings\ISettings; class Personal implements ISettings { + use CommonSettingsTrait; public function __construct( private IManager $encryptionManager, @@ -43,6 +44,7 @@ class Personal implements ISettings { 'globalCredentials' => $this->globalAuth->getAuth($uid), 'globalCredentialsUid' => $uid, ]; + $this->loadScriptsAndStyles(); return new TemplateResponse('files_external', 'settings', $parameters, ''); } diff --git a/apps/settings/templates/settings/empty.php b/apps/settings/templates/settings/empty.php index ce4477fa9df..aab6717b496 100644 --- a/apps/settings/templates/settings/empty.php +++ b/apps/settings/templates/settings/empty.php @@ -5,4 +5,4 @@ * SPDX-License-Identifier: AGPL-3.0-or-later */ -// Empty template as Vue will take over the `id="conent"` of the base template element +// Empty template as Vue will take over the `id="content"` of the base template element