diff --git a/IONOS b/IONOS
index 30be7051586fa..7d2d1bb7bbfee 160000
--- a/IONOS
+++ b/IONOS
@@ -1 +1 @@
-Subproject commit 30be7051586faae63a143d061925045dd800dba5
+Subproject commit 7d2d1bb7bbfee8e7fd0e3443a18bf4c303d53095
diff --git a/apps/settings/lib/Controller/AppSettingsController.php b/apps/settings/lib/Controller/AppSettingsController.php
index d76408010da79..370ff883a769f 100644
--- a/apps/settings/lib/Controller/AppSettingsController.php
+++ b/apps/settings/lib/Controller/AppSettingsController.php
@@ -35,7 +35,6 @@
use OCP\Files\SimpleFS\ISimpleFile;
use OCP\Files\SimpleFS\ISimpleFolder;
use OCP\Http\Client\IClientService;
-use OCP\IAppConfig;
use OCP\IConfig;
use OCP\IGroup;
use OCP\IL10N;
@@ -75,7 +74,6 @@ public function __construct(
private IInitialState $initialState,
private AppDiscoverFetcher $discoverFetcher,
private IClientService $clientService,
- private IAppConfig $appConfig,
) {
parent::__construct($appName, $request);
$this->appData = $appDataFactory->get('appstore');
@@ -92,12 +90,6 @@ public function viewApps(): TemplateResponse {
$this->initialState->provideInitialState('appstoreEnabled', $this->config->getSystemValueBool('appstoreenabled', true));
$this->initialState->provideInitialState('appstoreBundles', $this->getBundles());
-
- // Conditionally set developer docs link based on configuration
- $displayDocumentationLink = $this->appConfig->getValueBool('settings', 'display_documentation_link', true);
- $developerDocsUrl = $displayDocumentationLink ? $this->urlGenerator->linkToDocs('developer-manual') : '';
- $this->initialState->provideInitialState('appstoreDeveloperDocs', $developerDocsUrl);
-
$this->initialState->provideInitialState('appstoreUpdateCount', count($this->getAppsWithUpdates()));
if ($this->appManager->isInstalled('app_api')) {
diff --git a/apps/settings/src/views/AppStoreNavigation.vue b/apps/settings/src/views/AppStoreNavigation.vue
index 3507006c47d5b..4d8a2b3e48ce1 100644
--- a/apps/settings/src/views/AppStoreNavigation.vue
+++ b/apps/settings/src/views/AppStoreNavigation.vue
@@ -91,10 +91,6 @@
-
@@ -116,7 +112,6 @@ import NcLoadingIcon from '@nextcloud/vue/dist/Components/NcLoadingIcon.js'
import APPSTORE_CATEGORY_ICONS from '../constants/AppstoreCategoryIcons.ts'
const appstoreEnabled = loadState('settings', 'appstoreEnabled', true)
-const developerDocsUrl = loadState('settings', 'appstoreDeveloperDocs', '')
const store = useAppsStore()
const categories = computed(() => store.categories)
diff --git a/apps/settings/tests/Controller/AppSettingsControllerTest.php b/apps/settings/tests/Controller/AppSettingsControllerTest.php
index 3c0df4532d79f..f72bd45a3d234 100644
--- a/apps/settings/tests/Controller/AppSettingsControllerTest.php
+++ b/apps/settings/tests/Controller/AppSettingsControllerTest.php
@@ -19,7 +19,6 @@
use OCP\AppFramework\Services\IInitialState;
use OCP\Files\AppData\IAppDataFactory;
use OCP\Http\Client\IClientService;
-use OCP\IAppConfig;
use OCP\IConfig;
use OCP\IL10N;
use OCP\INavigationManager;
@@ -46,8 +45,6 @@ class AppSettingsControllerTest extends TestCase {
private $l10n;
/** @var IConfig|MockObject */
private $config;
- /** @var IAppConfig|MockObject */
- private $appConfig;
/** @var INavigationManager|MockObject */
private $navigationManager;
private AppManager&MockObject $appManager;
@@ -84,7 +81,6 @@ protected function setUp(): void {
->method('t')
->willReturnArgument(0);
$this->config = $this->createMock(IConfig::class);
- $this->appConfig = $this->createMock(IAppConfig::class);
$this->navigationManager = $this->createMock(INavigationManager::class);
$this->appManager = $this->createMock(AppManager::class);
$this->categoryFetcher = $this->createMock(CategoryFetcher::class);
@@ -116,7 +112,6 @@ protected function setUp(): void {
$this->initialState,
$this->discoverFetcher,
$this->clientService,
- $this->appConfig,
);
}
@@ -185,31 +180,14 @@ public function testViewApps(): void {
->method('getSystemValueBool')
->with('appstoreenabled', true)
->willReturn(true);
- $this->appConfig
- ->expects($this->once())
- ->method('getValueBool')
- ->with('settings', 'display_documentation_link', true)
- ->willReturn(true);
$this->navigationManager
->expects($this->once())
->method('setActiveEntry')
->with('core_apps');
- // Test that developer docs link is generated correctly
- $this->urlGenerator
- ->expects($this->once())
- ->method('linkToDocs')
- ->with('developer-manual')
- ->willReturn('https://docs.nextcloud.com/server/latest/developer_manual/');
-
$this->initialState
->expects($this->exactly(4))
- ->method('provideInitialState')
- ->willReturnCallback(function ($key, $value) {
- if ($key === 'appstoreDeveloperDocs') {
- $this->assertEquals('https://docs.nextcloud.com/server/latest/developer_manual/', $value);
- }
- });
+ ->method('provideInitialState');
$policy = new ContentSecurityPolicy();
$policy->addAllowedImageDomain('https://usercontent.apps.nextcloud.com');
@@ -235,31 +213,14 @@ public function testViewAppsAppstoreNotEnabled(): void {
->method('getSystemValueBool')
->with('appstoreenabled', true)
->willReturn(false);
- $this->appConfig
- ->expects($this->once())
- ->method('getValueBool')
- ->with('settings', 'display_documentation_link', true)
- ->willReturn(true);
$this->navigationManager
->expects($this->once())
->method('setActiveEntry')
->with('core_apps');
- // Test that developer docs link is still generated even when appstore is disabled
- $this->urlGenerator
- ->expects($this->once())
- ->method('linkToDocs')
- ->with('developer-manual')
- ->willReturn('https://docs.nextcloud.com/server/latest/developer_manual/');
-
$this->initialState
->expects($this->exactly(4))
- ->method('provideInitialState')
- ->willReturnCallback(function ($key, $value) {
- if ($key === 'appstoreDeveloperDocs') {
- $this->assertEquals('https://docs.nextcloud.com/server/latest/developer_manual/', $value);
- }
- });
+ ->method('provideInitialState');
$policy = new ContentSecurityPolicy();
$policy->addAllowedImageDomain('https://usercontent.apps.nextcloud.com');
@@ -274,88 +235,4 @@ public function testViewAppsAppstoreNotEnabled(): void {
$this->assertEquals($expected, $this->appSettingsController->viewApps());
}
-
- public function testDeveloperDocumentationLinkHiddenWhenConfigured(): void {
- $this->installer->expects($this->any())
- ->method('isUpdateAvailable')
- ->willReturn(false);
- $this->bundleFetcher->expects($this->once())->method('getBundles')->willReturn([]);
- $this->config
- ->expects($this->once())
- ->method('getSystemValueBool')
- ->with('appstoreenabled', true)
- ->willReturn(true);
- $this->appConfig
- ->expects($this->once())
- ->method('getValueBool')
- ->with('settings', 'display_documentation_link', true)
- ->willReturn(false);
- $this->navigationManager
- ->expects($this->once())
- ->method('setActiveEntry')
- ->with('core_apps');
-
- // When display_documentation_link is false, linkToDocs should not be called
- $this->urlGenerator
- ->expects($this->never())
- ->method('linkToDocs');
-
- $providedStates = [];
- $this->initialState
- ->expects($this->exactly(4))
- ->method('provideInitialState')
- ->willReturnCallback(function ($key, $value) use (&$providedStates) {
- $providedStates[$key] = $value;
- });
-
- $this->appSettingsController->viewApps();
-
- // Assert that the developer docs state was provided with an empty string
- $this->assertArrayHasKey('appstoreDeveloperDocs', $providedStates);
- $this->assertEquals('', $providedStates['appstoreDeveloperDocs']);
- }
-
- public function testDeveloperDocumentationLinkShownByDefault(): void {
- $this->installer->expects($this->any())
- ->method('isUpdateAvailable')
- ->willReturn(false);
- $this->bundleFetcher->expects($this->once())->method('getBundles')->willReturn([]);
- $this->config
- ->expects($this->once())
- ->method('getSystemValueBool')
- ->with('appstoreenabled', true)
- ->willReturn(true);
- $this->appConfig
- ->expects($this->once())
- ->method('getValueBool')
- ->with('settings', 'display_documentation_link', true)
- ->willReturn(true);
- $this->navigationManager
- ->expects($this->once())
- ->method('setActiveEntry')
- ->with('core_apps');
-
- $developerDocsUrl = 'https://docs.nextcloud.com/server/latest/developer_manual/';
-
- // When display_documentation_link is true (default), linkToDocs should be called
- $this->urlGenerator
- ->expects($this->once())
- ->method('linkToDocs')
- ->with('developer-manual')
- ->willReturn($developerDocsUrl);
-
- $providedStates = [];
- $this->initialState
- ->expects($this->exactly(4))
- ->method('provideInitialState')
- ->willReturnCallback(function ($key, $value) use (&$providedStates) {
- $providedStates[$key] = $value;
- });
-
- $this->appSettingsController->viewApps();
-
- // Assert that the developer docs state was provided with the correct URL
- $this->assertArrayHasKey('appstoreDeveloperDocs', $providedStates);
- $this->assertEquals($developerDocsUrl, $providedStates['appstoreDeveloperDocs']);
- }
}