From 47e9d48f23fb2803f9c6cc80e48b2b3884d4841f Mon Sep 17 00:00:00 2001 From: ulrich <undisclosed> Date: Mon, 06 Mar 2017 07:05:03 +0000 Subject: [PATCH] Speichern unter --- src/java/de/uhilger/filecms/api/FileMgr.java | 109 ++++++++++++++++++++++++++++++++++++++++-------------- web/ui/ui.js | 8 ++-- 2 files changed, 84 insertions(+), 33 deletions(-) diff --git a/src/java/de/uhilger/filecms/api/FileMgr.java b/src/java/de/uhilger/filecms/api/FileMgr.java index 649357d..183c5ff 100644 --- a/src/java/de/uhilger/filecms/api/FileMgr.java +++ b/src/java/de/uhilger/filecms/api/FileMgr.java @@ -205,38 +205,89 @@ return result; } - public FileRef saveTextFile(String relPath, String fileName, String contents) { + public FileRef saveTextFileAs(String relPath, String fileName, String contents) { + FileRef savedFile = null; + logger.fine(relPath + " " + fileName); + //FileRef datenRef = getBase(); + Object p = getRequest().getUserPrincipal(); + if(p instanceof Principal) { + File targetFile = new File(getTargetDir(relPath), fileName); + if(targetFile.exists()) { + targetFile = getNewFileName(targetFile); + } else { + targetFile.getParentFile().mkdirs(); + } + saveToFile(targetFile, contents); + } + return savedFile; + } + + private File getNewFileName(File file) { + File dir = file.getParentFile(); + String targetName = file.getName(); + logger.fine("targetName: " + targetName); + String ext = ""; + int dotpos = targetName.indexOf("."); + if(dotpos > -1) { + ext = targetName.substring(dotpos); + targetName = targetName.substring(0, dotpos); + } + logger.fine("targetName: " + targetName + ", ext: " + ext); + int i = 1; + while(file.exists()) { + StringBuffer buf = new StringBuffer(); + buf.append(targetName); + buf.append("-"); + buf.append(i); + if(ext.length() > 0) { + buf.append(ext); + } + file = new File(dir, buf.toString()); + i++; + } + logger.fine("new file: " + file.getName()); + return file; + } + + private FileRef saveToFile(File targetFile, String contents) { FileRef savedFile = null; try { - FileRef datenRef = getBase(); - Object p = getRequest().getUserPrincipal(); - if(p instanceof Principal) { - File targetFile = new File(getTargetDir(relPath), fileName); - if(targetFile.exists()) { - /* - muss delete() sein? - pruefen: ueberschreibt der FileWriter den alteen Inhalt oder - entsteht eine unerwuenschte Mischung aus altem und neuem - Inhalt? - */ - targetFile.delete(); - } else { - targetFile.getParentFile().mkdirs(); - } - targetFile.createNewFile(); - FileWriter w = new FileWriter(targetFile); - w.write(contents); - w.flush(); - w.close(); - savedFile = new FileRef( - targetFile.getAbsolutePath(), - targetFile.isDirectory(), - targetFile.isHidden(), - targetFile.lastModified(), - targetFile.length()); - } + targetFile.createNewFile(); + FileWriter w = new FileWriter(targetFile); + w.write(contents); + w.flush(); + w.close(); + savedFile = new FileRef( + targetFile.getAbsolutePath(), + targetFile.isDirectory(), + targetFile.isHidden(), + targetFile.lastModified(), + targetFile.length()); } catch (IOException ex) { - logger.log(Level.SEVERE, null, ex); + logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex); + } + return savedFile; + } + + public FileRef saveTextFile(String relPath, String fileName, String contents) { + FileRef savedFile = null; + logger.fine(relPath + " " + fileName); + //FileRef datenRef = getBase(); + Object p = getRequest().getUserPrincipal(); + if(p instanceof Principal) { + File targetFile = new File(getTargetDir(relPath), fileName); + if(targetFile.exists()) { + /* + muss delete() sein? + pruefen: ueberschreibt der FileWriter den alteen Inhalt oder + entsteht eine unerwuenschte Mischung aus altem und neuem + Inhalt? + */ + targetFile.delete(); + } else { + targetFile.getParentFile().mkdirs(); + } + saveToFile(targetFile, contents); } return savedFile; } diff --git a/web/ui/ui.js b/web/ui/ui.js index f700f94..014e801 100644 --- a/web/ui/ui.js +++ b/web/ui/ui.js @@ -688,20 +688,20 @@ //var fname = $('.datei-gewaehlt').text(); var fname = openFileName; if(fname !== undefined && fname !== '') { - fm_save_file(fname); + fm_save_file(fname, 'saveTextFile'); } else { fm_menu_datei_speichern_unter(); } } -function fm_save_file(saveFileName) { +function fm_save_file(saveFileName, method) { var content; if(openEditor === 'text') { content = cm.getValue(); } else { content = ed.getContent(); } - var m = '?c=de.uhilger.filecms.api.FileMgr&m=saveTextFile'; + 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) { openFileName = saveFileName; @@ -711,7 +711,7 @@ function fm_menu_datei_speichern_unter() { $('#modal_ok').click(function() { // hier speichern - fm_save_file($('#dateiname').val()); + fm_save_file($('#dateiname').val(), 'saveTextFileAs'); }); $('#saveModalTitle').text('Datei speichern'); $('#dialogfrage').text("Dateiname?"); -- Gitblit v1.9.3