| | |
| | | /* |
| | | 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 <http://www.gnu.org/licenses/>. |
| | | */ |
| | | |
| | | var cm; |
| | | var pfad = ''; |
| | | var modus = 'kacheln'; |
| | | var openFileName = ''; |
| | | |
| | | function fm_init() { |
| | | $('.codeeditor-space').hide(); |
| | | $('.code-editor-container').hide(); |
| | | //$('.ost').attr('flex-basis', 0); |
| | | $('#newTextFile').on('click', fm_menu_neue_textdatei); |
| | | $('#newFolder').on('click', fm_get_new_folder); |
| | | $('#editTextFile').on('click', fm_get_file_content); |
| | | $('#saveFile').on('click', fm_menu_datei_speichern); |
| | | $('#saveFileAs').on('click', fm_menu_datei_speichern_unter); |
| | | $('#closeFile').on('click', fm_menu_datei_schliessen); |
| | | $('#myModal').on('hidden.bs.modal', function (e) { |
| | | $('#m-del').on('click', fm_menu_delete); |
| | | $('#m-test').on('click', fm_menu_test); |
| | | $('#saveModal').on('hidden.bs.modal', function (e) { |
| | | $('#modal_ok').attr('onclick','').unbind('click'); |
| | | }); |
| | | $('#logout').click(fm_logout); |
| | | fm_get_login(); |
| | | fm_get_list(''); |
| | | fm_init_uploader(); |
| | | } |
| | | |
| | | /* ----- Uploader Anfang ----------*/ |
| | | |
| | | var dateien = new Array(); |
| | | |
| | | function fm_init_uploader() { |
| | | var dropzone = document.getElementById("dateien"); |
| | | dropzone.ondragover = dropzone.ondragenter = function(event) { |
| | | event.stopPropagation(); |
| | | event.preventDefault(); |
| | | }; |
| | | |
| | | dropzone.ondrop = function(event) { |
| | | event.stopPropagation(); |
| | | event.preventDefault(); |
| | | var fileList = event.dataTransfer.files; |
| | | for (var i=0; i<fileList.length; i++) { |
| | | dateien.push(fileList[i]); |
| | | } |
| | | sendFile(dateien.pop()); |
| | | }; |
| | | } |
| | | |
| | | 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); |
| | | xhr.send(fd); |
| | | } |
| | | |
| | | /* ----- Uploader Ende --------------- */ |
| | | |
| | | function fm_menu_delete() { |
| | | $('#confirmOk').click(function() { |
| | | // hier loeschen |
| | | fm_del_files(); |
| | | }); |
| | | $('#confirmModalTitle').text("Löschen"); |
| | | $('#confirmModalBody').text("Wirklich löschen?"); |
| | | |
| | | /*var fname = $('.datei-gewaehlt').text(); |
| | | if(fname !== undefined) { |
| | | $('#dateiname').val(fname); |
| | | } else { |
| | | $('#dateiname').val(''); |
| | | }*/ |
| | | //$('#dateiname').attr('placeholder', 'Dateiname'); |
| | | $('#confirmModal').modal({ |
| | | keyboard: false, |
| | | show: true |
| | | }); |
| | | } |
| | | |
| | | function fm_menu_test() { |
| | | var w = $('.ost').width(); |
| | | if(w == 0) { |
| | | $('.ost').width('20%'); |
| | | $('.ost').text('Hallo Welt!'); |
| | | } else { |
| | | $('.ost').empty(); |
| | | $('.ost').width(0); |
| | | } |
| | | } |
| | | |
| | | function fm_ansicht_umschalten() { |
| | | if($('#ansicht').children(0).hasClass('fa-th-list')) { |
| | | $('#ansicht').children(0).addClass('fa-th-large'); |
| | | $('#ansicht').children(0).removeClass('fa-th-list'); |
| | | modus = 'liste'; |
| | | } else { |
| | | $('#ansicht').children(0).addClass('fa-th-list'); |
| | | $('#ansicht').children(0).removeClass('fa-th-large'); |
| | | modus = 'kacheln'; |
| | | } |
| | | fm_get_list(pfad); |
| | | } |
| | | |
| | | function fm_set_modus() { |
| | | if(modus == 'kacheln') { |
| | | $('#ansicht').children(0).addClass('fa-th-list'); |
| | | $('#ansicht').children(0).removeClass('fa-th-large'); |
| | | } else { |
| | | $('#ansicht').children(0).addClass('fa-th-large'); |
| | | $('#ansicht').children(0).removeClass('fa-th-list'); |
| | | } |
| | | } |
| | | |
| | | function fm_menu_neue_textdatei() { |
| | | $('#dateiansicht').hide(); |
| | | $('.codeeditor-space').show(); |
| | | $('.code-editor-container').show(); |
| | | fm_code_edit('Test'); |
| | | fm_text_edit('Neue Datei'); |
| | | } |
| | | |
| | | function fm_menu_datei_schliessen() { |
| | | $('.codeeditor-space').hide(); |
| | | $('.code-editor-container').hide(); |
| | | cm.toTextArea(); |
| | | $('#dateiansicht').show(); |
| | | $('#bcnav').show(); |
| | | $('#dateien').show(); |
| | | openFileName = ''; |
| | | fm_get_list(pfad); |
| | | } |
| | | |
| | | function fm_dateiwahl(ev) { |
| | | var elem = this; |
| | | //console.log('dateiwahl nach click, event shift: ' + ev.shiftKey + ", event ctrl: " + ev.ctrlKey); |
| | | if(modus == 'kacheln') { |
| | | // Kacheln |
| | | if($(elem).children(0).hasClass('fa-folder')) { |
| | | if(/*ev.shiftKey || */ ev.ctrlKey) { |
| | | $(elem).find('.dateiname').addClass('datei-gewaehlt'); |
| | | } else { |
| | | var ordner = $(elem).text().trim(); |
| | | if(pfad.length > 0) { |
| | | pfad = pfad + '/' + ordner; |
| | | } else { |
| | | pfad = ordner; |
| | | } |
| | | fm_get_list(pfad); |
| | | } |
| | | } else if($(elem).children(0).hasClass('fa-file')) { |
| | | if(/*ev.shiftKey || */ ev.ctrlKey) { |
| | | // mehrere Dateien sollen gewaehlt werden |
| | | } else { |
| | | $('.datei-gewaehlt').removeClass('datei-gewaehlt'); |
| | | } |
| | | $(elem).find('.dateiname').addClass('datei-gewaehlt'); |
| | | } else { |
| | | //console.log('kein folder oder file...'); |
| | | } |
| | | } else { |
| | | // Liste |
| | | if($(elem).find('.datei-elem').children(0).hasClass('fa-file-o')) { |
| | | // Datei |
| | | if(/*ev.shiftKey || */ ev.ctrlKey) { |
| | | // mehrere Dateien sollen gewaehlt werden |
| | | } else { |
| | | $('.table-info').removeClass('table-info'); |
| | | $('.datei-gewaehlt').removeClass('datei-gewaehlt'); |
| | | } |
| | | $(elem).addClass('table-info'); |
| | | $(elem).find('.dateiname').addClass('datei-gewaehlt'); |
| | | } else { |
| | | // Ordner |
| | | if(/*ev.shiftKey || */ ev.ctrlKey) { |
| | | $(elem).children(0).addClass('datei-gewaehlt'); |
| | | } else { |
| | | var ordner = $(elem).find('.dateiname').text(); |
| | | if(pfad.length > 0) { |
| | | pfad = pfad + '/' + ordner; |
| | | } else { |
| | | pfad = ordner; |
| | | } |
| | | fm_get_list(pfad); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | function fm_bc_click() { |
| | | var elem = this; |
| | | var bcPfad = $(elem).attr('rpath'); |
| | | if(bcPfad !== undefined) { |
| | | pfad = bcPfad; |
| | | fm_get_list(bcPfad); |
| | | } else { |
| | | pfad = ''; |
| | | fm_get_list(''); |
| | | } |
| | | } |
| | | |
| | | function fm_text_edit(content) { |
| | | $('#bcnav').hide(); |
| | | $('#dateien').hide(); |
| | | $('.codeeditor-space').show(); |
| | | $('.code-editor-container').show(); |
| | | fm_code_edit(content); |
| | | } |
| | | |
| | | /* ----- API Calls ------------- */ |
| | | |
| | | function fm_get_login() { |
| | | var m = '?c=de.uhilger.um.pub.SessionManager&m=getSessionUser'; |
| | | var u = '../../um/pub' + m; |
| | | fm_get(u, "json", function(resp) { |
| | | $('#userMenu').text(resp.UserData.firstName); |
| | | var m = '?c=de.uhilger.filecms.pub.SessionManager&m=getSessionUser'; |
| | | var u = '../pub' + m; |
| | | fm_get(u, "text", function(resp) { |
| | | $('#userMenu').text(resp); |
| | | }); |
| | | } |
| | | |
| | | function fm_menu_datei_speichern() { |
| | | |
| | | function fm_get_new_folder() { |
| | | $('#modal_ok').click(function() { |
| | | // hier speichern |
| | | var m = '?c=de.uhilger.filecms.api.FileMgr&m=saveTextFile'; |
| | | var m = '?c=de.uhilger.filecms.api.FileMgr&m=newFolder&p=' + pfad + '&p=' + $('#dateiname').val(); |
| | | var u = '../svc' + m; |
| | | fm_post(u, {p1: '', p2: $('#dateiname').val(), p3: cm.getValue()}, function(resp) { |
| | | |
| | | 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_get_file_content() { |
| | | var gewaehlte = $('.datei-gewaehlt'); |
| | | //var fname = $(gewaehlte).find('.dateiname').text(); |
| | | |
| | | |
| | | // FileRef saveTextFile(String relPath, String fileName, String contents) |
| | | |
| | | |
| | | /* |
| | | var t = new Template(-2, $('#filename').val(), self.cm.getValue(), 3); |
| | | var u = '../api/tr/?c=de.uhilger.webbox.api.ContentApi&m=newTemplate'; |
| | | self.post(u, {p: self.serialise(t)}, function (resp) { |
| | | self.isnew = false; |
| | | self.editid = resp.Template.id; |
| | | $('#contlist').append(self.buildContListItem(3, resp.Template.name, resp.Template.id)); |
| | | $('#templateeditor').addClass('hidden'); |
| | | 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) { |
| | | fm_text_edit(resp); |
| | | }); |
| | | */ |
| | | |
| | | } |
| | | |
| | | function fm_del_files() { |
| | | var gewaehlte = $('.datei-gewaehlt'); |
| | | //console.log('anzahl: ' + gewaehlte.length); |
| | | var fnames = new Array(); |
| | | var i = 0; |
| | | while(i < gewaehlte.length) { |
| | | var str = { "java.lang.String": $(gewaehlte[i]).text()}; |
| | | fnames.push(str); |
| | | //console.log('loeschen ' + pfad + ' ' + $(gewaehlte[i]).text()); |
| | | //i += 2; |
| | | i++; |
| | | } |
| | | |
| | | var liste = '{"List":' + JSON.stringify(fnames) + '}'; |
| | | // 'liste' enthaelt: |
| | | // {"List":[{"java.lang.String":"test3.txt"},{"java.lang.String":"Test1.txt"},{"java.lang.String":"Test2.txt"}]} |
| | | // und wird auf dem Server zu einer List[ArrayList<String>] bei der jede ArrayList<String> nur ein Element hat |
| | | |
| | | 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_render_list(fl) { |
| | | if(modus == 'kacheln') { |
| | | // Kachelansicht |
| | | $.get('tpl-kacheln.txt', function(template) { |
| | | $('#dateien').empty(); |
| | | $('#dateien').html(Mustache.render(template, fl)); |
| | | $('.figure').click(fm_dateiwahl); |
| | | }); |
| | | $('.datei-zeile').attr('onclick','').unbind('click'); |
| | | } else { |
| | | // Listenansicht |
| | | $.get('tpl-liste.txt', function(template) { |
| | | $('#dateien').empty(); |
| | | $('#dateien').html(Mustache.render(template, fl)); |
| | | $('.datei-zeile').click(fm_dateiwahl); |
| | | }); |
| | | $('.figure').attr('onclick','').unbind('click'); |
| | | } |
| | | } |
| | | |
| | | // 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) { |
| | | $.get('tpl-bcr.txt', function(template) { |
| | | $('#bcnav').html(Mustache.render(template, bl)); |
| | | //fm_bcr_step2(dirs, dirList); |
| | | |
| | | if(dirs.length > 0) { |
| | | dirList.push(new BcrFile(rp + '/' + dirs[dirs.length-1], dirs[dirs.length-1])); |
| | | $.get('tpl-bcr2.txt', function(template) { |
| | | $('#bcnav').append(Mustache.render(template, dirList[dirList.length-1])); |
| | | $('#bcnav').append($('#tpl-bcr3').html()); |
| | | fm_bcr_end(); |
| | | }); |
| | | //template = $('#tpl-bcr2').html(); |
| | | //Mustache.parse(template); // optional, speeds up future uses |
| | | //$('#bcnav').append(Mustache.render(template, dirList[dirList.length-1])); |
| | | } else { |
| | | $.get('tpl-bcr2.txt', function(template) { |
| | | $('#bcnav').append(Mustache.render(template, dirList[0])); |
| | | $('#bcnav').append($('#tpl-bcr3').html()); |
| | | fm_bcr_end(); |
| | | }); |
| | | //template = $('#tpl-bcr2').html(); |
| | | //Mustache.parse(template); // optional, speeds up future uses |
| | | //$('#bcnav').append(Mustache.render(template, dirList[0])); |
| | | } |
| | | |
| | | }); |
| | | } else { |
| | | //fm_bcr_step2(dirs, dirList); |
| | | /* |
| | | if(dirs.length > 0) { |
| | | dirList.push(new BcrFile(rp + '/' + dirs[dirs.length-1], dirs[dirs.length-1])); |
| | | $.get('tpl-bcr2.txt', function(template) { |
| | | $('#bcnav').append(Mustache.render(template, dirList[dirList.length-1])); |
| | | $('#bcnav').append($('#tpl-bcr3').html()); |
| | | fm_bcr_end(); |
| | | }); |
| | | //template = $('#tpl-bcr2').html(); |
| | | //Mustache.parse(template); // optional, speeds up future uses |
| | | //$('#bcnav').append(Mustache.render(template, dirList[dirList.length-1])); |
| | | } else { |
| | | $.get('tpl-bcr2.txt', function(template) { |
| | | $('#bcnav').append(Mustache.render(template, dirList[0])); |
| | | $('#bcnav').append($('#tpl-bcr3').html()); |
| | | fm_bcr_end(); |
| | | }); |
| | | //template = $('#tpl-bcr2').html(); |
| | | //Mustache.parse(template); // optional, speeds up future uses |
| | | //$('#bcnav').append(Mustache.render(template, dirList[0])); |
| | | } |
| | | */ |
| | | } |
| | | } else { |
| | | pfad = ''; |
| | | $.get('tpl-bcr2.txt', function(template) { |
| | | $('#bcnav').append(Mustache.render(template, dirList[0])); |
| | | $('#bcnav').append($('#tpl-bcr3').html()); |
| | | fm_bcr_end(); |
| | | }); |
| | | //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(); |
| | | }); |
| | | } |
| | | |
| | | /* |
| | | function fm_bcr_step2(dirs, dirList) { |
| | | if(dirs.length > 0) { |
| | | dirList.push(new BcrFile(rp + '/' + dirs[dirs.length-1], dirs[dirs.length-1])); |
| | | $.get('tpl-bcr2.txt', function(template) { |
| | | $('#bcnav').append(Mustache.render(template, dirList[dirList.length-1])); |
| | | $('#bcnav').append($('#tpl-bcr3').html()); |
| | | fm_bcr_end(); |
| | | }); |
| | | //template = $('#tpl-bcr2').html(); |
| | | //Mustache.parse(template); // optional, speeds up future uses |
| | | //$('#bcnav').append(Mustache.render(template, dirList[dirList.length-1])); |
| | | } else { |
| | | $.get('tpl-bcr2.txt', function(template) { |
| | | $('#bcnav').append(Mustache.render(template, dirList[0])); |
| | | $('#bcnav').append($('#tpl-bcr3').html()); |
| | | fm_bcr_end(); |
| | | }); |
| | | //template = $('#tpl-bcr2').html(); |
| | | //Mustache.parse(template); // optional, speeds up future uses |
| | | //$('#bcnav').append(Mustache.render(template, dirList[0])); |
| | | } |
| | | } |
| | | */ |
| | | |
| | | function fm_bcr_end() { |
| | | $('.breadcrumb-item').click(fm_bc_click); |
| | | $('#ansicht').click(fm_ansicht_umschalten); |
| | | fm_set_modus(); |
| | | } |
| | | |
| | | function fm_menu_datei_speichern() { |
| | | //var fname = $('.datei-gewaehlt').text(); |
| | | var fname = openFileName; |
| | | if(fname !== undefined && fname !== '') { |
| | | fm_save_file(fname); |
| | | } else { |
| | | fm_menu_datei_speichern_unter(); |
| | | } |
| | | } |
| | | |
| | | function fm_save_file(saveFileName) { |
| | | var m = '?c=de.uhilger.filecms.api.FileMgr&m=saveTextFile'; |
| | | var u = '../svc' + m; |
| | | fm_post(u, {p1: pfad, p2: saveFileName, p3: cm.getValue()}, function(resp) { |
| | | openFileName = saveFileName; |
| | | }); |
| | | } |
| | | |
| | | function fm_menu_datei_speichern_unter() { |
| | | |
| | | $('#modal_ok').click(function() { |
| | | // hier speichern |
| | | fm_save_file($('#dateiname').val()); |
| | | /* |
| | | var m = '?c=de.uhilger.filecms.api.FileMgr&m=saveTextFile'; |
| | | var u = '../svc' + m; |
| | | fm_post(u, {p1: pfad, p2: $('#dateiname').val(), p3: cm.getValue()}, function(resp) { |
| | | |
| | | }); |
| | | */ |
| | | }); |
| | | $('#saveModalTitle').text('Datei speichern'); |
| | | $('#dialogfrage').text("Dateiname?"); |
| | | |
| | | var fname = $('.datei-gewaehlt').text(); |
| | | if(fname !== undefined) { |
| | | $('#dateiname').val(fname); |
| | | } else { |
| | | $('#dateiname').val(''); |
| | | } |
| | | $('#dateiname').attr('placeholder', 'Dateiname'); |
| | | $('#saveModal').modal({ |
| | | keyboard: false, |
| | | show: true |
| | | }); |
| | | } |
| | | |
| | | function fm_logout() { |
| | |
| | | /* ---- codemirror editor handling -------- */ |
| | | |
| | | function fm_code_edit(content) { |
| | | //var windowHeight = $(window).height(); |
| | | //$("editspace").empty(); |
| | | //self.cm.toTextArea(); |
| | | |
| | | cm = CodeMirror.fromTextArea(document.getElementById("editspace"), { |
| | | lineNumbers: true, |
| | | mode: "xml", |
| | |
| | | return '{"' + obj.constructor.name + '":' + JSON.stringify(obj) + '}'; |
| | | } |
| | | |
| | | /* ----- Objekte ----- */ |
| | | |
| | | function FileList(fl) { |
| | | this.files = fl; |
| | | } |
| | | |
| | | function FileRef(obj) { |
| | | var self = this; |
| | | this.fr = obj; |
| | | |
| | | this.typeClass = function() { |
| | | if(modus == 'kacheln') { |
| | | if(self.fr.isDirectory) { |
| | | return 'fa-folder ordner'; |
| | | } else { |
| | | return 'fa-file datei'; |
| | | } |
| | | } else { |
| | | if(self.fr.isDirectory) { |
| | | return 'fa-folder ordner'; |
| | | } else { |
| | | return 'fa-file-o datei'; |
| | | } |
| | | } |
| | | }; |
| | | |
| | | this.fileName = function() { |
| | | var namen = self.fr.absolutePath.split('/'); |
| | | if(namen.length > 0) { |
| | | return namen[namen.length - 1]; |
| | | } else { |
| | | return self.fr.absolutePath; |
| | | } |
| | | }; |
| | | } |
| | | |
| | | function BcrFiles(fl) { |
| | | this.files = fl; |
| | | } |
| | | |
| | | function BcrFile(rp, n) { |
| | | this.relPath = rp; |
| | | this.fName = n; |
| | | } |
| | | |