From 7b9d28d1b319d82f5def3caa852dc537ae26c81c Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Sun, 4 Feb 2024 20:34:12 +0000 Subject: [PATCH] update --- Controller.js | 4 ++ Controller/ApiController.php | 87 +++++++++++++++++------------------ Models/Elastic/EditorDoc.json | 7 +++ 3 files changed, 52 insertions(+), 46 deletions(-) create mode 100644 Models/Elastic/EditorDoc.json diff --git a/Controller.js b/Controller.js index 0f4f8ae..0543c29 100755 --- a/Controller.js +++ b/Controller.js @@ -4,6 +4,10 @@ import { Editor } from './Models/Editor.js'; Autoloader.defineNamespace('omsApp.Modules'); +/** + * @feature Create immediate text preview similar to a rich text editor or Typora + * https://github.com/Karaka-Management/oms-Editor/issues/4 + */ omsApp.Modules.Editor = class { constructor(app) { diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 1635729..0e255e9 100755 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -126,8 +126,10 @@ final class ApiController extends Controller /** @var \Modules\Admin\Models\Account $account */ $account = AccountMapper::get()->where('id', $request->header->account)->execute(); + $collection = null; + if (!empty($uploadedFiles = $request->files)) { - $uploaded = $this->app->moduleManager->get('Media')->uploadFiles( + $uploaded = $this->app->moduleManager->get('Media', 'Api')->uploadFiles( [], [], $uploadedFiles, @@ -136,20 +138,17 @@ final class ApiController extends Controller $path, ); - $collection = null; foreach ($uploaded as $media) { $accountPath = '/Accounts/' . $account->id . ' ' . $account->login . '/Editor/' . $doc->createdAt->format('Y/m') . '/' . $doc->id; - if ($collection === null) { - $collection = $this->app->moduleManager->get('Media')->createRecursiveMediaCollection( - $accountPath, - $request->header->account, - __DIR__ . '/../../../Modules/Media/Files/Accounts/' . $account->id . '/Editor/' . $doc->createdAt->format('Y/m') . '/' . $doc->id - ); - } + $collection ??= $this->app->moduleManager->get('Media')->createRecursiveMediaCollection( + $accountPath, + $request->header->account, + __DIR__ . '/../../../Modules/Media/Files/Accounts/' . $account->id . '/Editor/' . $doc->createdAt->format('Y/m') . '/' . $doc->id + ); $this->createModelRelation( $request->header->account, @@ -181,46 +180,42 @@ final class ApiController extends Controller } } - if (!empty($mediaFiles = $request->getDataJson('media'))) { - $collection = null; - foreach ($mediaFiles as $media) { - if ($collection === null) { - $collection = $this->app->moduleManager->get('Media')->createRecursiveMediaCollection( - $path, - $request->header->account, - __DIR__ . '/../../../Modules/Media/Files' . $path - ); - } + $mediaFiles = $request->getDataJson('media'); + foreach ($mediaFiles as $media) { + $collection ??= $this->app->moduleManager->get('Media')->createRecursiveMediaCollection( + $path, + $request->header->account, + __DIR__ . '/../../../Modules/Media/Files' . $path + ); - $this->createModelRelation( - $request->header->account, - $doc->id, - (int) $media, - EditorDocMapper::class, - 'files', - '', - $request->getOrigin() - ); + $this->createModelRelation( + $request->header->account, + $doc->id, + (int) $media, + EditorDocMapper::class, + 'files', + '', + $request->getOrigin() + ); - $refMedia = MediaMapper::get()->where('id', $media)->execute(); + $refMedia = MediaMapper::get()->where('id', $media)->execute(); - $ref = new Reference(); - $ref->name = $refMedia->name; - $ref->source = new NullMedia((int) $media); - $ref->createdBy = new NullAccount($request->header->account); - $ref->setVirtualPath($path); + $ref = new Reference(); + $ref->name = $refMedia->name; + $ref->source = new NullMedia((int) $media); + $ref->createdBy = new NullAccount($request->header->account); + $ref->setVirtualPath($path); - $this->createModel($request->header->account, $ref, ReferenceMapper::class, 'media_reference', $request->getOrigin()); - $this->createModelRelation( - $request->header->account, - $collection->id, - $ref->id, - CollectionMapper::class, - 'sources', - '', - $request->getOrigin() - ); - } + $this->createModel($request->header->account, $ref, ReferenceMapper::class, 'media_reference', $request->getOrigin()); + $this->createModelRelation( + $request->header->account, + $collection->id, + $ref->id, + CollectionMapper::class, + 'sources', + '', + $request->getOrigin() + ); } } @@ -408,7 +403,7 @@ final class ApiController extends Controller return; } - $uploaded = $this->app->moduleManager->get('Media')->uploadFiles( + $uploaded = $this->app->moduleManager->get('Media', 'Api')->uploadFiles( names: $request->getDataList('names'), fileNames: $request->getDataList('filenames'), files: $uploadedFiles, diff --git a/Models/Elastic/EditorDoc.json b/Models/Elastic/EditorDoc.json new file mode 100644 index 0000000..3aa7e63 --- /dev/null +++ b/Models/Elastic/EditorDoc.json @@ -0,0 +1,7 @@ +{ + "id": "{id}", + "title": "{title}", + "content": "{content}", + "language": "{language}", + "tags": ["{tags}"] +} \ No newline at end of file