/* Dateiverwaltung - File management in your browser Copyright (C) 2017 Ulrich Hilger, http://uhilger.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ /* * In api.js finden sich die HTTP-Aufrufe vom Browser-Client * der Dateiverwaltung an deren Server-Kern */ /* ---------- Dateien kopieren, verschieben --------------- */ /* * Hier wird fuer eine zuvor markierte Liste von Dateien, fuer die * Cut oder Copy gewaehlt wurde, die Operations ausgefuehrt (move oder copy) * @returns {undefined} */ function fm_paste_files() { var m; if(cutCopyOperation === 'cut') { //m = '?c=de.uhilger.filecms.api.FileMgr&m=moveFiles'; //&p=' + cutCopySrcDir + '&p=' + pfad + '&p=' + encodeURIComponent(liste); m = '?c=de.uhilger.filecms.api.FileMgr&m=moveFiles&p=' + cutCopySrcDir + '&p=' + pfad + '&p=' + encodeURIComponent(cutCopyFiles); } else { //m = '?c=de.uhilger.filecms.api.FileMgr&m=copyFiles'; //&p=' + cutCopySrcDir + '&p=' + pfad + '&p=' + encodeURIComponent(liste); m = '?c=de.uhilger.filecms.api.FileMgr&m=copyFiles&p=' + cutCopySrcDir + '&p=' + pfad + '&p=' + encodeURIComponent(cutCopyFiles); } var u = '../svc' + m; fm_get(u, "text", function(resp) { // console.log('deleteFiles gab folgendes zurueck: ' + resp); fm_get_list(pfad); }); /* fm_post(u, {p1: encodeURIComponent(cutCopySrcDir), p2: encodeURIComponent(pfad), p3: encodeURIComponent(cutCopyFiles)},'text', function(resp) { // resp evtl. zeigen.. fm_get_list(pfad); }); */ } /* ---------- Dateien listen, loeschen, umbenennen --------------- */ // http://localhost:8079/file-cms/svc?c=de.uhilger.filecms.api.FileMgr&f=JSONNICE&m=list&p= function fm_get_list(relPfad) { $('#ansicht').attr('onclick','').unbind('click'); var m = '?c=de.uhilger.filecms.api.FileMgr&m=list&p=' + relPfad; var u = '../svc' + m; fm_get(u, "json", function(resp) { if(resp.List[0].FileRef !== undefined) { var files = new Array(); if(resp.List[0].FileRef instanceof Array) { for(var i = 0; i < resp.List[0].FileRef.length; i++) { files.push(new FileRef(resp.List[0].FileRef[i])); } } else { files.push(new FileRef(resp.List[0].FileRef)); } var fl = new FileList(files); fm_render_list(fl); } else { $('#dateien').empty(); } // Breadcrumb-Ansicht var template; $('.breadcrumb-item').attr('onclick','').unbind('click'); $('#bcnav').empty(); var dirList = new Array(); var rp = ''; //console.log("'" + relPfad + "'"); var dirs = relPfad.split('/'); //console.log(dirs.length); dirList.push(new BcrFile(rp, 'Home')); if(relPfad.length > 0) { for(var i = 0; i < dirs.length - 1; i++) { if(rp.length > 0 ) { dirList.push(new BcrFile(rp + '/' + dirs[i], dirs[i])); rp = rp + '/' + dirs[i]; } else { dirList.push(new BcrFile(dirs[i], dirs[i])); rp = dirs[i]; } } var bl = new BcrFiles(dirList); if(dirList.length > 0) { template = $('#tpl-bcr').html(); Mustache.parse(template); // optional, speeds up future uses $('#bcnav').html(Mustache.render(template, bl)); } if(dirs.length > 0) { dirList.push(new BcrFile(rp + '/' + dirs[dirs.length-1], dirs[dirs.length-1])); template = $('#tpl-bcr2').html(); Mustache.parse(template); // optional, speeds up future uses $('#bcnav').append(Mustache.render(template, dirList[dirList.length-1])); } else { template = $('#tpl-bcr2').html(); Mustache.parse(template); // optional, speeds up future uses $('#bcnav').append(Mustache.render(template, dirList[0])); } $('#bcnav').append($('#tpl-bcr3').html()); } else { pfad = ''; template = $('#tpl-bcr2').html(); Mustache.parse(template); // optional, speeds up future uses $('#bcnav').append(Mustache.render(template, dirList[0])); $('#bcnav').append($('#tpl-bcr3').html()); } $('.breadcrumb-item').click(fm_bc_click); $('#ansicht').click(fm_ansicht_umschalten); fm_set_modus(); if(fm_slideshow) { $("[data-fancybox]").fancybox({ loop: true, idleTime: 2 }); } }); } function fm_del_files() { var liste = fm_gewaehlte_dateien(); var m = '?c=de.uhilger.filecms.api.FileMgr&m=deleteFiles&p=' + pfad + '&p=' + encodeURIComponent(liste); var u = '../svc' + m; fm_get(u, "text", function(resp) { // console.log('deleteFiles gab folgendes zurueck: ' + resp); fm_get_list(pfad); }); } function fm_rename_file(fn, p, neuerName) { var m = '?c=de.uhilger.filecms.api.FileMgr&m=renameFile'; m = m + '&p=' + p; m = m + '&p=' + fn; m = m + '&p=' + neuerName; var u = '../svc' + m; fm_get(u, "text", function(resp) { fm_get_list(pfad); }); } /* -------------------- Ordner ---------------- */ function fm_get_new_folder() { $('#modal_ok').click(function() { // hier speichern var m = '?c=de.uhilger.filecms.api.FileMgr&m=newFolder&p=' + pfad + '&p=' + $('#dateiname').val(); var u = '../svc' + m; fm_get(u, "json", function(resp) { fm_get_list(pfad); }); }); $('#saveModalTitle').text('Neuer Ordner'); $('#dialogfrage').text("Name?"); $('#dateiname').val(''); $('#dateiname').attr('placeholder', 'Ordnername'); $('#saveModal').modal({ keyboard: false, show: true }); } function fm_unzip_file(fn) { var m = '?c=de.uhilger.filecms.api.FileMgr&m=extractZipfile'; m = m + '&p=' + pfad; m = m + '&p=' + fn; var u = '../svc' + m; fm_get(u, "text", function(resp) { $('.system-out').empty(); $('.system-out').append('Rueckmeldung vom Entpacken: ' + resp); fm_fusszeile_zeigen(); fm_get_list(pfad); }); } function fm_export_html() { var m = '?c=de.uhilger.filecms.api.HtmlExportService&m=exportHtml'; m = m + '&p=' + pfad; var u = '../svc' + m; fm_get(u, "text", function(resp) { $('.system-out').empty(); $('.system-out').append('Rueckmeldung vom HTML-Export: ' + resp); fm_fusszeile_zeigen(); }); } /* ------------------- Dateiinhalte --------------------- */ function fm_save_file(saveFileName, method, callback) { var content; if(openEditor === 'text') { content = cm.getValue(); cm.getDoc().markClean(); } else { content = ed.getContent(); tinymce.activeEditor.undoManager.clear(); } var m = '?c=de.uhilger.filecms.api.FileMgr&m=' + method; var u = '../svc' + m; fm_post(u, {p1: pfad, p2: saveFileName, p3: content}, function(resp) { // hier scheint nichts zurueckzukommen.. }); openFileName = saveFileName; if(typeof (callback) !== 'function') { } else { callback(); } } function fm_get_file_content(typ) { var gewaehlte = $('.datei-gewaehlt'); //var fname = $(gewaehlte).find('.dateiname').text(); var fname = $(gewaehlte[0]).text(); openFileName = fname; var m = '?c=de.uhilger.filecms.api.FileMgr&m=getCode&p=' + pfad + '&p=' + fname; var u = '../svc' + m; fm_get(u, "text", function(resp) { if(typ == 'text') { var mode = "text/x-java"; if(fname.endsWith('js')) { mode = 'javascript'; } else if(fname.endsWith('xml')) { mode = 'xml'; } else if(fname.endsWith('properties')) { mode = 'xml'; } fm_text_edit(resp, mode); } else { fm_dok_edit(resp); } }); } /* -------- An- und Abmelden ------------- */ function fm_get_login() { var m = '?c=de.uhilger.filecms.pub.SessionManager&m=getSessionUser'; var u = '../pub' + m; fm_get(u, "text", function(resp) { userid = resp; $('#userMenu').text(resp); }); } function fm_logout() { var m = '?c=de.uhilger.filecms.pub.SessionManager&m=expireSession'; var u = '../pub' + m; fm_get(u, "text", function(resp) { $('#userMenu').text('nicht angemeldet'); window.location.href = '../logout.html'; }); } /* -------- Compile / Build ------------- */ function fm_build_app() { var m = '?c=de.uhilger.filecms.api.CompileService&m=buildApp&p=' + pfad; var u = '../svc' + m; fm_get(u, "text", function(resp) { $('.system-out').empty(); $('.system-out').append('Ergebnis von Build app: ' + resp); fm_fusszeile_zeigen(); }); } function fm_compile_all() { var m = '?c=de.uhilger.filecms.api.CompileService&m=compileAll&p=' + pfad; var u = '../svc' + m; fm_get(u, "json", function(resp) { if(resp.List[0].CompilerIssue !== undefined) { var lno; var eMsg; var issueList = new Array(); if(resp.List[0].CompilerIssue instanceof Array) { var issueNo = 0; while(issueNo < resp.List[0].CompilerIssue.length) { /* $('.system-out').append(' +++ ---- +++ '); $('.system-out').append(resp.List[0].CompilerIssue[issueNo].kind); $('.system-out').append(resp.List[0].CompilerIssue[issueNo].lineNumber); $('.system-out').append(resp.List[0].CompilerIssue[issueNo].sourceName); $('.system-out').append(resp.List[0].CompilerIssue[issueNo].message); */ var issue = new CompilerIssue( resp.List[0].CompilerIssue[issueNo].sourceName, resp.List[0].CompilerIssue[issueNo].message, resp.List[0].CompilerIssue[issueNo].kind, resp.List[0].CompilerIssue[issueNo].lineNumber ); issueList.push(issue); /* console.log(' +++ ---- +++ '); console.log(resp.List[0].CompilerIssue[issueNo].kind); console.log(resp.List[0].CompilerIssue[issueNo].lineNumber); console.log(resp.List[0].CompilerIssue[issueNo].sourceName); console.log(resp.List[0].CompilerIssue[issueNo].message); */ issueNo++; } } else { //lno = resp.List[0].CompilerIssue.lineNumber; //eMsg = resp.List[0].CompilerIssue.kind + ' ' + resp.List[0].CompilerIssue.message; //$('.system-out').append(lno + ' ' + eMsg); //console.log(lno + ' ' + eMsg); var issue = new CompilerIssue( resp.List[0].CompilerIssue.sourceName, resp.List[0].CompilerIssue.message, resp.List[0].CompilerIssue.kind, resp.List[0].CompilerIssue.lineNumber ); issueList.push(issue); } var theList = new IssueList(issueList); var template = $('#tpl-ci').html(); Mustache.parse(template); // optional, speeds up future uses $('.system-out').empty(); $('.system-out').html(Mustache.render(template, theList)); $('.sued').show(); } }); } function fm_compile(modeStr, callback) { var liste = fm_gewaehlte_dateien(); var m = '?c=de.uhilger.filecms.api.CompileService&m=compile&p=' + pfad + '&p=' + encodeURIComponent(liste) + '&p=' + modeStr; var u = '../svc' + m; fm_get(u, "json", function(resp) { callback(resp); }); } /* --------------- Bilder ------------------------- */ function fm_menu_shrink() { var gewaehlte = $('.datei-gewaehlt'); var fname = $(gewaehlte[0]).text(); var m = '?c=de.uhilger.filecms.api.FileMgr&m=bildVerkleinern'; m = m + '&p=' + pfad; m = m + '&p=' + fname; var u = '../svc' + m; fm_get(u, "text", function(resp) { fm_get_list(pfad); }); } /* -------- upload ----------- */ function sendFile(datei) { var uri = "../api/upload"; var xhr = new XMLHttpRequest(); var fd = new FormData(); xhr.open("POST", uri, true); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { fm_get_list(pfad); if(dateien.length > 0) { sendFile(dateien.pop()); } } }; fd.append('dateiauswahlfeld', datei); fd.append('pfad', pfad); xhr.send(fd); } /* -------- helper functions ----------- */ function fm_get(u, dtype, scallback) { $.ajax({ url: u, type: "GET", dataType: dtype, success: scallback, error: function (xhr, status, errorThrown) { alert("Error: " + errorThrown + " Status: " + status + " URL: " + u); }, complete: function (xhr, status) { //console.log( "The request is complete!" ); } }); } function fm_post(u, d, dtype, scallback) { $.ajax({ url: u, data: d, type: "POST", dataType: dtype, success: scallback, error: function (xhr, status, errorThrown) { $('#fehler').html("Error: " + errorThrown + " Status: " + status); }, complete: function (xhr, status) { //alert( "The request is complete!" ); } }); }