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 | |
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>
-rw-r--r-- | apps/files_sharing/appinfo/app.php | 83 | ||||
-rw-r--r-- | apps/files_sharing/composer/composer/autoload_classmap.php | 2 | ||||
-rw-r--r-- | apps/files_sharing/composer/composer/autoload_static.php | 2 | ||||
-rw-r--r-- | apps/files_sharing/lib/AppInfo/Application.php | 105 | ||||
-rw-r--r-- | apps/files_sharing/lib/Listener/LoadAdditionalListener.php | 44 | ||||
-rw-r--r-- | apps/files_sharing/lib/Listener/LoadSidebarListener.php | 43 | ||||
-rw-r--r-- | apps/files_sharing/list.php | 11 |
7 files changed, 194 insertions, 96 deletions
diff --git a/apps/files_sharing/appinfo/app.php b/apps/files_sharing/appinfo/app.php index 8d4b511c265..f49f9349494 100644 --- a/apps/files_sharing/appinfo/app.php +++ b/apps/files_sharing/appinfo/app.php @@ -36,85 +36,4 @@ use OCA\Files_Sharing\AppInfo\Application; \OC\Share\Share::registerBackend('file', File::class); \OC\Share\Share::registerBackend('folder', Folder::class, 'file'); -$application = \OC::$server->query(Application::class); -$application->registerMountProviders(); -$application->register(); - -$eventDispatcher = \OC::$server->getEventDispatcher(); -$eventDispatcher->addListener( - 'OCA\Files::loadAdditionalScripts', - function() { - \OCP\Util::addScript('files_sharing', 'dist/additionalScripts'); - \OCP\Util::addStyle('files_sharing', 'icons'); - } -); -\OC::$server->getEventDispatcher()->addListener('\OCP\Collaboration\Resources::loadAdditionalScripts', function () { - \OCP\Util::addScript('files_sharing', 'dist/collaboration'); -}); - -$config = \OC::$server->getConfig(); -$shareManager = \OC::$server->getShareManager(); -$userSession = \OC::$server->getUserSession(); -$l = \OC::$server->getL10N('files_sharing'); - -if ($config->getAppValue('core', 'shareapi_enabled', 'yes') === 'yes') { - - $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 - $user = $userSession->getUser(); - $defaultExpandedState = true; - if ($user instanceof \OCP\IUser) { - $defaultExpandedState = $config->getUserValue($userSession->getUser()->getUID(), 'files', 'show_sharing_menu', '0') === '1'; - } - - \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' - ]); -} +\OC::$server->query(Application::class); diff --git a/apps/files_sharing/composer/composer/autoload_classmap.php b/apps/files_sharing/composer/composer/autoload_classmap.php index d73838c07df..af60a18718c 100644 --- a/apps/files_sharing/composer/composer/autoload_classmap.php +++ b/apps/files_sharing/composer/composer/autoload_classmap.php @@ -45,6 +45,8 @@ return array( 'OCA\\Files_Sharing\\Helper' => $baseDir . '/../lib/Helper.php', 'OCA\\Files_Sharing\\Hooks' => $baseDir . '/../lib/Hooks.php', 'OCA\\Files_Sharing\\ISharedStorage' => $baseDir . '/../lib/ISharedStorage.php', + 'OCA\\Files_Sharing\\Listener\\LoadAdditionalListener' => $baseDir . '/../lib/Listener/LoadAdditionalListener.php', + 'OCA\\Files_Sharing\\Listener\\LoadSidebarListener' => $baseDir . '/../lib/Listener/LoadSidebarListener.php', 'OCA\\Files_Sharing\\Middleware\\OCSShareAPIMiddleware' => $baseDir . '/../lib/Middleware/OCSShareAPIMiddleware.php', 'OCA\\Files_Sharing\\Middleware\\ShareInfoMiddleware' => $baseDir . '/../lib/Middleware/ShareInfoMiddleware.php', 'OCA\\Files_Sharing\\Middleware\\SharingCheckMiddleware' => $baseDir . '/../lib/Middleware/SharingCheckMiddleware.php', diff --git a/apps/files_sharing/composer/composer/autoload_static.php b/apps/files_sharing/composer/composer/autoload_static.php index 4cdf874b9ee..67f8ce47f72 100644 --- a/apps/files_sharing/composer/composer/autoload_static.php +++ b/apps/files_sharing/composer/composer/autoload_static.php @@ -60,6 +60,8 @@ class ComposerStaticInitFiles_Sharing 'OCA\\Files_Sharing\\Helper' => __DIR__ . '/..' . '/../lib/Helper.php', 'OCA\\Files_Sharing\\Hooks' => __DIR__ . '/..' . '/../lib/Hooks.php', 'OCA\\Files_Sharing\\ISharedStorage' => __DIR__ . '/..' . '/../lib/ISharedStorage.php', + 'OCA\\Files_Sharing\\Listener\\LoadAdditionalListener' => __DIR__ . '/..' . '/../lib/Listener/LoadAdditionalListener.php', + 'OCA\\Files_Sharing\\Listener\\LoadSidebarListener' => __DIR__ . '/..' . '/../lib/Listener/LoadSidebarListener.php', 'OCA\\Files_Sharing\\Middleware\\OCSShareAPIMiddleware' => __DIR__ . '/..' . '/../lib/Middleware/OCSShareAPIMiddleware.php', 'OCA\\Files_Sharing\\Middleware\\ShareInfoMiddleware' => __DIR__ . '/..' . '/../lib/Middleware/ShareInfoMiddleware.php', 'OCA\\Files_Sharing\\Middleware\\SharingCheckMiddleware' => __DIR__ . '/..' . '/../lib/Middleware/SharingCheckMiddleware.php', 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' + ]); + } } diff --git a/apps/files_sharing/lib/Listener/LoadAdditionalListener.php b/apps/files_sharing/lib/Listener/LoadAdditionalListener.php new file mode 100644 index 00000000000..793140e211f --- /dev/null +++ b/apps/files_sharing/lib/Listener/LoadAdditionalListener.php @@ -0,0 +1,44 @@ +<?php +declare(strict_types=1); +/** + * @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl> + * + * @author Roeland Jago Douma <roeland@famdouma.nl> + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * 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 + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Files_Sharing\Listener; + +use OCA\Files_Sharing\AppInfo\Application; +use OCA\Files\Event\LoadAdditionalScriptsEvent; +use OCP\EventDispatcher\Event; +use OCP\EventDispatcher\IEventListener; +use OCP\Util; + +class LoadAdditionalListener implements IEventListener { + public function handle(Event $event): void { + if (!($event instanceof LoadAdditionalScriptsEvent)) { + return; + } + + Util::addScript(Application::APP_ID, 'dist/files_sharing'); + Util::addScript(Application::APP_ID, 'dist/additionalScripts'); + Util::addStyle(Application::APP_ID, 'icons'); + } +} diff --git a/apps/files_sharing/lib/Listener/LoadSidebarListener.php b/apps/files_sharing/lib/Listener/LoadSidebarListener.php new file mode 100644 index 00000000000..a84d48cf599 --- /dev/null +++ b/apps/files_sharing/lib/Listener/LoadSidebarListener.php @@ -0,0 +1,43 @@ +<?php +declare(strict_types=1); +/** + * @copyright Copyright (c) 2019, Roeland Jago Douma <roeland@famdouma.nl> + * + * @author Roeland Jago Douma <roeland@famdouma.nl> + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * 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 + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCA\Files_Sharing\Listener; + +use OCA\Files_Sharing\AppInfo\Application; +use OCA\Files\Event\LoadSidebar; +use OCP\EventDispatcher\Event; +use OCP\EventDispatcher\IEventListener; +use OCP\Util; + +class LoadSidebarListener implements IEventListener { + public function handle(Event $event): void { + if (!($event instanceof LoadSidebar)) { + return; + } + + Util::addScript(Application::APP_ID, 'dist/files_sharing_tab'); + } + +} diff --git a/apps/files_sharing/list.php b/apps/files_sharing/list.php index 5517c39971f..fdff5d36c76 100644 --- a/apps/files_sharing/list.php +++ b/apps/files_sharing/list.php @@ -19,10 +19,14 @@ * along with this program. If not, see <http://www.gnu.org/licenses/> * */ +use OCA\Files\Event\LoadAdditionalScriptsEvent; +use OCA\Files\Event\LoadSidebar; + // Check if we are a user OCP\User::checkLoggedIn(); $config = \OC::$server->getConfig(); $userSession = \OC::$server->getUserSession(); +$eventDispatcher = \OC::$server->getEventDispatcher(); $showgridview = $config->getUserValue($userSession->getUser()->getUID(), 'files', 'show_grid', false); $isIE = \OCP\Util::isIE(); @@ -32,8 +36,9 @@ $tmpl = new OCP\Template('files_sharing', 'list', ''); // gridview not available for ie $tmpl->assign('showgridview', $showgridview && !$isIE); -OCP\Util::addScript('files_sharing', 'dist/files_sharing'); -OCP\Util::addScript('files_sharing', 'dist/files_sharing_tab'); -\OC::$server->getEventDispatcher()->dispatch('\OCP\Collaboration\Resources::loadAdditionalScripts'); +// fire script events +$eventDispatcher->dispatch('\OCP\Collaboration\Resources::loadAdditionalScripts'); +$eventDispatcher->dispatch(LoadAdditionalScriptsEvent::class, new LoadAdditionalScriptsEvent()); +$eventDispatcher->dispatch(LoadSidebar::class, new LoadSidebar()); $tmpl->printPage(); |