Skip to content
Snippets Groups Projects
Unverified Commit 2b26bf14 authored by Christoph Wurst's avatar Christoph Wurst
Browse files

Migrate Files to the new bootstrap mechanism

parent 2e615c0e
No related branches found
No related tags found
No related merge requests found
<?php
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Joas Schilling <coding@schilljs.com>
* @author John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
* @author Jörn Friedrich Dreyer <jfd@butonic.de>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Morris Jobke <hey@morrisjobke.de>
* @author Robin Appelman <robin@icewind.nl>
* @author Thomas Müller <thomas.mueller@tmit.eu>
* @author Vincent Petry <pvince81@owncloud.com>
*
* @license AGPL-3.0
*
* 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 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, version 3,
* along with this program. If not, see <http://www.gnu.org/licenses/>
*
*/
use OC\Search\Provider\File;
use OCA\Files\AppInfo\Application;
$app = \OC::$server->query(Application::class);
// required for translation purpose
// t('Files')
$l = \OC::$server->getL10N('files');
\OC::$server->getSearch()->registerProvider(File::class, ['apps' => ['files']]);
$templateManager = \OC_Helper::getFileTemplateManager();
$templateManager->registerTemplate('application/vnd.oasis.opendocument.presentation', 'core/templates/filetemplates/template.odp');
$templateManager->registerTemplate('application/vnd.oasis.opendocument.text', 'core/templates/filetemplates/template.odt');
$templateManager->registerTemplate('application/vnd.oasis.opendocument.spreadsheet', 'core/templates/filetemplates/template.ods');
\OCA\Files\App::getNavigationManager()->add([
'id' => 'files',
'appname' => 'files',
'script' => 'list.php',
'order' => 0,
'name' => $l->t('All files')
]);
\OCA\Files\App::getNavigationManager()->add([
'id' => 'recent',
'appname' => 'files',
'script' => 'recentlist.php',
'order' => 2,
'name' => $l->t('Recent')
]);
\OCA\Files\App::getNavigationManager()->add([
'id' => 'favorites',
'appname' => 'files',
'script' => 'simplelist.php',
'order' => 5,
'name' => $l->t('Favorites'),
'expandedState' => 'show_Quick_Access'
]);
\OCP\Util::connectHook('\OCP\Config', 'js', '\OCA\Files\App', 'extendJsConfig');
<?php <?php
declare(strict_types=1);
/** /**
* @copyright Copyright (c) 2016, ownCloud, Inc. * @copyright Copyright (c) 2016, ownCloud, Inc.
* *
...@@ -31,6 +34,7 @@ ...@@ -31,6 +34,7 @@
namespace OCA\Files\AppInfo; namespace OCA\Files\AppInfo;
use OC\Search\Provider\File;
use OCA\Files\Capabilities; use OCA\Files\Capabilities;
use OCA\Files\Collaboration\Resources\Listener; use OCA\Files\Collaboration\Resources\Listener;
use OCA\Files\Collaboration\Resources\ResourceProvider; use OCA\Files\Collaboration\Resources\ResourceProvider;
...@@ -42,22 +46,31 @@ use OCA\Files\Listener\LoadSidebarListener; ...@@ -42,22 +46,31 @@ use OCA\Files\Listener\LoadSidebarListener;
use OCA\Files\Notification\Notifier; use OCA\Files\Notification\Notifier;
use OCA\Files\Service\TagService; use OCA\Files\Service\TagService;
use OCP\AppFramework\App; use OCP\AppFramework\App;
use OCP\AppFramework\Bootstrap\IBootContext;
use OCP\AppFramework\Bootstrap\IBootstrap;
use OCP\AppFramework\Bootstrap\IRegistrationContext;
use OCP\Collaboration\Resources\IProviderManager; use OCP\Collaboration\Resources\IProviderManager;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IContainer; use OCP\IContainer;
use OCP\IL10N;
use OCP\IServerContainer;
use OCP\Notification\IManager;
use OCP\Util;
class Application extends App { class Application extends App implements IBootstrap {
public const APP_ID = 'files'; public const APP_ID = 'files';
public function __construct(array $urlParams=[]) { public function __construct(array $urlParams=[]) {
parent::__construct(self::APP_ID, $urlParams); parent::__construct(self::APP_ID, $urlParams);
$container = $this->getContainer(); }
$server = $container->getServer();
public function register(IRegistrationContext $context): void {
/** /**
* Controllers * Controllers
*/ */
$container->registerService('APIController', function (IContainer $c) use ($server) { $context->registerService('APIController', function (IContainer $c) {
/** @var IServerContainer $server */
$server = $c->query(IServerContainer::class);
return new ApiController( return new ApiController(
$c->query('AppName'), $c->query('AppName'),
$c->query('Request'), $c->query('Request'),
...@@ -73,13 +86,15 @@ class Application extends App { ...@@ -73,13 +86,15 @@ class Application extends App {
/** /**
* Services * Services
*/ */
$container->registerService('TagService', function (IContainer $c) use ($server) { $context->registerService('TagService', function (IContainer $c) {
$homeFolder = $c->query('ServerContainer')->getUserFolder(); /** @var IServerContainer $server */
$server = $c->query(IServerContainer::class);
return new TagService( return new TagService(
$c->query('ServerContainer')->getUserSession(), $server->getUserSession(),
$c->query('ServerContainer')->getActivityManager(), $server->getActivityManager(),
$c->query('ServerContainer')->getTagManager()->load(self::APP_ID), $server->getTagManager()->load(self::APP_ID),
$homeFolder, $server->getUserFolder(),
$server->getEventDispatcher() $server->getEventDispatcher()
); );
}); });
...@@ -87,23 +102,79 @@ class Application extends App { ...@@ -87,23 +102,79 @@ class Application extends App {
/* /*
* Register capabilities * Register capabilities
*/ */
$container->registerCapability(Capabilities::class); $context->registerCapability(Capabilities::class);
/** $context->registerEventListener(LoadAdditionalScriptsEvent::class, LegacyLoadAdditionalScriptsAdapter::class);
* Register Collaboration ResourceProvider $context->registerEventListener(LoadSidebar::class, LoadSidebarListener::class);
*/ }
public function boot(IBootContext $context): void {
$this->registerCollaboration($context);
Listener::register($context->getServerContainer()->getEventDispatcher());
$this->registerNotification($context);
$this->registerSearchProvider($context);
$this->registerTemplates();
$this->registerNavigation($context);
$this->registerHooks();
}
/**
* Register Collaboration ResourceProvider
*/
private function registerCollaboration(IBootContext $context): void {
/** @var IProviderManager $providerManager */ /** @var IProviderManager $providerManager */
$providerManager = $container->query(IProviderManager::class); $providerManager = $context->getAppContainer()->query(IProviderManager::class);
$providerManager->registerResourceProvider(ResourceProvider::class); $providerManager->registerResourceProvider(ResourceProvider::class);
Listener::register($server->getEventDispatcher()); }
/** @var IEventDispatcher $dispatcher */
$dispatcher = $container->query(IEventDispatcher::class);
$dispatcher->addServiceListener(LoadAdditionalScriptsEvent::class, LegacyLoadAdditionalScriptsAdapter::class);
$dispatcher->addServiceListener(LoadSidebar::class, LoadSidebarListener::class);
/** @var \OCP\Notification\IManager $notifications */ private function registerNotification(IBootContext $context): void {
$notifications = $container->query(\OCP\Notification\IManager::class); /** @var IManager $notifications */
$notifications = $context->getAppContainer()->query(IManager::class);
$notifications->registerNotifierService(Notifier::class); $notifications->registerNotifierService(Notifier::class);
} }
/**
* @param IBootContext $context
*/
private function registerSearchProvider(IBootContext $context): void {
$context->getServerContainer()->getSearch()->registerProvider(File::class, ['apps' => ['files']]);
}
private function registerTemplates(): void {
$templateManager = \OC_Helper::getFileTemplateManager();
$templateManager->registerTemplate('application/vnd.oasis.opendocument.presentation', 'core/templates/filetemplates/template.odp');
$templateManager->registerTemplate('application/vnd.oasis.opendocument.text', 'core/templates/filetemplates/template.odt');
$templateManager->registerTemplate('application/vnd.oasis.opendocument.spreadsheet', 'core/templates/filetemplates/template.ods');
}
private function registerNavigation(IBootContext $context): void {
/** @var IL10N $l10n */
$l10n = $context->getAppContainer()->query(IL10N::class);
\OCA\Files\App::getNavigationManager()->add([
'id' => 'files',
'appname' => 'files',
'script' => 'list.php',
'order' => 0,
'name' => $l10n->t('All files')
]);
\OCA\Files\App::getNavigationManager()->add([
'id' => 'recent',
'appname' => 'files',
'script' => 'recentlist.php',
'order' => 2,
'name' => $l10n->t('Recent')
]);
\OCA\Files\App::getNavigationManager()->add([
'id' => 'favorites',
'appname' => 'files',
'script' => 'simplelist.php',
'order' => 5,
'name' => $l10n->t('Favorites'),
'expandedState' => 'show_Quick_Access'
]);
}
private function registerHooks(): void {
Util::connectHook('\OCP\Config', 'js', '\OCA\Files\App', 'extendJsConfig');
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment