Files
monpas/public/js/monpas/models/filefolders.js
T
2021-07-10 16:25:16 +02:00

514 lines
13 KiB
JavaScript

$(function(){
ls.initFileFoldersModel = function(modulenr){
function fAddFolder(p, layer){
this.id = p.id
this.organisatie_id = p.organisatie_id;
this.valtonder = p.valtonder;
this.nummer = ko.observable(p.nummer);
this.naam = ko.observable(p.naam);
this.geopend = ko.observable(false);
this.selected = ko.observable(false);
this.subfolders = ko.observableArray();
this.layer = ko.observable(layer);
var dit = this
this.bestanden = ko.observableArray()
if (p.files){
$.each(p.files, function(j,k){
dit.bestanden.push(new fAddFile(k));
});
}
if (p.subfolders){
$.each(p.subfolders, function(j,k){
dit.subfolders.push( new fAddFolder(k, dit.layer()+ 1));
})
}
}
function fAddFile(p){
this.id = p.id
this.naam = ko.observable(p.naam)
this.modified = p.modified
this.editMode = ko.observable(false)
this.pdf = ko.observable(false)
if (p.pdf==true || p.pdf==1) this.pdf(true);
this.owner = false;
if (p.owner == 1) this.owner = true
}
if (ls.FileFoldersModel !== undefined){
ls.FileFoldersModel.initModel(modulenr);
}
else {
ls.FileFoldersModel = {
modulenr : ko.observable(),
folders : ko.observableArray(),
bezig : ko.observable(false),
filefocus : ko.observable(),
zoekfile : ko.observable(),
zoekresultaat : ko.observableArray([]),
manager : ko.observable(false),
textAfwijkend : ko.observable(false),
specialetekst : ko.observable(''),
newTopNaam : ko.observable(''),
newTopNummer : ko.observable(),
newSubNaam : ko.observable(''),
newSubNummer : ko.observable(),
newNummer : ko.observable(),
newNaam : ko.observable(),
selectedFolder : ko.observable(),
initBindings :function(modulenr){
var vm = ls.FileFoldersModel;
if (!ko.dataFor(document.getElementById('pagfilefolders')) ) {
ko.applyBindings(ls.FileFoldersModel, document.getElementById("pagfilefolders"));
}
$.post('index.php/shared/filefolders/getAuth', function(result){
if (result > 0) vm.manager(true)
else vm.manager(false);
vm.initModel(modulenr);
},'json');
},
initModel: function(modulenr){
var vm = ls.FileFoldersModel;
vm.modulenr(modulenr)
vm.fGetFileFolders(modulenr);
var submitData={
'modulenr' : modulenr,
'paginanaam': 'filefolders',
}
$.post('index.php/shared/filefolders/getafwijkendetekst', submitData, function(result){
if (result){
vm.textAfwijkend(true);
vm.specialetekst(result);
}
},'json')
},
fGetFileFolders: function(){
var vm = ls.FileFoldersModel;
var dit = this;
vm.folders.removeAll();
$.post('index.php/shared/filefolders/getfolders/' + modulenr, function(result){
if (result){
$.each(result, function(i,p){
vm.folders.push(new fAddFolder(p,0));
})
}
},'json')
},
fToggleGeopend: function(){
this.geopend(! this.geopend())
},
fSetSelected:function(){
var vm = ls.FileFoldersModel;
var dit = this;
var huidig = this.selected();
if (vm.folders()){
$.each(vm.folders(), function(i,p){
vm.fUnselectAll(p)
});
}
dit.selected(! huidig);
},
fUnselectAll:function(folder){
var vm =ls.FileFoldersModel;
folder.selected(false);
if (folder.subfolders()){
$.each(folder.subfolders(), function(j,k){
vm.fUnselectAll(k);
});
}
},
fNewTopFolder: function(){
var vm = ls.FileFoldersModel;
$(" #modNewTopFolder ").modal('show');
vm.newTopNaam('');
if(vm.folders && vm.folders().length > 0){
var index = vm.folders().length -1;
vm.newTopNummer(Number(vm.folders()[index].nummer()) + 1);
}
else{
vm.newTopNummer(1);
}
},
fSafeTopfolder: function(){
var vm = ls.FileFoldersModel;
var dit = this;
var nummer = dit.newTopNummer();
if(isNaN(nummer) && nummer !== '' ){
apprise("Vul bij nummer een getal in of vul niets in.")
return;
}
if(nummer === ''){
nummer= false;
}
var sd ={
nummer : nummer,
naam : dit.newTopNaam(),
modulenr : vm.modulenr()}
$("#modNewTopFolder").modal('hide');
$.post("index.php/shared/filefolders/maakTopFolder" ,sd, function(result){
vm.bezig(false);
if (! result) return;
dit.folders.push(new fAddFolder(result, 0));
dit.newTopNummer('');
dit.newTopNaam('');
},'json')
},
fNewSubFolder: function(){
var vm = ls.FileFoldersModel;
vm.newSubNummer(1);
vm.newSubNaam('');
vm.selectedFolder(this);
$("#modNieuweSubFolder").modal('show');
if(vm.selectedFolder().subfolders() && vm.selectedFolder().subfolders().length > 0){
var index = vm.selectedFolder().subfolders().length -1;
vm.newSubNummer( Number(vm.selectedFolder().subfolders()[index].nummer() ) + 1 )
}
else{
vm.newSubNummer(1);
}
},
fSafeSubfolder: function(){
var vm = ls.FileFoldersModel;
var dit = this;
var nummer = dit.newSubNummer()
if(isNaN(nummer) && nummer !== '' ){
apprise("Vul bij nummer een getal in of vul niets in.")
return;
}
var sd ={
nummer : nummer,
naam : dit.newSubNaam(),
folderID : vm.selectedFolder().id,
modulenr : vm.modulenr()}
$("#modNieuweSubFolder").modal('hide');
$.post("index.php/shared/filefolders/maakSubFolder" ,sd, function(result){
vm.bezig(false);
if (! result) return;
vm.selectedFolder().subfolders.push(new fAddFolder(result, vm.selectedFolder().layer() + 1))
dit.newTopNummer('');
dit.newTopNaam('');
vm.selectedFolder('');
},'json')
},
fStandaardFolders: function(){
var vm = ls.FileFoldersModel;
var sd ={modulenr : vm.modulenr()}
$.post("index.php/shared/filefolders/maakStandaardFolders" ,sd, function(result){
if (! result){
apprise('Geen standaardfolders beschikbaar.')
return;
}
$.each(result, function(i,p){
vm.folders.push(new fAddFolder(p,0))
});
},'json')
},
fDeleteFolder: function(parent){
var vm = ls.FileFoldersModel;
if (vm.bezig() ) return;
vm.bezig(true);
var dit = this;
apprise("Weet u zeker dat u <i>" + this.naam() + "</i> wilt verwijderen?", {verify:true, textYes: " ja ",textNo:"nee"},
function(ans){
if (ans){
$.post("index.php/shared/filefolders/deleteFolder/" + dit.id,function(){
if (parent.constructor.name == "fAddFolder") {
parent.subfolders.remove(dit);
} else {
parent.folders.remove(dit)
}
vm.bezig(false);
})
} else {
vm.bezig(false);
}
}); // apprise
},
fEditFolder: function(){
var vm = ls.FileFoldersModel;
if (vm.manager() != 1) {
apprise("U bent niet de eigenaar van dit bestand.");
return;
}
vm.selectedFolder(this);
vm.newNummer(vm.selectedFolder().nummer())
vm.newNaam(vm.selectedFolder().naam())
$(" #modEditFolder ").modal('show');
},
fSaveEditFolder: function() {
var vm = ls.FileFoldersModel;
var dit = this;
if (isNaN(vm.newNummer()) && vm.newNummer() !== '') {
apprise("Vul bij nummer een getal in of vul niets in.")
return;
}
$(" #modEditFolder ").modal('hide')
var valtonder = vm.selectedFolder().valtonder ? vm.selectedFolder().valtonder : vm.selectedFolder().id;
var sd = {
nummer : vm.newNummer(),
naam : vm.newNaam(),
valtonderID: valtonder,
folderID : vm.selectedFolder().id
}
$.post("index.php/shared/filefolders/editFolder", sd, function (result) {
if(result) {
vm.fGetFileFolders();
vm.bezig(false);
vm.selectedFolder('')
vm.newNummer('');
vm.newNaam('');
}
}, 'json')
},
fSaveFilenaam: function(){
var vm = ls.FileFoldersModel;
this.editMode(false);
vm.filefocus().editMode(false);
var sd= {naam: this.naam(),
id: this.id}
$.post('index.php/shared/filefolders/saveFileNaam', sd);
},
fGetSelectedRecursive(folder){
var vm = ls.FileFoldersModel;
selected = false;
if (folder.selected()) {
selected= folder;
return selected;
} else{
if (folder.subfolders()){
$.each(folder.subfolders(), function(j,k){
vm.fGetSelectedRecursive(k);
});
}
}
return selected;
},
fGetSelected:function(){
var vm = ls.FileFoldersModel;
var selected = false;
if (vm.folders()){
$.each(vm.folders(), function(i,p){
if (p.selected()) {
selected= p;
return false;
} else {
selected= vm.fGetSelectedRecursive(p);
if (selected) return false;
}
});
}
return selected;
},
fUploadFile: function(){
var vm = ls.FileFoldersModel;
var folder = vm.fGetSelected();
if (! folder) {
apprise("Selecteer eerst een folder");
return;
}
else{
var dit = this;
var docID = 0;
// als this een file is geef dan fileID mee om te overschrijven
// docID = this.id
ls.initUploader(vm.modulenr(), folder.id,docID,
function(succes){
if (succes) vm.fRefreshFiles(folder) });
}
},
fRefreshFiles: function(folder){
var vm = ls.FileFoldersModel;
if (vm.bezig()) return
vm.bezig(true)
var sd ={folderID :folder.id}
$.post("index.php/shared/filefolders/getFiles", sd, function(result){
folder.bestanden.removeAll();
if (result){
$.each(result,function(i,p){
folder.bestanden.push(new fAddFile(p));
});
}
vm.bezig(false);
},'json');
},
fSetEditMode: function(){
var vm = ls.FileFoldersModel;
if (this.owner != 1) {
apprise("U bent niet de eigenaar van dit bestand.");
return;
}
if (vm.filefocus()) vm.filefocus().editMode(false);
vm.filefocus(this);
this.editMode(! this.editMode());
},
fDeleteBestand: function(parent){
var vm = ls.FileFoldersModel;
if (vm.bezig()) return;
vm.bezig(true);
var that = this
apprise("Weet u zeker dat u " + that.naam() + " wilt verwijderen?" , {verify: true, textYes: ' ja ', textNo: 'nee'},
function(ans){
if (ans){
$.post('index.php/shared/filefolders/deleteFile/' + that.id, function(){
parent.bestanden.remove(that);
vm.bezig(false);
});
} else {vm.bezig(false); }
}); // apprise
},
fShowDocument:function(){
ls.initDownloadModel(this,"INZIEN");
},
fNoConversionAvailable: function(){
ls.initDownloadModel(this,"INZIEN");
},
fDownloadDoc:function(){
ls.initDownloadModel(this,"DOWNLOAD");
},
fStartZoek: function(){
var vm = ls.FileFoldersModel;
if (! vm.zoekfile() || vm.zoekfile().length < 2) return;
if (vm.bezig()) return;
vm.bezig(true);
var sd = {zoekfile : vm.zoekfile(),
modulenr : vm.modulenr()}
$.post('index.php/shared/filefolders/zoekFile' , sd, function(result){
vm.zoekresultaat.removeAll();
if (result) {
vm.zoekresultaat(result);
$("#modZoekresultaten").modal('show');
} else {
apprise('Geen bestanden gevonden.');
}
vm.bezig(false);
},'json');
},
fCheckEnter:function(d,e){
var vm = ls.FileFoldersModel;
if (e.keyCode == 13) vm.fStartZoek();
return true;
},
fGetZoekResultaatInFolders: function(){
var vm = ls.FileFoldersModel;
var dit = this;
if (! vm.folders() || vm.folders().length< 1) return;
if (dit.modulenr !== vm.modulenr() ) {
apprise("Dit document bevindt zich in binnen een ander instrument (" +dit.naamkort +"). <br> U dient eerst naar " + dit.naamkort +" te gaan voordat u het document kunt inzien.");
return;
} else {
vm.fGetFolderString( dit.folder_id, vm.folders, '')
}
},
fOpenFolders: function(folders, folderIDstring){
var vm = ls.FileFoldersModel;
if (folders()){
$.each(folders(), function(j,k){
k.geopend(false);
if (folderIDstring.indexOf(k.id) > -1) {
k.geopend(true)
}
if (k.subfolders()){
vm.fOpenFolders(k.subfolders, folderIDstring);
}
}) // foreach
}
$("#modZoekresultaten").modal('hide')
},
fGetFolderString: function(zoekfolderID, folders, folderIDstring){
var vm = ls.FileFoldersModel;
var found = false;
if (folders() ){
$.each(folders(), function(i,p){
if (p.id == zoekfolderID){
if (folderIDstring) folderIDstring= folderIDstring + ',' + p.id
else folderIDstring = p.id
vm.fOpenFolders(vm.folders, folderIDstring);
return false;
} else{
if (p.subfolders && p.subfolders()){
if (folderIDstring) folderIDstring= folderIDstring + ',' + p.id
else folderIDstring = p.id
$.each(p.subfolders(), function(j,k){
if (k.id == zoekfolderID){
folderIDstring = folderIDstring + ',' + zoekfolderID;
vm.fOpenFolders(vm.folders,folderIDstring);
return false;
}else{
folderIDstring = vm.fGetFolderString(zoekfolderID, p.subfolders, folderIDstring);
}
});
}
}
});
}
},
fPrintFolders: function(){
var vm = ls.FileFoldersModel;
window.open("index.php/shared/filefolders/maakpdf/" + vm.modulenr() );
}
} ; // definition van model
ls.FileFoldersModel.initBindings(modulenr);
}; // else
}// function initFileFoldersModel
});