Dateiverwaltung für die WebBox
Ulrich
2017-02-27 7d8ef67736311d75b97a249482a938662035fd39
commit | author | age
723bf7 1 /*
U 2     Dateiverwaltung - File management in your browser
3     Copyright (C) 2017 Ulrich Hilger, http://uhilger.de
4
5     This program is free software: you can redistribute it and/or modify
6     it under the terms of the GNU Affero General Public License as
7     published by the Free Software Foundation, either version 3 of the
8     License, or (at your option) any later version.
9
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU Affero General Public License for more details.
14
15     You should have received a copy of the GNU Affero General Public License
16     along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 */
18
a4d3b5 19 var cm;
5dfab6 20 var pfad = '';
10d3d3 21 var modus = 'kacheln';
5ebb8e 22 var openFileName = '';
305573 23 var ed;
7d8ef6 24 var openEditor;
c7c502 25
U 26 function fm_init() {
305573 27   $("#mce-editor").hide();
a4d3b5 28   $('.codeeditor-space').hide();
U 29   $('.code-editor-container').hide();
bef5c6 30   //$('.ost').attr('flex-basis', 0);
a4d3b5 31   $('#newTextFile').on('click', fm_menu_neue_textdatei);
305573 32   $('#newDoc').on('click', fm_menu_neues_dokument);
adf812 33   $('#newFolder').on('click', fm_get_new_folder);
7d8ef6 34   $('#editTextFile').on('click', function() {
U 35     fm_get_file_content('text');
36   });
37   $('#editDocFile').on('click', function() {
38     fm_get_file_content('dok');
39   });
e5ff42 40   $('#saveFile').on('click', fm_menu_datei_speichern);
5ebb8e 41   $('#saveFileAs').on('click', fm_menu_datei_speichern_unter);
a4d3b5 42   $('#closeFile').on('click', fm_menu_datei_schliessen);
fc1897 43   $('#m-del').on('click', fm_menu_delete);
bef5c6 44   $('#m-test').on('click', fm_menu_test);
c509a0 45   $('#saveModal').on('hidden.bs.modal', function (e) {
915927 46     $('#modal_ok').attr('onclick','').unbind('click');
b7475d 47   });
U 48   $('#logout').click(fm_logout);  
e5ff42 49   fm_get_login();
7342b1 50   fm_get_list('');
7aa566 51   fm_init_uploader();
305573 52   
U 53   /*
54    * Konfiguration TinyMCE
55    */
56   tinymce.init({
57     content_css : "mce.css",
7d8ef6 58     selector: "textarea.text-editor",
305573 59     statusbar: false,
U 60     menubar: false,
7d8ef6 61     plugins: 'advlist charmap code image link lists media print preview save table textcolor',
U 62     toolbar: 'undo redo | styleselect | image | link unlink | bullist numlist | outdent indent | code',
305573 63     /*
U 64     menu: {
65       file: {title: 'File', items: 'savevers | exit'},
66       edit: {title: 'Edit', items: 'undo redo | cut copy paste pastetext | selectall'},
67       view: {title: 'View', items: 'visualaid | code | link image media | template hr'},
68     },
69     */
7d8ef6 70     /*resize: 'both',*/
305573 71     width: "100%",
U 72     height: '100%',
7d8ef6 73     /*autoresize_bottom_margin : 1,*/
305573 74     setup: function (editor) {
U 75       ed = editor;
76     }
77   });
7d8ef6 78   window.onresize = function() {
U 79     fm_resizeEditor();
80   };
305573 81 }
7d8ef6 82 function fm_resizeEditor() {
U 83   if (ed) {
305573 84     try {
7d8ef6 85       var myHeight = $('.zentrum').height() - $('.nord').height() - 4;
U 86       ed.theme.resizeTo('100%', myHeight);  // sets the dimensions of the editable area
305573 87     } catch (err) {
U 88     }
89   }
10d3d3 90 }
7aa566 91
U 92 /* ----- Uploader Anfang ----------*/
93
94 var dateien = new Array();
95
96 function fm_init_uploader() {
97   var dropzone = document.getElementById("dateien");  
98   dropzone.ondragover = dropzone.ondragenter = function(event) {  
99     event.stopPropagation();  
100     event.preventDefault();  
101   };
102
103   dropzone.ondrop = function(event) {  
104     event.stopPropagation();  
105     event.preventDefault();  
7ebde1 106     var fileList = event.dataTransfer.files;  
U 107     for (var i=0; i<fileList.length; i++) {  
108       dateien.push(fileList[i]);
109     }
110     sendFile(dateien.pop());
7aa566 111   };
U 112 }
113
114 function sendFile(datei) {
7ebde1 115   var uri = "../api/upload";
7aa566 116   var xhr = new XMLHttpRequest();  
U 117   var fd = new FormData();  
118   xhr.open("POST", uri, true);  
119   xhr.onreadystatechange = function() {  
120     if (xhr.readyState == 4 && xhr.status == 200) {  
121       fm_get_list(pfad);
7ebde1 122       if(dateien.length > 0) {
U 123         sendFile(dateien.pop());
124       }
7aa566 125     }  
U 126   };  
7ebde1 127   fd.append('dateiauswahlfeld', datei);  
7aa566 128   xhr.send(fd);          
U 129 }
130
131 /* ----- Uploader Ende --------------- */
10d3d3 132
fc1897 133 function fm_menu_delete() {
U 134   $('#confirmOk').click(function() {
135     // hier loeschen
136     fm_del_files();
137   });
957b51 138   $('#confirmModalTitle').text("Löschen");
U 139   $('#confirmModalBody').text("Wirklich löschen?");
fc1897 140   
U 141   /*var fname = $('.datei-gewaehlt').text();
142   if(fname !== undefined) {
143     $('#dateiname').val(fname);
144   } else {
145     $('#dateiname').val('');
146   }*/
147   //$('#dateiname').attr('placeholder', 'Dateiname');
148   $('#confirmModal').modal({
149     keyboard: false,
150     show: true
151   });
152 }
153
bef5c6 154 function fm_menu_test() {
U 155   var w = $('.ost').width();
156   if(w == 0) {
157     $('.ost').width('20%');
158     $('.ost').text('Hallo Welt!');
159   } else {
160     $('.ost').empty();
161     $('.ost').width(0);
162   }
163 }
164
10d3d3 165 function fm_ansicht_umschalten() {
U 166   if($('#ansicht').children(0).hasClass('fa-th-list')) {
167     $('#ansicht').children(0).addClass('fa-th-large');
168     $('#ansicht').children(0).removeClass('fa-th-list');
169     modus = 'liste';
170   } else {
171     $('#ansicht').children(0).addClass('fa-th-list');    
172     $('#ansicht').children(0).removeClass('fa-th-large');
173     modus = 'kacheln';
174   }
175   fm_get_list(pfad);
176 }
177
178 function fm_set_modus() {
179   if(modus == 'kacheln') {
180     $('#ansicht').children(0).addClass('fa-th-list');    
181     $('#ansicht').children(0).removeClass('fa-th-large');  
182   } else {
183     $('#ansicht').children(0).addClass('fa-th-large');
184     $('#ansicht').children(0).removeClass('fa-th-list');    
185   }
a4d3b5 186 }
U 187
188 function fm_menu_neue_textdatei() {
adf812 189   fm_text_edit('Neue Datei');
a4d3b5 190 }
U 191
305573 192 function fm_menu_neues_dokument() {
7d8ef6 193   /*
305573 194   fm_filectls_hide();
U 195   $("#mce-editor").show();
7d8ef6 196   fm_resizeEditor();
U 197   openEditor = 'dok';
305573 198   */
7d8ef6 199   fm_dok_edit('');
305573 200 }
U 201
a4d3b5 202 function fm_menu_datei_schliessen() {
U 203   $('.codeeditor-space').hide();
204   $('.code-editor-container').hide();
305573 205   $("#mce-editor").hide();
U 206   if(cm !== undefined) {
207     cm.toTextArea();
208   }
5ebb8e 209   openFileName = '';
7d8ef6 210   openEditor = '';
adf812 211   fm_get_list(pfad);
305573 212   fm_filectls_show();
e5ff42 213 }
U 214
17919c 215 function fm_dateiwahl(ev) {
5dfab6 216   var elem = this;
17919c 217   //console.log('dateiwahl nach click, event shift: ' + ev.shiftKey + ", event ctrl: " + ev.ctrlKey);
10d3d3 218   if(modus == 'kacheln') {
957b51 219     // Kacheln
10d3d3 220     if($(elem).children(0).hasClass('fa-folder')) {
957b51 221       if(/*ev.shiftKey || */ ev.ctrlKey) {
U 222         $(elem).find('.dateiname').addClass('datei-gewaehlt');
10d3d3 223       } else {
957b51 224         var ordner = $(elem).text().trim();
U 225         if(pfad.length > 0) {
226           pfad = pfad + '/' + ordner;
227         } else {
228           pfad = ordner;
229         }
230         fm_get_list(pfad);
10d3d3 231       }
U 232     } else if($(elem).children(0).hasClass('fa-file')) {
17919c 233       if(/*ev.shiftKey || */ ev.ctrlKey) {
U 234         // mehrere Dateien sollen gewaehlt werden
235       } else {
236         $('.datei-gewaehlt').removeClass('datei-gewaehlt');        
237       }
957b51 238       $(elem).find('.dateiname').addClass('datei-gewaehlt');
5dfab6 239     } else {
10d3d3 240       //console.log('kein folder oder file...');
5dfab6 241     }
U 242   } else {
957b51 243     // Liste
10d3d3 244     if($(elem).find('.datei-elem').children(0).hasClass('fa-file-o')) {
957b51 245       // Datei
17919c 246       if(/*ev.shiftKey || */ ev.ctrlKey) {
U 247         // mehrere Dateien sollen gewaehlt werden
248       } else {
249         $('.table-info').removeClass('table-info');
957b51 250         $('.datei-gewaehlt').removeClass('datei-gewaehlt');
17919c 251       }
10d3d3 252       $(elem).addClass('table-info');
U 253       $(elem).find('.dateiname').addClass('datei-gewaehlt');
254     } else {
957b51 255       // Ordner
U 256       if(/*ev.shiftKey || */ ev.ctrlKey) {
257         $(elem).children(0).addClass('datei-gewaehlt');
10d3d3 258       } else {
957b51 259         var ordner = $(elem).find('.dateiname').text();
U 260         if(pfad.length > 0) {
261           pfad = pfad + '/' + ordner;
262         } else {
263           pfad = ordner;
264         }
265         fm_get_list(pfad);
10d3d3 266       }
U 267     }   
5dfab6 268   }
c509a0 269 }
U 270
a94216 271 function fm_bc_click() {
U 272   var elem = this;
273   var bcPfad = $(elem).attr('rpath');
274   if(bcPfad !== undefined) {
c509a0 275     pfad = bcPfad;
a94216 276     fm_get_list(bcPfad);
U 277   } else {
278     pfad = '';
279     fm_get_list('');
280   }
281 }
282
3ad4db 283 function fm_text_edit(content) {
305573 284   fm_filectls_hide();
3ad4db 285   $('.codeeditor-space').show();
U 286   $('.code-editor-container').show();
287   fm_code_edit(content);  
7d8ef6 288   openEditor = 'text';
U 289 }
290
291 function fm_dok_edit(content) {
292   fm_filectls_hide();
293   $("#mce-editor").show();
294   ed.setContent(content);
295   fm_resizeEditor();
296   openEditor = 'dok';  
3ad4db 297 }
U 298
305573 299 function fm_filectls_hide() {
U 300   $('#zentrum_bc').hide();
301   $('#dateien').hide();
302 }
303
304 function fm_filectls_show() {
305   $('#zentrum_bc').show();
306   $('#dateien').show();  
307 }
b7475d 308 /* ----- API Calls ------------- */
U 309
e5ff42 310 function fm_get_login() {
3ad4db 311   var m = '?c=de.uhilger.filecms.pub.SessionManager&m=getSessionUser';
U 312   var u = '../pub' + m;
313   fm_get(u, "text", function(resp) {
314     $('#userMenu').text(resp);
7342b1 315   });  
c509a0 316 }
U 317
318 function fm_get_new_folder() {
319   $('#modal_ok').click(function() {
320     // hier speichern
321     var m = '?c=de.uhilger.filecms.api.FileMgr&m=newFolder&p=' + pfad + '&p=' + $('#dateiname').val();
322     var u = '../svc' + m;
323     fm_get(u, "json", function(resp) {
adf812 324       fm_get_list(pfad);
c509a0 325     });
U 326   });
957b51 327   $('#saveModalTitle').text('Neuer Ordner');
c509a0 328   $('#dialogfrage').text("Name?");
U 329   $('#dateiname').val('');
330   $('#dateiname').attr('placeholder', 'Ordnername');
331   $('#saveModal').modal({
332     keyboard: false,
333     show: true
334   });
7342b1 335 }
U 336
7d8ef6 337 function fm_get_file_content(typ) {
fc1897 338   var gewaehlte = $('.datei-gewaehlt');
957b51 339   //var fname = $(gewaehlte).find('.dateiname').text();
U 340   
341   var fname = $(gewaehlte[0]).text();
5ebb8e 342   openFileName = fname;
3ad4db 343   var m = '?c=de.uhilger.filecms.api.FileMgr&m=getCode&p=' + pfad + '&p=' + fname;
2121cc 344   var u = '../svc' + m;
3ad4db 345   fm_get(u, "text", function(resp) {
7d8ef6 346     if(typ == 'text') {
U 347       fm_text_edit(resp);
348     } else {
349       fm_dok_edit(resp);
350     }
2121cc 351   });
3ad4db 352   
2121cc 353 }
U 354
fc1897 355 function fm_del_files() {
U 356   var gewaehlte = $('.datei-gewaehlt');
357   //console.log('anzahl: ' + gewaehlte.length);
358   var fnames = new Array();
957b51 359   var i = 0;
fc1897 360   while(i < gewaehlte.length) {
U 361     var str = { "java.lang.String": $(gewaehlte[i]).text()};
362     fnames.push(str);
363     //console.log('loeschen ' + pfad + ' ' + $(gewaehlte[i]).text());
957b51 364     //i += 2;
U 365     i++;
fc1897 366   }
U 367   
368   var liste = '{"List":' + JSON.stringify(fnames) + '}';
369   // 'liste' enthaelt:
370   // {"List":[{"java.lang.String":"test3.txt"},{"java.lang.String":"Test1.txt"},{"java.lang.String":"Test2.txt"}]}
957b51 371   // und wird auf dem Server zu einer List[ArrayList<String>] bei der jede ArrayList<String> nur ein Element hat 
fc1897 372   
U 373   var m = '?c=de.uhilger.filecms.api.FileMgr&m=deleteFiles&p=' + pfad + '&p=' + encodeURIComponent(liste);
374   var u = '../svc' + m;
375   fm_get(u, "text", function(resp) {
376     // console.log('deleteFiles gab folgendes zurueck: ' + resp);
377     fm_get_list(pfad);
378   });
379   
380 }
381
10d3d3 382 function fm_render_list(fl) {
U 383   if(modus == 'kacheln') {
384     // Kachelansicht
7d8ef6 385     var template = $('#tpl-kacheln').html();
U 386     Mustache.parse(template);   // optional, speeds up future uses
387     $('.datei-zeile').attr('onclick','').unbind('click');
388     $('#dateien').empty();
389     $('#dateien').html(Mustache.render(template, fl));
390     $('.figure').click(fm_dateiwahl);
391   } else {
392     // Listenansicht
393     var template = $('#tpl-liste').html();
394     Mustache.parse(template);   // optional, speeds up future uses
395     $('.figure').attr('onclick','').unbind('click');
396     $('#dateien').empty();
397     $('#dateien').html(Mustache.render(template, fl));
398     $('.datei-zeile').click(fm_dateiwahl);
399   }
400   /*
401   if(modus == 'kacheln') {
402     // Kachelansicht
a3d410 403     $.get('tpl-kacheln.txt', function(template) {
U 404       $('#dateien').empty();
405       $('#dateien').html(Mustache.render(template, fl));
406       $('.figure').click(fm_dateiwahl);
407     });
10d3d3 408     $('.datei-zeile').attr('onclick','').unbind('click');
U 409   } else {
410     // Listenansicht
a3d410 411     $.get('tpl-liste.txt', function(template) {
U 412       $('#dateien').empty();
413       $('#dateien').html(Mustache.render(template, fl));
414       $('.datei-zeile').click(fm_dateiwahl);
415     });
10d3d3 416     $('.figure').attr('onclick','').unbind('click');
U 417   }
7d8ef6 418   */
10d3d3 419 }
U 420
7342b1 421 // http://localhost:8079/file-cms/svc?c=de.uhilger.filecms.api.FileMgr&f=JSONNICE&m=list&p=
a94216 422 function fm_get_list(relPfad) {
10d3d3 423   $('#ansicht').attr('onclick','').unbind('click');
a94216 424   var m = '?c=de.uhilger.filecms.api.FileMgr&m=list&p=' + relPfad;
7342b1 425   var u = '../svc' + m;
U 426   fm_get(u, "json", function(resp) {
10d3d3 427     
2121cc 428     if(resp.List[0].FileRef !== undefined) {
U 429       var files = new Array();
c509a0 430       if(resp.List[0].FileRef instanceof Array) {
U 431         for(var i = 0; i < resp.List[0].FileRef.length; i++) {
432           files.push(new FileRef(resp.List[0].FileRef[i]));
433         }
434       } else {
435         files.push(new FileRef(resp.List[0].FileRef));
2121cc 436       }
U 437       var fl = new FileList(files);
10d3d3 438       fm_render_list(fl);
2121cc 439     } else {
U 440       $('#dateien').empty();
7342b1 441     }
5dfab6 442     
10d3d3 443     // Breadcrumb-Ansicht
7d8ef6 444     var template;
a94216 445     $('.breadcrumb-item').attr('onclick','').unbind('click');
2315a0 446     $('#bcnav').empty();
5dfab6 447     var dirList = new Array();
U 448     var rp = '';
a94216 449     //console.log("'" + relPfad + "'");
U 450     var dirs = relPfad.split('/');
451     //console.log(dirs.length);
2121cc 452     dirList.push(new BcrFile(rp, 'Home'));
a94216 453     if(relPfad.length > 0) {
2315a0 454       for(var i = 0; i < dirs.length - 1; i++) {
5dfab6 455         if(rp.length > 0 ) {
U 456           dirList.push(new BcrFile(rp + '/' + dirs[i], dirs[i]));
2315a0 457           rp = rp + '/' + dirs[i];
5dfab6 458         } else {
U 459           dirList.push(new BcrFile(dirs[i], dirs[i]));
2315a0 460           rp = dirs[i];
5dfab6 461         }
U 462       }
463       var bl = new BcrFiles(dirList);
7d8ef6 464  
U 465       if(dirList.length > 0) {
466         template = $('#tpl-bcr').html();
467         Mustache.parse(template);   // optional, speeds up future uses
468         $('#bcnav').html(Mustache.render(template, bl));
2315a0 469       }
7d8ef6 470       
U 471       if(dirs.length > 0) {
472         dirList.push(new BcrFile(rp + '/' + dirs[dirs.length-1], dirs[dirs.length-1]));
473         template = $('#tpl-bcr2').html();
474         Mustache.parse(template);   // optional, speeds up future uses
475         $('#bcnav').append(Mustache.render(template, dirList[dirList.length-1]));        
476       } else {
477         template = $('#tpl-bcr2').html();
478         Mustache.parse(template);   // optional, speeds up future uses
479         $('#bcnav').append(Mustache.render(template, dirList[0]));        
480       }
481       
482       $('#bcnav').append($('#tpl-bcr3').html());
2315a0 483     } else {
a94216 484       pfad = '';
7d8ef6 485       template = $('#tpl-bcr2').html();
U 486       Mustache.parse(template);   // optional, speeds up future uses
487       $('#bcnav').append(Mustache.render(template, dirList[0]));   
488       $('#bcnav').append($('#tpl-bcr3').html());
5dfab6 489     }
7d8ef6 490     $('.breadcrumb-item').click(fm_bc_click);
U 491     $('#ansicht').click(fm_ansicht_umschalten);
492     fm_set_modus();
493   });
a3d410 494 }
U 495
c980bb 496 /*
U 497 function fm_bcr_step2(dirs, dirList) {
498   if(dirs.length > 0) {
499     dirList.push(new BcrFile(rp + '/' + dirs[dirs.length-1], dirs[dirs.length-1]));
500     $.get('tpl-bcr2.txt', function(template) {
501       $('#bcnav').append(Mustache.render(template, dirList[dirList.length-1]));  
502       $('#bcnav').append($('#tpl-bcr3').html());
503       fm_bcr_end();
504     });
505     //template = $('#tpl-bcr2').html();
506     //Mustache.parse(template);   // optional, speeds up future uses
507     //$('#bcnav').append(Mustache.render(template, dirList[dirList.length-1]));        
508   } else {
509     $.get('tpl-bcr2.txt', function(template) {
510       $('#bcnav').append(Mustache.render(template, dirList[0]));
511       $('#bcnav').append($('#tpl-bcr3').html());
512       fm_bcr_end();
513     });
514     //template = $('#tpl-bcr2').html();
515     //Mustache.parse(template);   // optional, speeds up future uses
516     //$('#bcnav').append(Mustache.render(template, dirList[0]));        
517   }  
518 }
519 */
520
305573 521 function fm_bcr_3() {
U 522   $.get('tpl-bcr3.txt', function(template) {
523     $('#bcnav').append(template);
524   });  
525 }
526
a3d410 527 function fm_bcr_end() {
U 528   $('.breadcrumb-item').click(fm_bc_click);
529   $('#ansicht').click(fm_ansicht_umschalten);
530   fm_set_modus();
e5ff42 531 }
U 532
533 function fm_menu_datei_speichern() {
5ebb8e 534   //var fname = $('.datei-gewaehlt').text();
U 535   var fname = openFileName;
536   if(fname !== undefined && fname !== '') {
537     fm_save_file(fname);
538   } else {
539     fm_menu_datei_speichern_unter();
540   }
541 }
542
543 function fm_save_file(saveFileName) {
7d8ef6 544   var content;
U 545   if(openEditor === 'text') {
546     content = cm.getValue();
547   } else {
548     content = ed.getContent();
549   }
5ebb8e 550   var m = '?c=de.uhilger.filecms.api.FileMgr&m=saveTextFile';
U 551   var u = '../svc' + m;
7d8ef6 552   fm_post(u, {p1: pfad, p2: saveFileName, p3: content}, function(resp) {
5ebb8e 553     openFileName = saveFileName;
U 554   });
555 }
556
557 function fm_menu_datei_speichern_unter() {
e5ff42 558   
915927 559   $('#modal_ok').click(function() {
U 560     // hier speichern
5ebb8e 561     fm_save_file($('#dateiname').val());
U 562     /*
915927 563     var m = '?c=de.uhilger.filecms.api.FileMgr&m=saveTextFile';
U 564     var u = '../svc' + m;
2121cc 565     fm_post(u, {p1: pfad, p2: $('#dateiname').val(), p3: cm.getValue()}, function(resp) {
915927 566
U 567     });
5ebb8e 568     */
915927 569   });
957b51 570   $('#saveModalTitle').text('Datei speichern');
c509a0 571   $('#dialogfrage').text("Dateiname?");
3ad4db 572   
U 573   var fname = $('.datei-gewaehlt').text();
574   if(fname !== undefined) {
575     $('#dateiname').val(fname);
576   } else {
577     $('#dateiname').val('');
578   }
c509a0 579   $('#dateiname').attr('placeholder', 'Dateiname');
915927 580   $('#saveModal').modal({
U 581     keyboard: false,
582     show: true
583   });
a4d3b5 584 }
U 585
b7475d 586 function fm_logout() {
U 587   var m = '?c=de.uhilger.filecms.pub.SessionManager&m=expireSession';
588   var u = '../pub' + m;
589   
590   fm_get(u, "text", function(resp) {
591     $('#userMenu').text('nicht angemeldet');
592     window.location.href = '../logout.html';
593   });
594 }
595
596
a4d3b5 597 /* ---- codemirror editor handling -------- */
U 598
599 function fm_code_edit(content) {
600   cm = CodeMirror.fromTextArea(document.getElementById("editspace"), {
601     lineNumbers: true,
602     mode: "xml",
603     viewportMargin : Infinity,
604     extraKeys: {
915927 605         "F9": function(cm) {
U 606         cm.setOption("fullScreen", !cm.getOption("fullScreen"));
607       },
608         "Esc": function(cm) {
609         if (cm.getOption("fullScreen")) cm.setOption("fullScreen", false);
610       }
a4d3b5 611     }
U 612   });
613   cm.setValue(content);
915927 614 }
a4d3b5 615
U 616
617
618 /* -------- helper functions ----------- */
619
b7475d 620 function fm_get(u, dtype, scallback) {
a4d3b5 621   $.ajax({
U 622     url: u,
623     type: "GET",
b7475d 624     dataType: dtype,
a4d3b5 625     success: scallback,
U 626     error: function (xhr, status, errorThrown) {
627       alert("Error: " + errorThrown + " Status: " + status + " URL: " + u);
628     },
629     complete: function (xhr, status) {
630       //console.log( "The request is complete!" );
631     }
632
633   });
915927 634 }
a4d3b5 635
U 636 function fm_post(u, d, scallback) {
637   $.ajax({
638     url: u,
639     data: d,
640     type: "POST",
641     dataType: "json",
642     success: scallback,
643     error: function (xhr, status, errorThrown) {
644       $('#fehler').html("Error: " + errorThrown + " Status: " + status);
645     },
646     complete: function (xhr, status) {
647       //alert( "The request is complete!" );
648     }
649   });
915927 650 }
a4d3b5 651
e5ff42 652 function fm_serialise(obj) {
U 653   return '{"' + obj.constructor.name + '":' + JSON.stringify(obj) + '}';
915927 654 }
e5ff42 655
7342b1 656 /* ----- Objekte ----- */
U 657
658 function FileList(fl) {
659   this.files = fl;
660 }
661
662 function FileRef(obj) {
663   var self = this;
664   this.fr = obj;
665   
666   this.typeClass = function() {
10d3d3 667     if(modus == 'kacheln') {
U 668       if(self.fr.isDirectory) {
a3d410 669         return 'fa-folder ordner';
10d3d3 670       } else {
a3d410 671         return 'fa-file datei';
10d3d3 672       }
7342b1 673     } else {
10d3d3 674       if(self.fr.isDirectory) {
a3d410 675         return 'fa-folder ordner';
10d3d3 676       } else {
a3d410 677         return 'fa-file-o datei';
10d3d3 678       }
7342b1 679     }
2121cc 680   };
U 681   
682   this.fileName = function() {
683     var namen = self.fr.absolutePath.split('/');
684     if(namen.length > 0) {
685       return namen[namen.length - 1];
686     } else {
687       return self.fr.absolutePath;
688     }
689   };
7342b1 690 }
5dfab6 691
U 692 function BcrFiles(fl) {
693   this.files = fl;
694 }
695
696 function BcrFile(rp, n) {
697   this.relPath = rp;
698   this.fName = n;
7aa566 699 }
U 700