Browse Source
Get the parent directory before creating a file from a template
Signed-off-by: Julius Härtl <jus@bitgrid.net>
pull/26396/head
Julius Härtl
5 years ago
No known key found for this signature in database
GPG Key ID: 4C614C6ED2CDE6DF
3 changed files with
28 additions and
8 deletions
-
lib/private/DirectEditing/Manager.php
-
lib/private/Files/Template/TemplateManager.php
-
tests/lib/DirectEditing/ManagerTest.php
|
|
|
@ -27,6 +27,7 @@ |
|
|
|
namespace OC\DirectEditing; |
|
|
|
|
|
|
|
use Doctrine\DBAL\FetchMode; |
|
|
|
use OC\Files\Node\Folder; |
|
|
|
use OCP\AppFramework\Http\NotFoundResponse; |
|
|
|
use OCP\AppFramework\Http\Response; |
|
|
|
use OCP\AppFramework\Http\TemplateResponse; |
|
|
|
@ -130,7 +131,12 @@ class Manager implements IManager { |
|
|
|
if ($userFolder->nodeExists($path)) { |
|
|
|
throw new \RuntimeException('File already exists'); |
|
|
|
} else { |
|
|
|
$file = $userFolder->newFile($path); |
|
|
|
if (!$userFolder->nodeExists(dirname($path))) { |
|
|
|
throw new \RuntimeException('Invalid path'); |
|
|
|
} |
|
|
|
/** @var Folder $folder */ |
|
|
|
$folder = $userFolder->get(dirname($path)); |
|
|
|
$file = $folder->newFile(basename($path)); |
|
|
|
$editor = $this->getEditor($editorId); |
|
|
|
$creators = $editor->getCreators(); |
|
|
|
foreach ($creators as $creator) { |
|
|
|
|
|
|
|
@ -155,7 +155,11 @@ class TemplateManager implements ITemplateManager { |
|
|
|
} catch (NotFoundException $e) { |
|
|
|
} |
|
|
|
try { |
|
|
|
$targetFile = $userFolder->newFile($filePath); |
|
|
|
if (!$userFolder->nodeExists(dirname($filePath))) { |
|
|
|
throw new GenericFileException($this->l10n->t('Invalid path')); |
|
|
|
} |
|
|
|
$folder = $userFolder->get(dirname($filePath)); |
|
|
|
$targetFile = $folder->newFile(basename($filePath)); |
|
|
|
if ($templateType === 'user' && $templateId !== '') { |
|
|
|
$template = $userFolder->get($templateId); |
|
|
|
$template->copy($targetFile->getPath()); |
|
|
|
|
|
|
|
@ -154,11 +154,16 @@ class ManagerTest extends TestCase { |
|
|
|
$this->random->expects($this->once()) |
|
|
|
->method('generate') |
|
|
|
->willReturn($expectedToken); |
|
|
|
$folder = $this->createMock(Folder::class); |
|
|
|
$this->userFolder |
|
|
|
->method('nodeExists') |
|
|
|
->with('/File.txt') |
|
|
|
->willReturn(false); |
|
|
|
$this->userFolder->expects($this->once()) |
|
|
|
->withConsecutive(['/File.txt'], ['/']) |
|
|
|
->willReturnOnConsecutiveCalls(false, true); |
|
|
|
$this->userFolder |
|
|
|
->method('get') |
|
|
|
->with('/') |
|
|
|
->willReturn($folder); |
|
|
|
$folder->expects($this->once()) |
|
|
|
->method('newFile') |
|
|
|
->willReturn($file); |
|
|
|
$token = $this->manager->create('/File.txt', 'testeditor', 'createEmpty'); |
|
|
|
@ -174,11 +179,16 @@ class ManagerTest extends TestCase { |
|
|
|
$this->random->expects($this->once()) |
|
|
|
->method('generate') |
|
|
|
->willReturn($expectedToken); |
|
|
|
$folder = $this->createMock(Folder::class); |
|
|
|
$this->userFolder |
|
|
|
->method('nodeExists') |
|
|
|
->with('/File.txt') |
|
|
|
->willReturn(false); |
|
|
|
$this->userFolder->expects($this->once()) |
|
|
|
->withConsecutive(['/File.txt'], ['/']) |
|
|
|
->willReturnOnConsecutiveCalls(false, true); |
|
|
|
$this->userFolder |
|
|
|
->method('get') |
|
|
|
->with('/') |
|
|
|
->willReturn($folder); |
|
|
|
$folder->expects($this->once()) |
|
|
|
->method('newFile') |
|
|
|
->willReturn($file); |
|
|
|
$this->manager->create('/File.txt', 'testeditor', 'createEmpty'); |
|
|
|
|