diff --git a/Controller.js b/Controller.js
index de41b0c..1534bd5 100644
--- a/Controller.js
+++ b/Controller.js
@@ -29,25 +29,32 @@
const self = this;
- if (!form.querySelector('input[type=file]')|| !document.querySelector('input[type=file][form=' + form.id + ']')) {
+ if (!form.querySelector('input[type=file]') || !document.querySelector('input[type=file][form=' + form.id + ']')) {
try {
// Inject media upload into form view
- this.app.uiManager.getFormManager().get(form.id).injectSubmit(function (e, requestId, requestGroup)
+ this.app.uiManager.getFormManager().get(form.id).injectSubmit(function (e, requestId)
{
/** global: jsOMS */
- let fileFields = e.querySelectorAll('input[type=file]'),
+ let fileFields = document.querySelectorAll(
+ '#' + e.id + ' input[type=file], '
+ + 'input[form=' + e.id + '][type=file]'
+ ),
uploader = new jsOMS.Modules.Models.Media.Upload(self.app.responseManager);
uploader.setSuccess(e.id, function (type, response)
{
- e.querySelector('input[type=file]+input[type=hidden]').value = JSON.stringify(response.uploads);
- self.app.eventManager.trigger(requestGroup, requestId);
+ document.querySelector('input[form=' + e.id + '][type=file]+input[form=' + e.id + '][type=hidden]').value = JSON.stringify(response);
+ self.app.eventManager.trigger(form.id, requestId);
});
uploader.setUri('{/base}/{/lang}/api/media');
- for (let i = 0; i < fileFields.length; i++) {
- for (let j = 0; j < fileFields[i].files.length; j++) {
+ const length = fileFields.length;
+ let fileLength = 0;
+
+ for (let i = 0; i < length; i++) {
+ fileLength = fileFields[i].files.length;
+ for (let j = 0; j < fileLength; j++) {
uploader.addFile(fileFields[i].files[j]);
}
}
diff --git a/Controller/ApiController.php b/Controller/ApiController.php
index 71cc85e..0d2d22b 100644
--- a/Controller/ApiController.php
+++ b/Controller/ApiController.php
@@ -61,7 +61,7 @@ class ApiController extends Controller
$uploads = $this->uploadFiles(
$request->getFiles(),
$request->getHeader()->getAccount(),
- (string) ($request->getData('path') ?? __DIR__ . '/../../Modules/Media/Files')
+ (string) ($request->getData('path') ?? __DIR__ . '/../../../Modules/Media/Files')
);
$ids = [];
@@ -70,7 +70,7 @@ class ApiController extends Controller
}
$response->getHeader()->set('Content-Type', MimeType::M_JSON . '; charset=utf-8', true);
- $response->set($request->getUri()->__toString(), [['uploads' => $ids, 'type' => 'UI']]);
+ $response->set($request->getUri()->__toString(), $ids);
}
/**
@@ -117,7 +117,7 @@ class ApiController extends Controller
public static function createMediaPath(string $basePath = 'Modules/Media/Files') : string
{
- $rndPath = str_pad(dechex(rand(0, 65535)), 4, '0', STR_PAD_LEFT);
+ $rndPath = \str_pad(\dechex(\mt_rand(0, 65535)), 4, '0', STR_PAD_LEFT);
return $basePath . '/' . $rndPath[0] . $rndPath[1] . '/' . $rndPath[2] . $rndPath[3];
}
diff --git a/Models/Upload.js b/Models/Upload.js
index 6170e1a..07f3a5f 100644
--- a/Models/Upload.js
+++ b/Models/Upload.js
@@ -66,9 +66,9 @@
{
// TODO: validate file type + file size
- let request = new jsOMS.Message.Request.Request(),
- formData = new FormData(),
- self = this;
+ const request = new jsOMS.Message.Request.Request(),
+ formData = new FormData(),
+ self = this;
this.files.forEach(function (element, index)
{
@@ -76,23 +76,22 @@
});
request.setData(formData);
- request.setType(jsOMS.Message.Request.RequestType.RAW);
+ request.setType(jsOMS.Message.Request.RequestType.FILE);
request.setUri(this.uri);
request.setMethod(jsOMS.Message.Request.RequestMethod.POST);
request.setRequestHeader('HTTP_X_REQUESTED_WITH', 'XMLHttpRequest');
request.setSuccess(function (xhr)
{
try {
- let response = JSON.parse(xhr.response);
+ const response = JSON.parse(xhr.response);
- for (let k = 0; k < response.length; ++k) {
- if (!self.success[formId]) {
- self.responseManager.run(response[k].type, response[k]);
- } else {
- self.success[formId](response[k].type, response[k]);
- }
+ if (!self.success[formId]) {
+ self.responseManager.run(null, response);
+ } else {
+ self.success[formId](null, response);
}
} catch (e) {
+ console.log(e);
jsOMS.Log.Logger.instance.error(e);
jsOMS.Log.Logger.instance.error('Invalid media upload response: ' + xhr.response);
}
diff --git a/Models/UploadFile.php b/Models/UploadFile.php
index a6b49c7..67bbdf7 100644
--- a/Models/UploadFile.php
+++ b/Models/UploadFile.php
@@ -156,7 +156,7 @@ class UploadFile
}
if (!\is_dir($path)) {
- Directory::create($path, 0655, true);
+ Directory::create($path, 0755, true);
}
if (!\is_uploaded_file($f['tmp_name'])) {
diff --git a/Theme/Backend/Components/Upload/upload.tpl.php b/Theme/Backend/Components/Upload/upload.tpl.php
index a9eee90..93dabf9 100644
--- a/Theme/Backend/Components/Upload/upload.tpl.php
+++ b/Theme/Backend/Components/Upload/upload.tpl.php
@@ -2,7 +2,7 @@
= $this->getHtml('Media') ?>