From f8af02768696ab750e6830048259cd12ba79263e Mon Sep 17 00:00:00 2001 From: "John Molakvoæ (skjnldsv)" Date: Tue, 5 Nov 2019 15:10:54 +0100 Subject: Fix files_sharing app LoadSidebar event MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: John Molakvoæ (skjnldsv) --- apps/files_sharing/lib/AppInfo/Application.php | 105 ++++++++++++++++++++++--- 1 file changed, 94 insertions(+), 11 deletions(-) (limited to 'apps/files_sharing/lib/AppInfo') diff --git a/apps/files_sharing/lib/AppInfo/Application.php b/apps/files_sharing/lib/AppInfo/Application.php index a9060763a2b..1e1a2ca1c8b 100644 --- a/apps/files_sharing/lib/AppInfo/Application.php +++ b/apps/files_sharing/lib/AppInfo/Application.php @@ -34,29 +34,44 @@ use OCA\Files_Sharing\Capabilities; use OCA\Files_Sharing\Controller\ExternalSharesController; use OCA\Files_Sharing\Controller\ShareController; use OCA\Files_Sharing\External\Manager; +use OCA\Files_Sharing\Listener\LoadAdditionalListener; +use OCA\Files_Sharing\Listener\LoadSidebarListener; use OCA\Files_Sharing\Middleware\OCSShareAPIMiddleware; use OCA\Files_Sharing\Middleware\ShareInfoMiddleware; use OCA\Files_Sharing\Middleware\SharingCheckMiddleware; use OCA\Files_Sharing\MountProvider; use OCA\Files_Sharing\Notification\Listener; use OCA\Files_Sharing\Notification\Notifier; +use OCA\Files\Event\LoadAdditionalScriptsEvent; +use OCA\Files\Event\LoadSidebar; use OCP\AppFramework\App; use OCP\AppFramework\Utility\IControllerMethodReflector; use OCP\Defaults; +use OCP\EventDispatcher\IEventDispatcher; use OCP\Federation\ICloudIdManager; use OCP\IContainer; +use OCP\Files\Config\IMountProviderCollection; use OCP\IGroup; use OCP\IServerContainer; use Symfony\Component\EventDispatcher\GenericEvent; class Application extends App { - public function __construct(array $urlParams = array()) { - parent::__construct('files_sharing', $urlParams); + + const APP_ID = 'files_sharing'; + + public function __construct(array $urlParams = []) { + parent::__construct(self::APP_ID, $urlParams); $container = $this->getContainer(); + /** @var IServerContainer $server */ $server = $container->getServer(); + /** @var IEventDispatcher $dispatcher */ + $dispatcher = $container->query(IEventDispatcher::class); + $mountProviderCollection = $server->getMountProviderCollection(); + $notifications = $server->getNotificationManager(); + /** * Controllers */ @@ -164,26 +179,32 @@ class Application extends App { ); }); - /* + /** * Register capabilities */ $container->registerCapability(Capabilities::class); - /** @var \OCP\Notification\IManager $notifications */ - $notifications = $container->query(\OCP\Notification\IManager::class); $notifications->registerNotifierService(Notifier::class); + + $this->registerMountProviders($mountProviderCollection); + $this->registerEventsScripts($dispatcher); + $this->setupSharingMenus(); } - public function registerMountProviders() { - /** @var \OCP\IServerContainer $server */ - $server = $this->getContainer()->query('ServerContainer'); - $mountProviderCollection = $server->getMountProviderCollection(); + protected function registerMountProviders(IMountProviderCollection $mountProviderCollection) { $mountProviderCollection->registerProvider($this->getContainer()->query('MountProvider')); $mountProviderCollection->registerProvider($this->getContainer()->query('ExternalMountProvider')); } - public function register(): void { - $dispatcher = $this->getContainer()->getServer()->getEventDispatcher(); + protected function registerEventsScripts(IEventDispatcher $dispatcher) { + // sidebar and files scripts + $dispatcher->addServiceListener(LoadAdditionalScriptsEvent::class, LoadAdditionalListener::class); + $dispatcher->addServiceListener(LoadSidebar::class, LoadSidebarListener::class); + $dispatcher->addListener('\OCP\Collaboration\Resources::loadAdditionalScripts', function() { + \OCP\Util::addScript('files_sharing', 'dist/collaboration'); + }); + + // notifications api to accept incoming user shares $dispatcher->addListener('OCP\Share::postShare', function(GenericEvent $event) { /** @var Listener $listener */ $listener = $this->getContainer()->query(Listener::class); @@ -195,4 +216,66 @@ class Application extends App { $listener->userAddedToGroup($event); }); } + + protected function setupSharingMenus() { + $config = \OC::$server->getConfig(); + $l = \OC::$server->getL10N('files_sharing'); + + if ($config->getAppValue('core', 'shareapi_enabled', 'yes') !== 'yes') { + return; + } + + $sharingSublistArray = []; + + if (\OCP\Util::isSharingDisabledForUser() === false) { + array_push($sharingSublistArray, [ + 'id' => 'sharingout', + 'appname' => 'files_sharing', + 'script' => 'list.php', + 'order' => 16, + 'name' => $l->t('Shared with others'), + ]); + } + + array_push($sharingSublistArray, [ + 'id' => 'sharingin', + 'appname' => 'files_sharing', + 'script' => 'list.php', + 'order' => 15, + 'name' => $l->t('Shared with you'), + ]); + + if (\OCP\Util::isSharingDisabledForUser() === false) { + // Check if sharing by link is enabled + if ($config->getAppValue('core', 'shareapi_allow_links', 'yes') === 'yes') { + array_push($sharingSublistArray, [ + 'id' => 'sharinglinks', + 'appname' => 'files_sharing', + 'script' => 'list.php', + 'order' => 17, + 'name' => $l->t('Shared by link'), + ]); + } + } + + array_push($sharingSublistArray, [ + 'id' => 'deletedshares', + 'appname' => 'files_sharing', + 'script' => 'list.php', + 'order' => 19, + 'name' => $l->t('Deleted shares'), + ]); + + // show_Quick_Access stored as string + \OCA\Files\App::getNavigationManager()->add([ + 'id' => 'shareoverview', + 'appname' => 'files_sharing', + 'script' => 'list.php', + 'order' => 18, + 'name' => $l->t('Shares'), + 'classes' => 'collapsible', + 'sublist' => $sharingSublistArray, + 'expandedState' => 'show_sharing_menu' + ]); + } } -- cgit v1.2.3