Skip to content

Commit

Permalink
Move to IBootstrap
Browse files Browse the repository at this point in the history
Signed-off-by: Julius Härtl <jus@bitgrid.net>
  • Loading branch information
juliusknorr committed Jan 28, 2021
1 parent 08431d4 commit 71ca3ef
Show file tree
Hide file tree
Showing 2 changed files with 96 additions and 120 deletions.
65 changes: 0 additions & 65 deletions appinfo/app.php

This file was deleted.

151 changes: 96 additions & 55 deletions lib/AppInfo/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,13 @@

namespace OCA\Richdocuments\AppInfo;

use OC\EventDispatcher\SymfonyAdapter;
use OC\Files\Type\Detection;
use OC\Security\CSP\ContentSecurityPolicy;
use OCA\Federation\TrustedServers;
use OCA\Richdocuments\AppConfig;
use OCA\Richdocuments\Capabilities;
use OCA\Richdocuments\PermissionManager;
use OCA\Richdocuments\Preview\MSExcel;
use OCA\Richdocuments\Preview\MSWord;
use OCA\Richdocuments\Preview\OOXML;
Expand All @@ -40,46 +42,100 @@
use OCA\Richdocuments\WOPI\DiscoveryManager;
use OCA\Viewer\Event\LoadViewer;
use OCP\AppFramework\App;
use OCP\AppFramework\QueryException;
use OCP\AppFramework\Bootstrap\IBootContext;
use OCP\AppFramework\Bootstrap\IBootstrap;
use OCP\AppFramework\Bootstrap\IRegistrationContext;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\Template\ITemplateManager;
use OCP\Files\Template\TemplateFileCreator;
use OCP\GlobalScale\IConfig;
use OCP\IPreview;

class Application extends App {
class Application extends App implements IBootstrap {

const APPNAME = 'richdocuments';

/**
* Strips the path and query parameters from the URL.
*
* @param string $url
* @return string
*/
private function domainOnly($url) {
$parsed_url = parse_url($url);
$scheme = isset($parsed_url['scheme']) ? $parsed_url['scheme'] . '://' : '';
$host = isset($parsed_url['host']) ? $parsed_url['host'] : '';
$port = isset($parsed_url['port']) ? ':' . $parsed_url['port'] : '';
return "$scheme$host$port";
}
public const APPNAME = 'richdocuments';

public function __construct(array $urlParams = array()) {
parent::__construct(self::APPNAME, $urlParams);
$this->getContainer()->registerCapability(Capabilities::class);
}

try {
/** @var IEventDispatcher $eventDispatcher */
$eventDispatcher = $this->getContainer()->getServer()->query(IEventDispatcher::class);
if (class_exists(LoadViewer::class)) {
$eventDispatcher->addListener(LoadViewer::class, function () {
\OCP\Util::addScript('richdocuments', 'viewer');
});

public function register(IRegistrationContext $context): void {
$context->registerTemplateProvider(CollaboraTemplateProvider::class);
$context->registerCapability(Capabilities::class);
}

public function boot(IBootContext $context): void {
$currentUser = \OC::$server->getUserSession()->getUser();
if($currentUser !== null) {
/** @var PermissionManager $permissionManager */
$permissionManager = \OC::$server->query(PermissionManager::class);
if(!$permissionManager->isEnabledForUser($currentUser)) {
return;
}
} catch (QueryException $e) {
}

$this->getContainer()->registerCapability(Capabilities::class);
/** @var IEventDispatcher $eventDispatcher */
$eventDispatcher = $this->getContainer()->getServer()->query(IEventDispatcher::class);
$eventDispatcher->addListener(LoadViewer::class, function () {
\OCP\Util::addScript('richdocuments', 'viewer');
});

$context->injectFn(function(ITemplateManager $templateManager) {
$templateManager->registerTemplateFileCreator(function () {
$odtType = new TemplateFileCreator('richdocuments', 'New document', '.odt');
$odtType->addMimetype('application/vnd.oasis.opendocument.text');
$odtType->addMimetype('application/vnd.oasis.opendocument.text-template');
$odtType->setIconClass('icon-filetype-document');
$odtType->setRatio(21/29.7);
return $odtType;
});
$templateManager->registerTemplateFileCreator(function () {
$odsType = new TemplateFileCreator('richdocuments', 'New spreadsheet', '.ods');
$odsType->addMimetype('application/vnd.oasis.opendocument.spreadsheet');
$odsType->addMimetype('application/vnd.oasis.opendocument.spreadsheet-template');
$odsType->setIconClass('icon-filetype-spreadsheet');
$odsType->setRatio(16/9);
return $odsType;
});
$templateManager->registerTemplateFileCreator(function () {
$odpType = new TemplateFileCreator('richdocuments', 'New presentation', '.odp');
$odpType->addMimetype('application/vnd.oasis.opendocument.presentation');
$odpType->addMimetype('application/vnd.oasis.opendocument.presentation-template');
$odpType->setIconClass('icon-filetype-presentation');
$odpType->setRatio(16/9);
return $odpType;
});
});

$context->injectFn(function (SymfonyAdapter $eventDispatcher) {
$eventDispatcher->addListener('OCA\Files::loadAdditionalScripts',
function() {
\OCP\Util::addScript('richdocuments', 'files');
}
);
$eventDispatcher->addListener('OCA\Files_Sharing::loadAdditionalScripts',
function() {
\OCP\Util::addScript('richdocuments', 'files');
}
);

if (class_exists('\OC\Files\Type\TemplateManager')) {
$manager = \OC_Helper::getFileTemplateManager();

$manager->registerTemplate('application/vnd.openxmlformats-officedocument.wordprocessingml.document', dirname(__DIR__) . '/assets/docxtemplate.docx');
$manager->registerTemplate('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', dirname(__DIR__) . '/assets/xlsxtemplate.xlsx');
$manager->registerTemplate('application/vnd.openxmlformats-officedocument.presentationml.presentation', dirname(__DIR__) . '/assets/pptxtemplate.pptx');
$manager->registerTemplate('application/vnd.oasis.opendocument.presentation', dirname(__DIR__) . '/assets/template.odp');
$manager->registerTemplate('application/vnd.oasis.opendocument.text', dirname(__DIR__) . '/assets/template.odt');
$manager->registerTemplate('application/vnd.oasis.opendocument.spreadsheet', dirname(__DIR__) . '/assets/template.ods');
}

$this->registerProvider();
$this->updateCSP();
$this->checkAndEnableCODEServer();
});
}

public function registerProvider() {
Expand Down Expand Up @@ -117,35 +173,6 @@ public function registerProvider() {
$previewManager->registerProvider('/application\/pdf/', function() use ($container) {
return $container->query(Pdf::class);
});

/** @var ITemplateManager $templateManager */
$templateManager = \OC::$server->query(ITemplateManager::class);

$templateManager->registerTemplateProvider(CollaboraTemplateProvider::class);

$odtType = new TemplateFileCreator('richdocuments', 'New document', '.odt');
$odtType->addMimetype('application/vnd.oasis.opendocument.text');
$odtType->addMimetype('application/vnd.oasis.opendocument.document-template');
$odtType->setIconClass('icon-filetype-document');
$odtType->setRatio(21/29.7);
$templateManager->registerTemplateFileCreator($odtType);

$odsType = new TemplateFileCreator('richdocuments', 'New spreadsheet', '.ods');
$odsType->addMimetype('application/vnd.oasis.opendocument.spreadsheet');
$odsType->addMimetype('application/vnd.oasis.opendocument.spreadsheet-template');
$odsType->setIconClass('icon-filetype-spreadsheet');
$odsType->setRatio(16/9);
$templateManager->registerTemplateFileCreator($odsType);

$odpType = new TemplateFileCreator('richdocuments', 'New presentation', '.odp');
$odpType->addMimetype('application/vnd.oasis.opendocument.presentation');
$odpType->addMimetype('application/vnd.oasis.opendocument.presentation-template');
$odpType->setIconClass('icon-filetype-presentation');
$odpType->setRatio(16/9);
$templateManager->registerTemplateFileCreator($odpType);



}

public function updateCSP() {
Expand Down Expand Up @@ -247,4 +274,18 @@ public function checkAndEnableCODEServer() {
$capabilitiesService->refetch();
}
}

/**
* Strips the path and query parameters from the URL.
*
* @param string $url
* @return string
*/
private function domainOnly($url) {
$parsed_url = parse_url($url);
$scheme = isset($parsed_url['scheme']) ? $parsed_url['scheme'] . '://' : '';
$host = isset($parsed_url['host']) ? $parsed_url['host'] : '';
$port = isset($parsed_url['port']) ? ':' . $parsed_url['port'] : '';
return "$scheme$host$port";
}
}

0 comments on commit 71ca3ef

Please sign in to comment.