diff options
author | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2019-11-05 15:10:54 +0100 |
---|---|---|
committer | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2019-12-02 08:58:50 +0100 |
commit | f8af02768696ab750e6830048259cd12ba79263e (patch) | |
tree | 9eaa93facfd7c9c3eeccfe43a6209b4e21a28c0c /apps/files_sharing/lib/AppInfo | |
parent | e98ae45b8311d8d10aba2ec46830de02694f7f88 (diff) | |
download | nextcloud-server-f8af02768696ab750e6830048259cd12ba79263e.tar.gz nextcloud-server-f8af02768696ab750e6830048259cd12ba79263e.zip |
Fix files_sharing app LoadSidebar event
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
Diffstat (limited to 'apps/files_sharing/lib/AppInfo')
-rw-r--r-- | apps/files_sharing/lib/AppInfo/Application.php | 105 |
1 files changed, 94 insertions, 11 deletions
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' + ]); + } } |