mirror of
https://github.com/Karaka-Management/oms-Media.git
synced 2026-01-14 02:18:41 +00:00
106 lines
3.0 KiB
JavaScript
106 lines
3.0 KiB
JavaScript
(function (jsOMS)
|
|
{
|
|
"use strict";
|
|
|
|
jsOMS.Autoloader.defineNamespace('jsOMS.Modules.Models.Media');
|
|
|
|
jsOMS.Modules.Models.Media.Upload = function (responseManager)
|
|
{
|
|
this.responseManager = responseManager;
|
|
this.success = [];
|
|
|
|
this.uri = '';
|
|
this.allowedTypes = [];
|
|
this.maxFileSize = 0;
|
|
this.files = [];
|
|
};
|
|
|
|
jsOMS.Modules.Models.Media.Upload.prototype.setMaxFileSize = function (size)
|
|
{
|
|
this.maxFileSize = size;
|
|
};
|
|
|
|
jsOMS.Modules.Models.Media.Upload.prototype.getMaxFileSize = function (size)
|
|
{
|
|
return this.maxFileSize;
|
|
};
|
|
|
|
jsOMS.Modules.Models.Media.Upload.prototype.setSuccess = function (id, callback)
|
|
{
|
|
this.success[id] = callback;
|
|
};
|
|
|
|
jsOMS.Modules.Models.Media.Upload.prototype.setUri = function (uri)
|
|
{
|
|
this.uri = uri;
|
|
};
|
|
|
|
jsOMS.Modules.Models.Media.Upload.prototype.setAllowedTypes = function (allowed)
|
|
{
|
|
this.allowedTypes = allowed;
|
|
};
|
|
|
|
jsOMS.Modules.Models.Media.Upload.prototype.addAllowedType = function (allowed)
|
|
{
|
|
this.allowedTypes.push(allowed);
|
|
};
|
|
|
|
jsOMS.Modules.Models.Media.Upload.prototype.setMaxFileSize = function (size)
|
|
{
|
|
this.maxFileSize = size;
|
|
};
|
|
|
|
jsOMS.Modules.Models.Media.Upload.prototype.addFile = function (file)
|
|
{
|
|
this.files.push(file);
|
|
};
|
|
|
|
jsOMS.Modules.Models.Media.Upload.prototype.count = function ()
|
|
{
|
|
return this.files.length;
|
|
};
|
|
|
|
// todo: maybe do file upload together with data upload in FormData.
|
|
// let the module forward the files to the media module?!
|
|
jsOMS.Modules.Models.Media.Upload.prototype.upload = function (formId)
|
|
{
|
|
// TODO: validate file type + file size
|
|
|
|
let request = new jsOMS.Message.Request.Request(),
|
|
formData = new FormData(),
|
|
self = this;
|
|
|
|
this.files.forEach(function (element, index)
|
|
{
|
|
formData.append('file' + index, element);
|
|
});
|
|
|
|
request.setData(formData);
|
|
request.setType(jsOMS.Message.Request.RequestType.RAW);
|
|
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);
|
|
|
|
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]);
|
|
}
|
|
}
|
|
} catch (e) {
|
|
jsOMS.Log.Logger.instance.error(e);
|
|
jsOMS.Log.Logger.instance.error('Invalid media upload response: ' + xhr.response);
|
|
|
|
return false;
|
|
}
|
|
});
|
|
|
|
request.send();
|
|
};
|
|
}(window.jsOMS = window.jsOMS || {}));
|