From 42fecef285c712f2a8d9b1b6371edc6ea9d9fac6 Mon Sep 17 00:00:00 2001
From: ulrich <undisclosed>
Date: Mon, 27 Feb 2017 22:26:21 +0000
Subject: [PATCH] Upload in gewaehltes Verzeichnis eingebaut und einige Modes bei Codemirror hinzugefuegt

---
 src/java/de/uhilger/filecms/api/UploadServlet.java |   44 ++++++++++++++-------
 web/ui/index.html                                  |    2 +
 web/ui/ui.js                                       |   19 +++++++--
 3 files changed, 45 insertions(+), 20 deletions(-)

diff --git a/src/java/de/uhilger/filecms/api/UploadServlet.java b/src/java/de/uhilger/filecms/api/UploadServlet.java
index 1a07401..927e25c 100644
--- a/src/java/de/uhilger/filecms/api/UploadServlet.java
+++ b/src/java/de/uhilger/filecms/api/UploadServlet.java
@@ -28,6 +28,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.security.Principal;
+import java.util.Enumeration;
 import java.util.Iterator;
 import java.util.List;
 import java.util.logging.Level;
@@ -56,6 +57,8 @@
   public static final String DESC = "file-cms uploader";
 
   private static final Logger logger = Logger.getLogger(UploadServlet.class.getName());
+  
+  private String targetDirStr;
 
   /**
    * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
@@ -68,6 +71,7 @@
    */
   protected void processRequest(HttpServletRequest request, HttpServletResponse response)
           throws ServletException, IOException {
+    
     //logger.log(Level.INFO, "start");
     boolean isMultipart = ServletFileUpload.isMultipartContent(request);
 
@@ -91,6 +95,7 @@
 
         // Process the uploaded items
         Iterator<FileItem> iter = items.iterator();
+        FileItem fileItem = null;
         while (iter.hasNext()) {
           FileItem item = iter.next();
 
@@ -100,10 +105,13 @@
             //File base = repository.getParentFile().getParentFile().getParentFile().getParentFile();
             //File webapps = new File(base, "webapps");
             //logger.info(webapps.getAbsolutePath());
-            File targetDir = getTargetDir(request, PUB_DIR_NAME);
-            logger.log(Level.FINE, "rufe processUploadedFile");
-            processUploadedFile(targetDir, item, true);
+            fileItem = item;
           }
+        }
+        File targetDir = getTargetDir(request, targetDirStr);
+        if(targetDir != null && fileItem != null) {
+          logger.log(Level.FINER, "targetDir before upload: " + targetDir.getAbsolutePath());
+          processUploadedFile(targetDir, fileItem, true);
         }
       } catch (Exception ex) {
         logger.log(Level.SEVERE, null, ex);
@@ -129,17 +137,20 @@
   }
 
   private File getTargetDir(HttpServletRequest request, String relPath) {
-    logger.finer(relPath);
-    String targetPath = null;
-    if(relPath.startsWith(PUB_DIR_NAME)) {
-      targetPath = PUB_DIR_PATH + getUserName(request) + "/" + relPath.substring(PUB_DIR_NAME.length());
-    } else if(relPath.startsWith(HOME_DIR_NAME)) {
-      targetPath = HOME_DIR_PATH + getUserName(request) + "/" + relPath.substring(HOME_DIR_NAME.length());
-    } else {
-      // kann eigentlich nicht sein..
+    File targetDir = null;
+    if(relPath != null) {
+      logger.finer(relPath);
+      String targetPath = null;
+      if(relPath.startsWith(PUB_DIR_NAME)) {
+        targetPath = PUB_DIR_PATH + getUserName(request) + relPath.substring(PUB_DIR_NAME.length());
+      } else if(relPath.startsWith(HOME_DIR_NAME)) {
+        targetPath = HOME_DIR_PATH + getUserName(request) + relPath.substring(HOME_DIR_NAME.length());
+      } else {
+        // kann eigentlich nicht sein..
+      }
+      logger.finer(targetPath);
+      targetDir = new File(getBase().getAbsolutePath(), targetPath);
     }
-    logger.finer(targetPath);
-    File targetDir = new File(getBase().getAbsolutePath(), targetPath);
     return targetDir;
   }
   
@@ -172,8 +183,8 @@
       long sizeInBytes = item.getSize();
       // Process a file upload
       if (writeToFile) {
-        //logger.log(Level.INFO, "writeToFile " + fileName);
         File uploadedFile = new File(targetDir, fileName);
+        logger.log(Level.FINER, "writeToFile " + uploadedFile.getAbsolutePath());
         item.write(uploadedFile);
       } else {
         InputStream uploadedStream = item.getInputStream();
@@ -189,8 +200,11 @@
     if (item.isFormField()) {
       String name = item.getFieldName();
       String value = item.getString();
-      //logger.log(Level.INFO, "field name: " + name + ", value: " + value);
+      logger.log(Level.FINER, "field name: " + name + ", value: " + value);
       //...
+      if(name.equals("pfad")) {
+        targetDirStr = value;
+      }
     }
   }
 
diff --git a/web/ui/index.html b/web/ui/index.html
index 6e21a5a..9138c0f 100644
--- a/web/ui/index.html
+++ b/web/ui/index.html
@@ -201,9 +201,11 @@
     <!-- Skripte -->
     <script src="/jslib/jquery/jquery.min.js"></script>
     <script src="/jslib/codemirror/lib/codemirror.js"></script>
+    
     <script src="/jslib/codemirror/mode/javascript/javascript.js"></script>
     <script src="/jslib/codemirror/mode/xml/xml.js"></script>
     <script src="/jslib/codemirror/mode/htmlmixed/htmlmixed.js"></script>
+    <script src="/jslib/codemirror/mode/clike/clike.js"></script>
     
     <script src="/jslib/codemirror/addon/display/fullscreen.js"></script>
     <script src="/jslib/tinymce/tinymce.min.js"></script>
diff --git a/web/ui/ui.js b/web/ui/ui.js
index ef2382b..1896636 100644
--- a/web/ui/ui.js
+++ b/web/ui/ui.js
@@ -179,6 +179,7 @@
     }  
   };  
   fd.append('dateiauswahlfeld', datei);  
+  fd.append('pfad', pfad);
   xhr.send(fd);          
 }
 
@@ -328,11 +329,11 @@
   }
 }
 
-function fm_text_edit(content) {
+function fm_text_edit(content, mode) {
   fm_filectls_hide();
   $('.codeeditor-space').show();
   $('.code-editor-container').show();
-  fm_code_edit(content);  
+  fm_code_edit(content, mode);  
   openEditor = 'text';
 }
 
@@ -394,7 +395,15 @@
   var u = '../svc' + m;
   fm_get(u, "text", function(resp) {
     if(typ == 'text') {
-      fm_text_edit(resp);
+      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);
     }
@@ -622,10 +631,10 @@
 
 /* ---- codemirror editor handling -------- */
 
-function fm_code_edit(content) {
+function fm_code_edit(content, m) {
   cm = CodeMirror.fromTextArea(document.getElementById("editspace"), {
     lineNumbers: true,
-    mode: "xml",
+    mode: m,
     viewportMargin : Infinity,
     extraKeys: {
         "F9": function(cm) {

--
Gitblit v1.9.3