mirror of
https://gitlab.com/buildfeed/BuildFeed.git
synced 2024-03-22 21:10:34 +08:00
140 lines
5.4 KiB
JavaScript
140 lines
5.4 KiB
JavaScript
/* ===========================================================
|
|
* trumbowyg.upload.js v1.0
|
|
* Upload plugin for Trumbowyg
|
|
* http://alex-d.github.com/Trumbowyg
|
|
* ===========================================================
|
|
* Author : Alexandre Demode (Alex-D)
|
|
* Twitter : @AlexandreDemode
|
|
* Website : alex-d.fr
|
|
*/
|
|
|
|
(function($){
|
|
'use strict';
|
|
|
|
addXhrProgressEvent();
|
|
|
|
$.extend(true, $.trumbowyg, {
|
|
langs: {
|
|
en: {
|
|
upload: "Upload",
|
|
file: "File",
|
|
uploadError: "Error"
|
|
},
|
|
fr: {
|
|
upload: "Envoi",
|
|
file: "Fichier",
|
|
uploadError: "Erreur"
|
|
}
|
|
},
|
|
|
|
upload: {
|
|
serverPath: './src/plugins/upload/trumbowyg.upload.php'
|
|
},
|
|
|
|
opts: {
|
|
btnsDef: {
|
|
upload: {
|
|
func: function(params, tbw){
|
|
var file,
|
|
pfx = tbw.o.prefix;
|
|
|
|
var $modal = tbw.openModalInsert(
|
|
// Title
|
|
tbw.lang.upload,
|
|
|
|
// Fields
|
|
{
|
|
file: {
|
|
type: 'file',
|
|
required: true
|
|
},
|
|
alt: {
|
|
label: 'description'
|
|
}
|
|
},
|
|
|
|
// Callback
|
|
function(){
|
|
var data = new FormData();
|
|
data.append('fileToUpload', file);
|
|
|
|
if($('.' + pfx +'progress', $modal).length === 0)
|
|
$('.' + pfx + 'modal-title', $modal)
|
|
.after(
|
|
$('<div/>', {
|
|
'class': pfx +'progress'
|
|
})
|
|
.append(
|
|
$('<div/>', {
|
|
'class': pfx +'progress-bar'
|
|
})
|
|
)
|
|
);
|
|
|
|
$.ajax({
|
|
url: $.trumbowyg.upload.serverPath,
|
|
type: 'POST',
|
|
data: data,
|
|
cache: false,
|
|
dataType: 'json',
|
|
processData: false,
|
|
contentType: false,
|
|
|
|
progressUpload: function(e){
|
|
$('.' + pfx + 'progress-bar').stop().animate({
|
|
width: Math.round(e.loaded * 100 / e.total) + '%'
|
|
}, 200);
|
|
},
|
|
|
|
success: function(data){
|
|
if(data.message == "uploadSuccess") {
|
|
tbw.execCmd('insertImage', data.file);
|
|
setTimeout(function(){
|
|
tbw.closeModal();
|
|
}, 250);
|
|
} else {
|
|
tbw.addErrorOnModalField(
|
|
$('input[type=file]', $modal),
|
|
tbw.lang[data.message]
|
|
);
|
|
}
|
|
},
|
|
error: function(){
|
|
tbw.addErrorOnModalField(
|
|
$('input[type=file]', $modal),
|
|
tbw.lang.uploadError
|
|
);
|
|
}
|
|
});
|
|
}
|
|
);
|
|
|
|
$('input[type=file]').on('change', function(e){
|
|
file = e.target.files[0];
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
|
|
function addXhrProgressEvent(){
|
|
if (!$.trumbowyg && !$.trumbowyg.addedXhrProgressEvent) { // Avoid adding progress event multiple times
|
|
var originalXhr = $.ajaxSettings.xhr;
|
|
$.ajaxSetup({
|
|
xhr: function() {
|
|
var req = originalXhr(),
|
|
that = this;
|
|
if(req && typeof req.upload == "object" && that.progressUpload !== undefined)
|
|
req.upload.addEventListener("progress", function(e){
|
|
that.progressUpload(e);
|
|
}, false);
|
|
|
|
return req;
|
|
}
|
|
});
|
|
$.trumbowyg.addedXhrProgressEvent = true;
|
|
}
|
|
}
|
|
})(jQuery); |