Move editor list to capabilities
Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
parent
c8d3e32190
commit
bc36cc808f
|
@ -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}',
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
*/
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue