Simplify template and improve/fix upload functionality

This commit is contained in:
Dennis Eichhorn 2019-04-22 16:35:39 +02:00
parent e084c7004a
commit 011df2a6d1
7 changed files with 28 additions and 32 deletions

View File

@ -1,6 +1,9 @@
import { Autoloader } from '../../jsOMS/Autoloader.js';
import { Application } from '../../Web/Backend/js/backend.js';
import { Upload } from './Models/Upload.js';
import { NotificationMessage } from '../../jsOMS/Message/Notification/NotificationMessage.js';
import { NotificationLevel } from '../../jsOMS/Message/Notification/NotificationLevel.js';
import { NotificationType } from '../../jsOMS/Message/Notification/NotificationType.js';
Autoloader.defineNamespace('jsOMS.Modules');
@ -53,11 +56,18 @@ jsOMS.Modules.Media = class {
uploader.setSuccess(e.id, function (type, response)
{
document.querySelector('input[form=' + e.id + '][type=file]+input[form=' + e.id + '][type=hidden]').value = JSON.stringify(response);
self.app.notifyManager.send(
new NotificationMessage(response[0].status, response[0].title, response[0].message), NotificationType.APP_NOTIFICATION
);
document.querySelector(
'#' + e.id + ' input[type=file]+input[type=hidden], '
+ 'input[form=' + e.id + '][type=file]+input[type=hidden]'
).value = response[0].response;
self.app.eventManager.trigger(form.id, requestId);
});
uploader.setUri('{/base}/{/lang}/api/media');
uploader.setUri('api/media');
const length = fileFields.length;
let fileLength = 0;

View File

@ -20,6 +20,7 @@ use Modules\Media\Models\Collection;
use Modules\Media\Models\CollectionMapper;
use Modules\Media\Models\UploadFile;
use Modules\Media\Models\UploadStatus;
use phpOMS\Message\NotificationLevel;
use phpOMS\Message\RequestAbstract;
use phpOMS\Message\ResponseAbstract;
@ -88,25 +89,7 @@ final class ApiController extends Controller
$ids[] = $file->getId();
}
$this->fillJsonRawResponse($request, $response, $ids);
}
/**
* Shows api content.
*
* @param RequestAbstract $request Request
* @param ResponseAbstract $response Response
* @param mixed $data Generic data
*
* @return void
*
* @api
*
* @since 1.0.0
*/
public function apiMediaCreate(RequestAbstract $request, ResponseAbstract $response, $data = null) : void
{
// todo: change database entry for files if has write permission
$this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Media', 'Media successfully created.', $ids);
}
/**

View File

@ -98,8 +98,7 @@ final class BackendController extends Controller
{
/** @var \phpOMS\Model\Html\Head $head */
$head = $response->get('Content')->getData('head');
$head->addAsset(AssetType::JSLATE, 'Modules/Media/Models/Upload.js');
$head->addAsset(AssetType::JSLATE, 'Modules/Media/Controller.js');
$head->addAsset(AssetType::JSLATE, 'Modules/Media/Controller.js', ['type' => 'module']);
}
/**

View File

@ -1,3 +1,8 @@
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';
/**
* Media uploader.
*
@ -157,6 +162,7 @@ export class Upload {
request.setSuccess(function (xhr)
{
try {
console.log(xhr.response);
const response = JSON.parse(xhr.response);
if (!self.success[formId]) {

View File

@ -180,11 +180,13 @@ class UploadFile
}
if ($this->isInterlaced && \in_array($extension, FileUtils::IMAGE_EXTENSION)) {
$this->interlace($extension, $dest);
// todo: interlacing somehow messes up some images (tested with logo.png from assets)
//$this->interlace($extension, $dest);
}
if ($encoding !== '') {
FileUtils::changeFileEncoding($dest, $encoding);
// changing encoding bugs out image files
//FileUtils::changeFileEncoding($dest, $encoding);
}
$result[$key]['path'] = \realpath($this->outputDir);
@ -255,7 +257,7 @@ class UploadFile
return;
}
\imageinterlace($img, (int) $this->isInterlaced);
\imageinterlace($img, $this->isInterlaced ? 1 : 0);
if ($extension === 'png') {
\imagepng($img, $path);

View File

@ -20,12 +20,8 @@ echo $this->getData('nav')->render(); ?>
<section class="box wf-100">
<header><h1><?= $this->getHtml('Upload') ?></h1></header>
<div class="inner">
<form method="POST" id="media-uploader" action="<?= \phpOMS\Uri\UriFactory::build('{/api}media'); ?>">
<form method="POST" id="media-uploader" action="">
<table class="layout wf-100">
<tr><td><label for="iName"><?= $this->getHtml('Name') ?></label>
<tr><td><input type="text" id="iName" name="name" placeholder="&#xf040;">
<tr><td><label for="iDescription"><?= $this->getHtml('Description') ?></label>
<tr><td><textarea id="iDescription" name="description"></textarea>
<tr><td><label for="iFiles"><?= $this->getHtml('Files') ?></label>
<tr><td><input type="file" id="iFiles" name="files" multiple><input name="media" type="hidden">
<tr><td><input type="submit" id="iMediaCreate" name="mediaCreateButton" value="<?= $this->getHtml('Create', 0, 0); ?>">

View File

@ -99,7 +99,7 @@ echo $this->getData('nav')->render();
$path = $this->filePathFunction($media, $this->request->getData('sub') ?? '');
if ($this->isImageFunction($media, $path)) : ?>
<div class="h-overflow">
<div class="h-overflow centerText">
<img src="<?= $media->isAbsolute() ? $this->printHtml($path) : $this->printHtml($this->request->getUri()->getBase() . $path); ?>">
</div>
<?php else : ?>