22
33declare (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 *
3333use OCP \AppFramework \Bootstrap \IBootstrap ;
3434use OCP \AppFramework \Bootstrap \IRegistrationContext ;
3535use OCP \AppFramework \Http \Events \BeforeTemplateRenderedEvent ;
36+ use OCP \INavigationManager ;
37+ use OCP \IURLGenerator ;
3638use OCP \Settings \IManager ;
3739
3840class 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