Move editor list to capabilities

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl 2019-11-25 13:56:22 +01:00
parent c8d3e32190
commit bc36cc808f
No known key found for this signature in database
GPG Key ID: 4C614C6ED2CDE6DF
4 changed files with 49 additions and 50 deletions

View File

@ -99,11 +99,6 @@ $application->registerRoutes(
],
],
'ocs' => [
[
'name' => 'DirectEditing#get',
'url' => '/api/v1/directEditing',
'verb' => 'GET'
],
[
'name' => 'DirectEditing#templates',
'url' => '/api/v1/directEditing/templates/{editorId}/{creatorId}',

View File

@ -25,7 +25,11 @@
namespace OCA\Files;
use OC\DirectEditing\Manager;
use OCP\Capabilities\ICapability;
use OCP\DirectEditing\ACreateEmpty;
use OCP\DirectEditing\ACreateFromTemplate;
use OCP\DirectEditing\IEditor;
use OCP\IConfig;
/**
@ -42,8 +46,9 @@ class Capabilities implements ICapability {
*
* @param IConfig $config
*/
public function __construct(IConfig $config) {
public function __construct(IConfig $config, Manager $manager) {
$this->config = $config;
$this->directEditingManager = $manager;
}
/**
@ -56,7 +61,43 @@ class Capabilities implements ICapability {
'files' => [
'bigfilechunking' => true,
'blacklisted_files' => $this->config->getSystemValue('blacklisted_files', ['.htaccess']),
'directEditing' => $this->getDirectEditingCapabilitites()
],
];
}
private function getDirectEditingCapabilitites() {
$capabilities = [
'editors' => [],
'creators' => []
];
/**
* @var string $id
* @var IEditor $editor
*/
foreach ($this->directEditingManager->getEditors() as $id => $editor) {
$capabilities['editors'][$id] = [
'name' => $editor->getName(),
'mimetypes' => $editor->getMimetypes(),
'optionalMimetypes' => $editor->getMimetypesOptional(),
'secure' => $editor->isSecure(),
];
/** @var ACreateEmpty|ACreateFromTemplate $creator */
foreach ($editor->getCreators() as $creator) {
$id = $creator->getId();
$capabilities['creators'][$id] = [
'id' => $id,
'name' => $creator->getName(),
'extension' => $creator->getExtension(),
'templates' => false
];
if ($creator instanceof ACreateFromTemplate) {
$capabilities['creators'][$id]['templates'] = true;
}
}
}
return $capabilities;
}
}

View File

@ -62,48 +62,6 @@ class DirectEditingController extends OCSController {
$this->urlGenerator = $urlGenerator;
}
/**
* @NoAdminRequired
*
* @return DataResponse
*/
public function get(): DataResponse {
$this->eventDispatcher->dispatch(RegisterDirectEditorEvent::class, new RegisterDirectEditorEvent($this->directEditingManager));
$capabilities = [
'editors' => [],
'creators' => []
];
/**
* @var string $id
* @var IEditor $editor
*/
foreach ($this->directEditingManager->getEditors() as $id => $editor) {
$capabilities['editors'][$id] = [
'name' => $editor->getName(),
'mimetypes' => $editor->getMimetypes(),
'optionalMimetypes' => $editor->getMimetypesOptional(),
'secure' => $editor->isSecure(),
];
/** @var ACreateEmpty|ACreateFromTemplate $creator */
foreach ($editor->getCreators() as $creator) {
$id = $creator->getId();
$capabilities['creators'][$id] = [
'id' => $id,
'name' => $creator->getName(),
'extension' => $creator->getExtension(),
'templates' => false
];
if ($creator instanceof ACreateFromTemplate) {
$capabilities['creators'][$id]['templates'] = true;
}
}
}
return new DataResponse($capabilities);
}
/**
* @NoAdminRequired
*/

View File

@ -32,6 +32,8 @@ use OCP\DirectEditing\ACreateFromTemplate;
use OCP\DirectEditing\IEditor;
use \OCP\DirectEditing\IManager;
use OCP\DirectEditing\IToken;
use OCP\DirectEditing\RegisterDirectEditorEvent;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\File;
use OCP\Files\IRootFolder;
use OCP\Files\NotFoundException;
@ -47,7 +49,7 @@ class Manager implements IManager {
public const TABLE_TOKENS = 'direct_edit';
/** @var IEditor[] */
private $editors;
private $editors = [];
/** @var IDBConnection */
private $connection;
@ -62,12 +64,15 @@ class Manager implements IManager {
ISecureRandom $random,
IDBConnection $connection,
IUserSession $userSession,
IRootFolder $rootFolder
IRootFolder $rootFolder,
IEventDispatcher $eventDispatcher
) {
$this->random = $random;
$this->connection = $connection;
$this->userId = $userSession->getUser() ? $userSession->getUser()->getUID() : null;
$this->rootFolder = $rootFolder;
$eventDispatcher->dispatch(RegisterDirectEditorEvent::class, new RegisterDirectEditorEvent($this));
}
public function registerDirectEditor(IEditor $directEditor): void {