diff --git a/apps/comments/appinfo/app.php b/apps/comments/appinfo/app.php index 109063cd22..6d6775dd15 100644 --- a/apps/comments/appinfo/app.php +++ b/apps/comments/appinfo/app.php @@ -1,62 +1,25 @@ * - * @author Arthur Schiwon * @author Joas Schilling - * @author Lukas Reschke - * @author Vincent Petry * - * @license AGPL-3.0 + * @license GNU AGPL version 3 or any later version * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. + * 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 + * 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, version 3, - * along with this program. If not, see + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . * */ -$eventDispatcher = \OC::$server->getEventDispatcher(); -$eventDispatcher->addListener( - 'OCA\Files::loadAdditionalScripts', - function() { - \OCP\Util::addScript('oc-backbone-webdav'); - \OCP\Util::addScript('comments', 'merged'); - \OCP\Util::addStyle('comments', 'autocomplete'); - \OCP\Util::addStyle('comments', 'comments'); - } -); - -$eventDispatcher->addListener(\OCP\Comments\CommentsEntityEvent::EVENT_ENTITY, function(\OCP\Comments\CommentsEntityEvent $event) { - $event->addEntityCollection('files', function($name) { - $nodes = \OC::$server->getUserFolder()->getById((int)$name); - return !empty($nodes); - }); -}); - -$notificationManager = \OC::$server->getNotificationManager(); -$notificationManager->registerNotifier( - function() { - $application = new \OCP\AppFramework\App('comments'); - return $application->getContainer()->query(\OCA\Comments\Notification\Notifier::class); - }, - function () { - $l = \OC::$server->getL10N('comments'); - return ['id' => 'comments', 'name' => $l->t('Comments')]; - } -); - -$commentsManager = \OC::$server->getCommentsManager(); -$commentsManager->registerEventHandler(function () { - $application = new \OCP\AppFramework\App('comments'); - /** @var \OCA\Comments\EventHandler $handler */ - $handler = $application->getContainer()->query(\OCA\Comments\EventHandler::class); - return $handler; -}); +$application = new \OCA\Comments\AppInfo\Application(); +$application->register(); diff --git a/apps/comments/lib/AppInfo/Application.php b/apps/comments/lib/AppInfo/Application.php index e60f0cbf36..cbf2733cf3 100644 --- a/apps/comments/lib/AppInfo/Application.php +++ b/apps/comments/lib/AppInfo/Application.php @@ -24,9 +24,13 @@ namespace OCA\Comments\AppInfo; use OCA\Comments\Controller\Notifications; +use OCA\Comments\EventHandler; use OCA\Comments\JSSettingsHelper; +use OCA\Comments\Notification\Notifier; use OCP\AppFramework\App; +use OCP\Comments\CommentsEntityEvent; use OCP\Util; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; class Application extends App { @@ -39,4 +43,51 @@ class Application extends App { $jsSettingsHelper = new JSSettingsHelper($container->getServer()); Util::connectHook('\OCP\Config', 'js', $jsSettingsHelper, 'extend'); } + + public function register() { + $dispatcher = $this->getContainer()->getServer()->getEventDispatcher(); + $this->registerSidebarScripts($dispatcher); + $this->registerDavEntity($dispatcher); + $this->registerNotifier(); + $this->registerCommentsEventHandler(); + } + + protected function registerSidebarScripts(EventDispatcherInterface $dispatcher) { + $dispatcher->addListener( + 'OCA\Files::loadAdditionalScripts', + function() { + Util::addScript('oc-backbone-webdav'); + Util::addScript('comments', 'merged'); + Util::addStyle('comments', 'autocomplete'); + Util::addStyle('comments', 'comments'); + } + ); + } + + protected function registerDavEntity(EventDispatcherInterface $dispatcher) { + $dispatcher->addListener(CommentsEntityEvent::EVENT_ENTITY, function(CommentsEntityEvent $event) { + $event->addEntityCollection('files', function($name) { + $nodes = \OC::$server->getUserFolder()->getById((int)$name); + return !empty($nodes); + }); + }); + } + + protected function registerNotifier() { + $this->getContainer()->getServer()->getNotificationManager()->registerNotifier( + function() { + return $this->getContainer()->query(Notifier::class); + }, + function () { + $l = $this->getContainer()->getServer()->getL10NFactory()->get('comments'); + return ['id' => 'comments', 'name' => $l->t('Comments')]; + } + ); + } + + protected function registerCommentsEventHandler() { + $this->getContainer()->getServer()->getCommentsManager()->registerEventHandler(function () { + return $this->getContainer()->query(EventHandler::class); + }); + } }