Skip to content

Commit

Permalink
Load the file app info via the LoadAdditionalScripts event
Browse files Browse the repository at this point in the history
Signed-off-by: Joas Schilling <[email protected]>
  • Loading branch information
nickvergessen committed Sep 4, 2020
1 parent c1c961e commit 0843400
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 26 deletions.
27 changes: 3 additions & 24 deletions lib/AppInfo/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
use OCA\External\Capabilities;
use OCA\External\Settings\Personal;
use OCA\External\SitesManager;
use OCA\Files\Event\LoadAdditionalScriptsEvent;
use OCP\AppFramework\App;
use OCP\AppFramework\Bootstrap\IBootContext;
use OCP\AppFramework\Bootstrap\IBootstrap;
Expand All @@ -48,39 +49,17 @@ public function __construct() {
public function register(IRegistrationContext $context): void {
$context->registerCapability(Capabilities::class);
$context->registerEventListener(BeforeTemplateRenderedEvent::class, BeforeTemplateRenderedListener::class);
$context->registerEventListener(LoadAdditionalScriptsEvent::class, BeforeTemplateRenderedListener::class);
}

public function boot(IBootContext $context): void {
/** @var SitesManager $sitesManager */
$sitesManager = $context->getAppContainer()->get(SitesManager::class);
$sites = $sitesManager->getSitesToDisplay();

$this->registerPersonalPage($context->getServerContainer(), $sites);
}

/**
* @param IServerContainer $server
* @param array[] $sites
*/
public function registerPersonalPage(IServerContainer $server, array $sites) {
foreach ($sites as $site) {
if ($site['type'] === SitesManager::TYPE_QUOTA) {
$server->get(IManager::class)->registerSetting(IManager::KEY_PERSONAL_SETTINGS, Personal::class);
$server->getEventDispatcher()->addListener('OCA\Files::loadAdditionalScripts', function(GenericEvent $event) use ($server, $site) {
$url = $server->getURLGenerator();

$hiddenFields = $event->getArgument('hiddenFields');

$hiddenFields['external_quota_link'] = $site['url'];
if (!$site['redirect']) {
$hiddenFields['external_quota_link'] = $url->linkToRoute('external.site.showPage', ['id'=> $site['id']]);
}
$hiddenFields['external_quota_name'] = $site['name'];
$event->setArgument('hiddenFields', $hiddenFields);

Util::addScript('external', 'quota-files-sidebar');
});
return;
$context->getServerContainer()->get('SettingsManager')->registerSetting(IManager::KEY_PERSONAL_SETTINGS, Personal::class);
}
}
}
Expand Down
31 changes: 29 additions & 2 deletions lib/BeforeTemplateRenderedListener.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,13 @@

namespace OCA\External;

use OCA\Files\Event\LoadAdditionalScriptsEvent;
use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\INavigationManager;
use OCP\IURLGenerator;
use OCP\Util;

class BeforeTemplateRenderedListener implements IEventListener {

Expand All @@ -47,10 +49,35 @@ public function __construct(SitesManager $sitesManager,
}

public function handle(Event $event): void {
if (!$event instanceof BeforeTemplateRenderedEvent) {
return;
if ($event instanceof BeforeTemplateRenderedEvent) {
$this->generateNavigationLinks();
}

if ($event instanceof LoadAdditionalScriptsEvent) {
$this->loadQuotaInformationOnFilesApp($event);
}
}

protected function loadQuotaInformationOnFilesApp(LoadAdditionalScriptsEvent $event): void {
$sites = $this->sitesManager->getSitesToDisplay();

foreach ($sites as $site) {
if ($site['type'] === SitesManager::TYPE_QUOTA) {
$link = $site['url'];
if (!$site['redirect']) {
$link = $this->urlGenerator->linkToRoute('external.site.showPage', ['id'=> $site['id']]);
}

$event->addHiddenField('external_quota_link', $link);
$event->addHiddenField('external_quota_name', $site['name']);

Util::addScript('external', 'quota-files-sidebar');
return;
}
}
}

protected function generateNavigationLinks(): void {
$sites = $this->sitesManager->getSitesToDisplay();

foreach ($sites as $id => $site) {
Expand Down

0 comments on commit 0843400

Please sign in to comment.