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