Skip to content

Commit 91fee5e

Browse files
committed
Register sites always so they are returned on the OCS response for navigation entries
Signed-off-by: Joas Schilling <coding@schilljs.com>
1 parent ec42ff2 commit 91fee5e

File tree

1 file changed

+41
-4
lines changed

1 file changed

+41
-4
lines changed

lib/AppInfo/Application.php

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
declare(strict_types=1);
44
/**
5-
* @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com>
5+
* @copyright Copyright (c) 2020 Joas Schilling <coding@schilljs.com>
66
*
77
* @license GNU AGPL version 3 or any later version
88
*
@@ -33,6 +33,8 @@
3333
use OCP\AppFramework\Bootstrap\IBootstrap;
3434
use OCP\AppFramework\Bootstrap\IRegistrationContext;
3535
use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent;
36+
use OCP\INavigationManager;
37+
use OCP\IURLGenerator;
3638
use OCP\Settings\IManager;
3739

3840
class Application extends App implements IBootstrap {
@@ -50,14 +52,49 @@ public function register(IRegistrationContext $context): void {
5052
}
5153

5254
public function boot(IBootContext $context): void {
53-
/** @var SitesManager $sitesManager */
54-
$sitesManager = $context->getAppContainer()->get(SitesManager::class);
55+
$context->injectFn([$this, 'registerSites']);
56+
}
57+
58+
public function registerSites(
59+
SitesManager $sitesManager,
60+
IManager $settingsManager,
61+
INavigationManager $navigationManager,
62+
IURLGenerator $url): void {
5563
$sites = $sitesManager->getSitesToDisplay();
5664

5765
foreach ($sites as $site) {
5866
if ($site['type'] === SitesManager::TYPE_QUOTA) {
59-
$context->getServerContainer()->get('SettingsManager')->registerSetting(IManager::KEY_PERSONAL_SETTINGS, Personal::class);
67+
$settingsManager->registerSetting(IManager::KEY_PERSONAL_SETTINGS, Personal::class);
68+
continue;
69+
}
70+
71+
if ($site['type'] !== SitesManager::TYPE_LINK
72+
&& $site['type'] !== SitesManager::TYPE_SETTING
73+
&& $site['type'] !== SitesManager::TYPE_LOGIN) {
74+
continue;
6075
}
76+
77+
$navigationManager->add(function() use ($site, $url) {
78+
if ($site['icon'] !== '') {
79+
$image = $url->linkToRoute('external.icon.showIcon', ['icon' => $site['icon']]);
80+
} else {
81+
$image = $url->linkToRoute('external.icon.showIcon', ['icon' => 'external.svg']);
82+
}
83+
84+
$href = $site['url'];
85+
if (!$site['redirect']) {
86+
$href = $url->linkToRoute('external.site.showPage', ['id'=> $site['id']]);
87+
}
88+
89+
return [
90+
'id' => 'external_index' . $site['id'],
91+
'order' => 80 + $site['id'],
92+
'href' => $href,
93+
'icon' => $image,
94+
'type' => $site['type'],
95+
'name' => $site['name'],
96+
];
97+
});
6198
}
6299
}
63100
}

0 commit comments

Comments
 (0)