diff --git a/lib/private/DirectEditing/Manager.php b/lib/private/DirectEditing/Manager.php index fcaaf9e030..a739402d62 100644 --- a/lib/private/DirectEditing/Manager.php +++ b/lib/private/DirectEditing/Manager.php @@ -40,7 +40,9 @@ use OCP\Files\IRootFolder; use OCP\Files\Node; use OCP\Files\NotFoundException; use OCP\IDBConnection; +use OCP\IL10N; use OCP\IUserSession; +use OCP\L10N\IFactory; use OCP\Security\ISecureRandom; use OCP\Share\IShare; @@ -61,17 +63,21 @@ class Manager implements IManager { private $random; private $userId; private $rootFolder; + /** @var IL10N */ + private $l10n; public function __construct( ISecureRandom $random, IDBConnection $connection, IUserSession $userSession, - IRootFolder $rootFolder + IRootFolder $rootFolder, + IFactory $l10nFactory ) { $this->random = $random; $this->connection = $connection; $this->userId = $userSession->getUser() ? $userSession->getUser()->getUID() : null; $this->rootFolder = $rootFolder; + $this->l10n = $l10nFactory->get('core'); } public function registerDirectEditor(IEditor $directEditor): void { @@ -88,8 +94,24 @@ class Manager implements IManager { } $templates = []; foreach ($this->editors[$editor]->getCreators() as $creator) { - if ($creator instanceof ACreateFromTemplate && $creator->getId() === $type) { - $templates = $creator->getTemplates(); + if ($creator->getId() === $type) { + $templates = [ + 'empty' => [ + 'id' => 'empty', + 'title' => $this->l10n->t('Empty file'), + 'preview' => null + ] + ]; + + if ($creator instanceof ACreateFromTemplate) { + $templates = $creator->getTemplates(); + } + + $templates = array_map(function ($template) use ($creator) { + $template['extension'] = $creator->getExtension(); + $template['mimetype'] = $creator->getMimetype(); + return $template; + }, $templates); } } $return = []; diff --git a/tests/lib/DirectEditing/ManagerTest.php b/tests/lib/DirectEditing/ManagerTest.php index 52a18584d6..a97c02f19d 100644 --- a/tests/lib/DirectEditing/ManagerTest.php +++ b/tests/lib/DirectEditing/ManagerTest.php @@ -13,7 +13,9 @@ use OCP\DirectEditing\IToken; use OCP\Files\Folder; use OCP\Files\IRootFolder; use OCP\IDBConnection; +use OCP\IL10N; use OCP\IUserSession; +use OCP\L10N\IFactory; use OCP\Security\ISecureRandom; use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; @@ -116,6 +118,12 @@ class ManagerTest extends TestCase { $this->userSession = $this->createMock(IUserSession::class); $this->rootFolder = $this->createMock(IRootFolder::class); $this->userFolder = $this->createMock(Folder::class); + $this->l10n = $this->createMock(IL10N::class); + + $l10nFactory = $this->createMock(IFactory::class); + $l10nFactory->expects($this->once()) + ->method('get') + ->willReturn($this->l10n); $this->rootFolder->expects($this->any()) @@ -123,7 +131,7 @@ class ManagerTest extends TestCase { ->willReturn($this->userFolder); $this->manager = new Manager( - $this->random, $this->connection, $this->userSession, $this->rootFolder + $this->random, $this->connection, $this->userSession, $this->rootFolder, $l10nFactory ); $this->manager->registerDirectEditor($this->editor);