214 lines
6.1 KiB
JavaScript
214 lines
6.1 KiB
JavaScript
$(function(){
|
|
|
|
ko.bindingHandlers.dropzone = {
|
|
init: function ( element, valueAccessor, allBindings, data ) {
|
|
var options = {
|
|
// maxFileSize : 10,
|
|
maxFileSize: 50 ,
|
|
maxFiles : 25,
|
|
url : 'temp',
|
|
accept : function(file,done){
|
|
if (file.size <= ls.UploaderModel.maxsize()){
|
|
return done();
|
|
} else {
|
|
|
|
ls.UploaderModel.responses.push(file.name + " bestand is te groot (max 10MB)" );
|
|
return done("Bestand is te groot.");
|
|
}
|
|
},
|
|
init : function () {
|
|
var thisDropzone = this;
|
|
var totalFiles = 0,
|
|
completeFiles = 0;
|
|
this.on( "addedfile", function ( file ) {
|
|
totalFiles += 1;
|
|
} );
|
|
this.on( "removed file", function ( file ) {
|
|
totalFiles -= 1;
|
|
} );
|
|
this.on("error", function(file, response){
|
|
if (file.xhr && file.xhr.responseText) ls.UploaderModel.responses.push( file.xhr.responseText);
|
|
});
|
|
this.on( "complete", function ( file ) {
|
|
completeFiles += 1;
|
|
if (file.xhr && file.xhr.responseText) ls.UploaderModel.responses.push( file.xhr.responseText);
|
|
if ( completeFiles === totalFiles ) {
|
|
ls.UploaderModel.uploadcounter(totalFiles)
|
|
thisDropzone.removeAllFiles();
|
|
totalFiles = 0;
|
|
completeFiles = 0;
|
|
ls.UploaderModel.fGiveFeedback();
|
|
}
|
|
} );
|
|
this.on( "processing", function ( file ) {
|
|
this.options.url = ls.UploaderModel.uploadURL();
|
|
} );
|
|
|
|
$( '.dropzone-remove-files' ).click( function () {
|
|
thisDropzone.removeAllFiles();
|
|
totalFiles = 0;
|
|
completeFiles = 0;
|
|
} );
|
|
}
|
|
};
|
|
|
|
$( element ).addClass( 'dropzone' );
|
|
new Dropzone( element, options ); // jshint ignore:line
|
|
}
|
|
};
|
|
|
|
|
|
|
|
ls.initUploader= function(module,folder,docID,callback){
|
|
|
|
if (ls.UploaderModel !== undefined){
|
|
ls.UploaderModel.initModel(module,folder,docID,callback);
|
|
}
|
|
else {
|
|
ls.UploaderModel = {
|
|
module : ko.observable(),
|
|
folder : ko.observable(),
|
|
vmcallback : ko.observable(),
|
|
docNaam : ko.observable(),
|
|
documentID : ko.observable(),
|
|
fileName : ko.observable(),
|
|
bestanden : ko.observableArray(),
|
|
uploadcounter : ko.observable(0),
|
|
uploadURL : ko.observable(),
|
|
maxsize : ko.observable(10000000),
|
|
//maxsize : ko.observable(5000),
|
|
responses : ko.observableArray(),
|
|
showfiles : ko.observable(true),
|
|
toondropzone : ko.observable(true),
|
|
|
|
initBindings :function(module,folder,docID,callback){
|
|
var self = ls.UploaderModel;
|
|
if (!ko.dataFor(document.getElementById('modUploader')) ) {
|
|
ko.applyBindings(ls.UploaderModel, document.getElementById("modUploader"));
|
|
}
|
|
self.initModel(module,folder,docID , callback);
|
|
},
|
|
|
|
initModel: function(module,folder,docID,callback){
|
|
var vm = ls.UploaderModel;
|
|
vm.module(module)
|
|
vm.folder(folder)
|
|
vm.documentID(docID)
|
|
vm.docNaam('');
|
|
vm.fileName('');
|
|
vm.bestanden.removeAll();
|
|
vm.uploadcounter(0);
|
|
vm.toondropzone(true);
|
|
if (vm.responses() && vm.responses().length > 0) vm.responses.removeAll();
|
|
vm.showfiles('true');
|
|
vm.uploadURL(' index.php/shared/upload/doDropUpload/'+ls.UploaderModel.folder() + '/' + ls.UploaderModel.module() );
|
|
$("#fileform")[0].reset();
|
|
|
|
vm.vmcallback = callback;
|
|
$("#modUploader").modal('show');
|
|
},
|
|
|
|
fSetFileList: function(){
|
|
var vm = ls.UploaderModel;
|
|
vm.bestanden.removeAll();
|
|
var files=document.getElementById("fileselecter").files
|
|
for (var i = 0, f; f = files[i]; i++) {
|
|
vm.bestanden.push(f)
|
|
};
|
|
},
|
|
|
|
fDoUpload :function(){
|
|
var vm = ls.UploaderModel;
|
|
// process all File objects
|
|
vm.responses.removeAll()
|
|
vm.showfiles(false);
|
|
|
|
if (vm.bestanden() && vm.bestanden().length > 0){
|
|
showAjaxLoader()
|
|
|
|
$.each(vm.bestanden(), function(i,p){
|
|
if (p.size <= vm.maxsize()){
|
|
vm.fUploadFile(p);
|
|
} else {
|
|
vm.responses.push(p.name + " bestand is te groot (max 10MB)" );
|
|
}
|
|
if (i == vm.bestanden().length -1 ) hideAjaxLoader()
|
|
});
|
|
|
|
} // if bestanden
|
|
else{
|
|
hideAjaxLoader()
|
|
|
|
$("#modUploader").modal('hide');
|
|
if (typeof vm.vmcallback == 'function'){
|
|
vm.vmcallback(false);
|
|
}
|
|
}
|
|
},
|
|
|
|
fUploadFile: function(file){
|
|
var vm = ls.UploaderModel;
|
|
var xhr = new XMLHttpRequest();
|
|
var url = 'index.php/shared/upload/doUpload';
|
|
var fd = new FormData();
|
|
fd.append("upload_file", file);
|
|
fd.append("module", vm.module());
|
|
fd.append("folderID", vm.folder());
|
|
fd.append("oldDocID", vm.documentID());
|
|
|
|
// hier daadwerkelijk doorsturen naar server
|
|
xhr.open("POST", url, true)
|
|
xhr.onreadystatechange = function() {
|
|
if (xhr.readyState == 4 && xhr.status == 200) { // Every thing ok, file uploaded
|
|
if (xhr.responseText) vm.responses.push(xhr.responseText);
|
|
vm.uploadcounter(parseInt(vm.uploadcounter()) + 1)
|
|
if (vm.uploadcounter() == vm.bestanden().length){
|
|
vm.fGiveFeedback();
|
|
}
|
|
};
|
|
}
|
|
|
|
xhr.send(fd);
|
|
|
|
},
|
|
|
|
fGiveFeedback: function(){
|
|
var vm = ls.UploaderModel;
|
|
|
|
vm.toondropzone(false);
|
|
hideAjaxLoader()
|
|
vm.showfiles(false);
|
|
|
|
var time=300;
|
|
if (vm.responses() && vm.responses().length <= 0) {
|
|
setTimeout(function(){
|
|
$("#modUploader").modal('hide')
|
|
if (typeof vm.vmcallback == 'function'){ vm.vmcallback(true);}
|
|
}, time);
|
|
}
|
|
},
|
|
fCloseAndCallback: function(){
|
|
var vm = ls.UploaderModel;
|
|
if (typeof vm.vmcallback == 'function') vm.vmcallback(true);
|
|
},
|
|
fCloseUploader: function(){
|
|
var vm = ls.UploaderModel;
|
|
if (typeof vm.vmcallback == 'function') vm.vmcallback(false);
|
|
},
|
|
|
|
fRemoveBestand: function(){
|
|
var vm = ls.UploaderModel;
|
|
if (vm.bestanden() && vm.bestanden().length > 0){
|
|
vm.bestanden.remove(this);
|
|
}
|
|
}
|
|
} ; // definition van model
|
|
|
|
ls.UploaderModel.initBindings(module,folder,docID,callback);
|
|
}; // else
|
|
}// function initUploaderModel
|
|
|
|
|
|
});
|
|
|
|
|