mirror of
https://github.com/Karaka-Management/oms-Media.git
synced 2026-01-26 15:58:41 +00:00
cleanup, media fixes, news fixes
This commit is contained in:
parent
02da68fcb9
commit
9a9efe4ab0
|
|
@ -9,7 +9,7 @@ return [
|
|||
'^.*/media(\?+.*|$)' => [
|
||||
[
|
||||
'dest' => '\Modules\Media\Controller\ApiController:apiMediaUpload',
|
||||
'verb' => RouteVerb::SET,
|
||||
'verb' => RouteVerb::PUT,
|
||||
'permission' => [
|
||||
'module' => ApiController::MODULE_NAME,
|
||||
'type' => PermissionType::CREATE,
|
||||
|
|
@ -21,6 +21,15 @@ return [
|
|||
],
|
||||
],
|
||||
],
|
||||
[
|
||||
'dest' => '\Modules\Media\Controller\ApiController:apiMediaUpdate',
|
||||
'verb' => RouteVerb::PUT,
|
||||
'permission' => [
|
||||
'module' => ApiController::MODULE_NAME,
|
||||
'type' => PermissionType::CREATE,
|
||||
'state' => PermissionState::MEDIA,
|
||||
],
|
||||
],
|
||||
],
|
||||
// todo: the order of find is bad but needed for now.
|
||||
'^.*/media/find.*$' => [
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ final class ApiController extends Controller
|
|||
}
|
||||
|
||||
/**
|
||||
* Shows api content.
|
||||
* Api method to upload media file.
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
|
|
@ -209,4 +209,52 @@ final class ApiController extends Controller
|
|||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Api method to update media.
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
* @param ResponseAbstract $response Response
|
||||
* @param mixed $data Generic data
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @api
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public function apiMediaUpdate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
|
||||
{
|
||||
$old = clone MediaMapper::get((int) $request->getData('id'));
|
||||
$new = $this->updateMediaFromRequest($request);
|
||||
$this->updateModel($request, $old, $new, MediaMapper::class, 'media');
|
||||
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Media', 'Media successfully updated', $new);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to update media from request.
|
||||
*
|
||||
* @param RequestAbstract $request Request
|
||||
*
|
||||
* @return Media
|
||||
*
|
||||
* @since 1.0.0
|
||||
*/
|
||||
private function updateMediaFromRequest(RequestAbstract $request) : Media
|
||||
{
|
||||
$media = MediaMapper::get((int) $request->getData('id'));
|
||||
$media->setName((string) ($request->getData('name') ?? $media->getName()));
|
||||
$media->setVirtualPath((string) ($request->getData('virtualpath') ?? $media->getVirtualPath()));
|
||||
|
||||
if ($request->getData('content') !== null) {
|
||||
\file_put_contents(
|
||||
$media->isAbsolute() ? $media->getPath() : __DIR__ . '/../../../../' . \ltrim($media->getPath(), '/'),
|
||||
$request->getData('content')
|
||||
);
|
||||
|
||||
$media->setSize(\strlen($request->getData('content')));
|
||||
}
|
||||
|
||||
return $media;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { Request } from '../../../jsOMS/Message/Request/Request.js';
|
||||
import { RequestType } from '../../../jsOMS/Message/Request/RequestType.js';
|
||||
import { RequestMethod } from '../../../jsOMS/Message/Request/RequestMethod.js';
|
||||
import { Logger } from '../../../jsOMS/Log/Logger.js';
|
||||
import { Request } from '../../../jsOMS/Message/Request/Request.js';
|
||||
import { RequestMethod } from '../../../jsOMS/Message/Request/RequestMethod.js';
|
||||
import { RequestType } from '../../../jsOMS/Message/Request/RequestType.js';
|
||||
|
||||
/**
|
||||
* Media uploader.
|
||||
|
|
@ -157,7 +157,7 @@ export class Upload {
|
|||
request.setData(formData);
|
||||
request.setType(RequestType.FILE);
|
||||
request.setUri(this.uri);
|
||||
request.setMethod(RequestMethod.POST);
|
||||
request.setMethod(RequestMethod.PUT);
|
||||
request.setRequestHeader('HTTP_X_REQUESTED_WITH', 'XMLHttpRequest');
|
||||
request.setSuccess(function (xhr)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -93,26 +93,36 @@ echo $this->getData('nav')->render();
|
|||
</div>
|
||||
<?php else: ?>
|
||||
<div class="col-xs-12">
|
||||
<section class="box wf-100">
|
||||
<section id="mediaFile" class="box wf-100"
|
||||
data-ui-content=".inner"
|
||||
data-ui-element="#mediaFile .textContent"
|
||||
data-tag="form"
|
||||
data-method="POST"
|
||||
data-uri="<?= \phpOMS\Uri\UriFactory::build('{/api}media?{?}&csrf={$CSRF}'); ?>">
|
||||
<div class="inner">
|
||||
<?php
|
||||
$path = $this->filePathFunction($media, $this->request->getData('sub') ?? '');
|
||||
|
||||
if ($this->isImageFunction($media, $path)) : ?>
|
||||
if ($this->isImageFile($media, $path)) : ?>
|
||||
<div class="h-overflow centerText">
|
||||
<img src="<?= $media->isAbsolute() ? $this->printHtml($path) : $this->printHtml($this->request->getUri()->getBase() . $path); ?>">
|
||||
</div>
|
||||
<?php else : ?>
|
||||
<button class="floatRight">Edit</button>
|
||||
<?php elseif ($this->isTextFile($media, $path)) : ?>
|
||||
<div class="vC">
|
||||
<button class="save hidden"><?= $this->getHtml('Save', '0', '0') ?></button>
|
||||
<button class="cancel hidden"><?= $this->getHtml('Cancel', '0', '0') ?></button>
|
||||
<button class="update"><?= $this->getHtml('Edit', '0', '0') ?></button>
|
||||
</div>
|
||||
<!-- if markdown show markdown editor, if image show image editor, if text file show textarea only on edit -->
|
||||
|
||||
<?php if (!\file_exists($media->isAbsolute() ? $path : __DIR__ . '/../../../../' . \ltrim($path, '/'))) : ?>
|
||||
<div class="centerText"><i class="fa fa-question fa-5x"></i></div>
|
||||
<?php else : ?>
|
||||
<pre>
|
||||
<?php
|
||||
$output = $this->lineContentFunction($media->isAbsolute() ? $path : __DIR__ . '/../../../../' . \ltrim($path, '/'));
|
||||
foreach ($output as $line) : ?><span><?= $this->printHtml($line); ?></span><?php endforeach; ?>
|
||||
</pre>
|
||||
<template></template><!-- todo: this is required because of selectorLength + i in Form.js = first element = add template, second element = edit element. Fix -->
|
||||
<template>
|
||||
<textarea class="textContent" data-tpl-text="/media/content" data-tpl-value="/media/content" name="content"></textarea>
|
||||
</template>
|
||||
<pre class="textContent" data-tpl-text="/media/content" data-tpl-value="/media/content"><?= $this->getFileContent($media->isAbsolute() ? $path : __DIR__ . '/../../../../' . \ltrim($path, '/')); ?></pre>
|
||||
<?php endif; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -69,6 +69,14 @@ class MediaView extends View
|
|||
);
|
||||
}
|
||||
|
||||
protected function getFileContent(string $path) : string
|
||||
{
|
||||
$output = \file_get_contents($path);
|
||||
$output = \str_replace(["\r\n", "\r"], "\n", $output);
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
protected function lineContentFunction(string $path) : array
|
||||
{
|
||||
$output = \file_get_contents($path);
|
||||
|
|
@ -77,9 +85,18 @@ class MediaView extends View
|
|||
return \explode("\n", $output);
|
||||
}
|
||||
|
||||
protected function isImageFunction(Media $media, string $path) : bool
|
||||
protected function isImageFile(Media $media, string $path) : bool
|
||||
{
|
||||
return FileUtils::getExtensionType($media->getExtension()) === ExtensionType::IMAGE
|
||||
|| FileUtils::getExtensionType(File::extension($path)) === ExtensionType::IMAGE;
|
||||
}
|
||||
|
||||
protected function isTextFile(Media $media, string $path) : bool
|
||||
{
|
||||
$mediaExtension = FileUtils::getExtensionType($media->getExtension());
|
||||
$pathExtension = FileUtils::getExtensionType(File::extension($path));
|
||||
|
||||
return $mediaExtension === ExtensionType::TEXT || $pathExtension === ExtensionType::TEXT
|
||||
|| $mediaExtension === ExtensionType::CODE || $pathExtension === ExtensionType::CODE;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user