This commit is contained in:
Dennis Eichhorn 2024-02-04 20:34:12 +00:00
parent 6f4d839a3c
commit 7b9d28d1b3
3 changed files with 52 additions and 46 deletions

View File

@ -4,6 +4,10 @@ import { Editor } from './Models/Editor.js';
Autoloader.defineNamespace('omsApp.Modules'); 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 { omsApp.Modules.Editor = class {
constructor(app) constructor(app)
{ {

View File

@ -126,8 +126,10 @@ final class ApiController extends Controller
/** @var \Modules\Admin\Models\Account $account */ /** @var \Modules\Admin\Models\Account $account */
$account = AccountMapper::get()->where('id', $request->header->account)->execute(); $account = AccountMapper::get()->where('id', $request->header->account)->execute();
$collection = null;
if (!empty($uploadedFiles = $request->files)) { if (!empty($uploadedFiles = $request->files)) {
$uploaded = $this->app->moduleManager->get('Media')->uploadFiles( $uploaded = $this->app->moduleManager->get('Media', 'Api')->uploadFiles(
[], [],
[], [],
$uploadedFiles, $uploadedFiles,
@ -136,20 +138,17 @@ final class ApiController extends Controller
$path, $path,
); );
$collection = null;
foreach ($uploaded as $media) { foreach ($uploaded as $media) {
$accountPath = '/Accounts/' . $account->id . ' ' . $account->login $accountPath = '/Accounts/' . $account->id . ' ' . $account->login
. '/Editor/' . '/Editor/'
. $doc->createdAt->format('Y/m') . $doc->createdAt->format('Y/m')
. '/' . $doc->id; . '/' . $doc->id;
if ($collection === null) { $collection ??= $this->app->moduleManager->get('Media')->createRecursiveMediaCollection(
$collection = $this->app->moduleManager->get('Media')->createRecursiveMediaCollection( $accountPath,
$accountPath, $request->header->account,
$request->header->account, __DIR__ . '/../../../Modules/Media/Files/Accounts/' . $account->id . '/Editor/' . $doc->createdAt->format('Y/m') . '/' . $doc->id
__DIR__ . '/../../../Modules/Media/Files/Accounts/' . $account->id . '/Editor/' . $doc->createdAt->format('Y/m') . '/' . $doc->id );
);
}
$this->createModelRelation( $this->createModelRelation(
$request->header->account, $request->header->account,
@ -181,46 +180,42 @@ final class ApiController extends Controller
} }
} }
if (!empty($mediaFiles = $request->getDataJson('media'))) { $mediaFiles = $request->getDataJson('media');
$collection = null; foreach ($mediaFiles as $media) {
foreach ($mediaFiles as $media) { $collection ??= $this->app->moduleManager->get('Media')->createRecursiveMediaCollection(
if ($collection === null) { $path,
$collection = $this->app->moduleManager->get('Media')->createRecursiveMediaCollection( $request->header->account,
$path, __DIR__ . '/../../../Modules/Media/Files' . $path
$request->header->account, );
__DIR__ . '/../../../Modules/Media/Files' . $path
);
}
$this->createModelRelation( $this->createModelRelation(
$request->header->account, $request->header->account,
$doc->id, $doc->id,
(int) $media, (int) $media,
EditorDocMapper::class, EditorDocMapper::class,
'files', 'files',
'', '',
$request->getOrigin() $request->getOrigin()
); );
$refMedia = MediaMapper::get()->where('id', $media)->execute(); $refMedia = MediaMapper::get()->where('id', $media)->execute();
$ref = new Reference(); $ref = new Reference();
$ref->name = $refMedia->name; $ref->name = $refMedia->name;
$ref->source = new NullMedia((int) $media); $ref->source = new NullMedia((int) $media);
$ref->createdBy = new NullAccount($request->header->account); $ref->createdBy = new NullAccount($request->header->account);
$ref->setVirtualPath($path); $ref->setVirtualPath($path);
$this->createModel($request->header->account, $ref, ReferenceMapper::class, 'media_reference', $request->getOrigin()); $this->createModel($request->header->account, $ref, ReferenceMapper::class, 'media_reference', $request->getOrigin());
$this->createModelRelation( $this->createModelRelation(
$request->header->account, $request->header->account,
$collection->id, $collection->id,
$ref->id, $ref->id,
CollectionMapper::class, CollectionMapper::class,
'sources', 'sources',
'', '',
$request->getOrigin() $request->getOrigin()
); );
}
} }
} }
@ -408,7 +403,7 @@ final class ApiController extends Controller
return; return;
} }
$uploaded = $this->app->moduleManager->get('Media')->uploadFiles( $uploaded = $this->app->moduleManager->get('Media', 'Api')->uploadFiles(
names: $request->getDataList('names'), names: $request->getDataList('names'),
fileNames: $request->getDataList('filenames'), fileNames: $request->getDataList('filenames'),
files: $uploadedFiles, files: $uploadedFiles,

View File

@ -0,0 +1,7 @@
{
"id": "{id}",
"title": "{title}",
"content": "{content}",
"language": "{language}",
"tags": ["{tags}"]
}