From abffbdcd49322be11f15858c5c4fe6382ad35434 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Thu, 11 Jun 2020 14:22:55 +0200 Subject: [PATCH] implement file creation --- Controller/ApiController.php | 16 +++++++++++----- Theme/Backend/media-file-create.tpl.php | 4 ++-- Theme/Backend/media-list.tpl.php | 11 ++++++++--- Theme/Backend/media-single.tpl.php | 23 ++++++++++++++++------- 4 files changed, 37 insertions(+), 17 deletions(-) diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 255f2e5..a3cb712 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -34,6 +34,7 @@ use phpOMS\Message\ResponseAbstract; use phpOMS\Model\Message\FormValidation; use phpOMS\System\MimeType; use phpOMS\Utils\Parser\Markdown\Markdown; +use phpOMS\System\File\Local\Directory; /** * Media class. @@ -327,7 +328,7 @@ final class ApiController extends Controller /** @var Media $media */ $media = MediaMapper::get((int) $request->getData('id')); $media->setName((string) ($request->getData('name') ?? $media->getName())); - $media->setVirtualPath((string) ($request->getData('virtualpath') ?? $media->getVirtualPath())); + $media->setVirtualPath(\urldecode((string) ($request->getData('virtualpath') ?? $media->getVirtualPath()))); if ($request->getData('content') !== null) { \file_put_contents( @@ -473,8 +474,9 @@ final class ApiController extends Controller */ public function apiMediaCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { - $virtualPath = (string) ($request->getData('path') ?? ''); - $fileName = (string) ($request->getData('fileName') ?? ''); + $virtualPath = \urldecode((string) ($request->getData('path') ?? '')); + $fileName = (string) ($request->getData('fileName') ?? ($request->getData('name') ?? '')); + $fileName .= \strripos($fileName, '.') === false ? '.txt' : ''; $pathSettings = (int) ($request->getData('pathsettings') ?? PathSettings::RANDOM_PATH); $outputDir = ''; @@ -484,16 +486,20 @@ final class ApiController extends Controller $outputDir = __DIR__ . '/../../../Modules/Media/Files/' . \ltrim($virtualPath, '\\/'); } + if (!\is_dir($outputDir)) { + Directory::create($outputDir, 0755, true); + } + \file_put_contents($outputDir . '/' . $fileName, (string) ($request->getData('content') ?? '')); $status = [ [ 'status' => UploadStatus::OK, - 'path' => $outputDir . '/' . $fileName, + 'path' => $outputDir, 'filename' => $fileName, 'name' => $request->getData('name') ?? '', 'size' => \strlen((string) ($request->getData('content') ?? '')), - 'extension' => \substr($fileName, \strripos($fileName, '.')), + 'extension' => \substr($fileName, \strripos($fileName, '.') + 1), ], ]; diff --git a/Theme/Backend/media-file-create.tpl.php b/Theme/Backend/media-file-create.tpl.php index 941d321..34a1a31 100755 --- a/Theme/Backend/media-file-create.tpl.php +++ b/Theme/Backend/media-file-create.tpl.php @@ -32,7 +32,7 @@ use phpOMS\Uri\UriFactory;
-
+
@@ -46,7 +46,7 @@ use phpOMS\Uri\UriFactory;
- getData('editor')->getData('text')->render('editor', 'plain', 'fEditor'); ?> + getData('editor')->getData('text')->render('editor', 'content', 'fEditor'); ?>
diff --git a/Theme/Backend/media-list.tpl.php b/Theme/Backend/media-list.tpl.php index 5e1b872..dff5ff2 100755 --- a/Theme/Backend/media-list.tpl.php +++ b/Theme/Backend/media-list.tpl.php @@ -84,14 +84,19 @@ $media = $this->getData('media'); $url = $value->getExtension() === 'collection' ? UriFactory::build('{/prefix}media/list?path=' . \rtrim($value->getVirtualPath(), '/') . '/' . $value->getName()) - : UriFactory::build('{/prefix}media/single?id=' . $value->getId()); + : UriFactory::build('{/prefix}media/single?id=' . $value->getId() . '&path={?path}'); $icon = $fileIconFunction(\phpOMS\System\File\FileUtils::getExtensionType($value->getExtension())); ?> - printHtml( - $value->getExtension() !== 'collection' ? $value->getName() . '.' . $value->getExtension() : $value->getName()); ?> + + printHtml( + $value->getExtension() !== 'collection' + ? $value->getName() . ( + $value->getExtension() !== '' ? '.' . $value->getExtension() : '' + ) : $value->getName()); ?> + printHtml($value->getExtension()); ?> printHtml($value->getSize()); ?> printHtml($value->getCreatedBy()->getName1()); ?> diff --git a/Theme/Backend/media-single.tpl.php b/Theme/Backend/media-single.tpl.php index deb4a48..d1fcda7 100755 --- a/Theme/Backend/media-single.tpl.php +++ b/Theme/Backend/media-single.tpl.php @@ -26,12 +26,21 @@ include __DIR__ . '/template-functions.php'; $media = $this->getData('media'); echo $this->getData('nav')->render(); ?> +request->getData('path') !== null) : ?> +
+
+
+ Back +
+
+
+
-
-

printHtml($media->getName()); ?>

-
+
+
printHtml($media->getName()); ?>
+
getHtml('Name') ?>printHtml($media->getName()); ?> @@ -49,7 +58,7 @@ echo $this->getData('nav')->render();
isCollectionFunction($media, $this->request->getData('sub') ?? '')) : ?>
-
+
@@ -91,17 +100,17 @@ echo $this->getData('nav')->render();
getHtml('Media') ?>
format('Y-m-d'); ?>
-
+
-
-
+
filePathFunction($media, $this->request->getData('sub') ?? '');