Files
NodeBB/public/src/modules/uploader.js

95 lines
2.7 KiB
JavaScript
Raw Normal View History

2015-01-10 19:48:00 -05:00
'use strict';
/* globals define, ajaxify, socket, app, templates */
2015-01-10 19:48:00 -05:00
define('uploader', ['translator', 'cropper'], function (translator, cropper) {
2015-01-10 19:48:00 -05:00
var module = {};
module.open = function (route, params, fileSize, callback) {
console.warn('[uploader] uploader.open() is deprecated, please use uploader.show() instead, and pass parameters as a singe option with callback, e.g. uploader.show({}, callback);');
module.show({
route: route,
params: params,
fileSize: fileSize
}, callback);
};
module.show = function (data, callback) {
2016-03-29 09:59:47 +02:00
var fileSize = data.hasOwnProperty('fileSize') && data.fileSize !== undefined ? parseInt(data.fileSize, 10) : false;
parseModal({
showHelp: data.hasOwnProperty('showHelp') && data.showHelp !== undefined ? data.showHelp : true,
2016-03-29 09:59:47 +02:00
fileSize: fileSize,
2016-02-29 14:23:12 +02:00
title: data.title || '[[global:upload_file]]',
description: data.description || '',
button: data.button || '[[global:upload]]',
2016-05-09 10:22:37 -04:00
accept: data.accept ? data.accept.replace(/,/g, ', ') : ''
}, function (uploadModal) {
2015-09-26 00:08:26 -04:00
uploadModal = $(uploadModal);
2015-09-26 00:08:26 -04:00
uploadModal.modal('show');
uploadModal.on('hidden.bs.modal', function () {
2015-09-26 00:08:26 -04:00
uploadModal.remove();
});
2015-09-26 00:08:26 -04:00
var uploadForm = uploadModal.find('#uploadForm');
uploadForm.attr('action', data.route);
uploadForm.find('#params').val(JSON.stringify(data.params));
uploadModal.find('#fileUploadSubmitBtn').on('click', function () {
2016-07-06 13:01:00 +03:00
$(this).addClass('disabled');
2015-09-26 00:08:26 -04:00
uploadForm.submit();
});
uploadForm.submit(function () {
2016-03-29 09:59:47 +02:00
onSubmit(uploadModal, fileSize, callback);
2016-02-29 15:26:57 +02:00
return false;
});
});
};
module.hideAlerts = function (modal) {
2016-03-29 09:59:47 +02:00
$(modal).find('#alert-status, #alert-success, #alert-error, #upload-progress-box').addClass('hide');
};
function onSubmit(uploadModal, fileSize, callback) {
2016-02-29 15:26:57 +02:00
function showAlert(type, message) {
module.hideAlerts(uploadModal);
2016-07-06 13:01:00 +03:00
if (type === 'error') {
uploadModal.find('#fileUploadSubmitBtn').removeClass('disabled');
}
2016-02-29 15:26:57 +02:00
uploadModal.find('#alert-' + type).translateText(message).removeClass('hide');
}
2016-03-29 09:59:47 +02:00
var fileInput = uploadModal.find('#fileInput');
if (!fileInput.val()) {
2016-02-29 15:26:57 +02:00
return showAlert('error', '[[uploads:select-file-to-upload]]');
}
var file = fileInput[0].files[0];
var reader = new FileReader();
var imageUrl;
var imageType = file.type;
reader.addEventListener("load", function () {
imageUrl = reader.result;
uploadModal.modal('hide');
callback({url: imageUrl, imageType: imageType});
}, false);
if (file) {
reader.readAsDataURL(file);
2016-03-29 09:59:47 +02:00
}
2016-02-29 15:26:57 +02:00
}
function parseModal(tplVals, callback) {
templates.parse('partials/modals/upload_file_modal', tplVals, function (html) {
2015-09-26 00:08:26 -04:00
translator.translate(html, callback);
});
}
return module;
2014-04-10 20:31:57 +01:00
});