Dateiverwaltung für die WebBox
ulrich
2017-02-27 42fecef285c712f2a8d9b1b6371edc6ea9d9fac6
Upload in gewaehltes Verzeichnis eingebaut und einige Modes bei Codemirror hinzugefuegt
3 files modified
65 ■■■■■ changed files
src/java/de/uhilger/filecms/api/UploadServlet.java 44 ●●●●● patch | view | raw | blame | history
web/ui/index.html 2 ●●●●● patch | view | raw | blame | history
web/ui/ui.js 19 ●●●● patch | view | raw | blame | history
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;
      }
    }
  }
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>
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) {