Dateiverwaltung für die WebBox
ulrich
2017-02-20 5dfab6ee05a6926a84c068ee0ebcabab1480c9c5
list in Arbeit
4 files modified
111 ■■■■■ changed files
src/java/de/uhilger/filecms/api/FileMgr.java 37 ●●●● patch | view | raw | blame | history
web/ui/index.html 17 ●●●● patch | view | raw | blame | history
web/ui/stile.css 4 ●●●● patch | view | raw | blame | history
web/ui/ui.js 53 ●●●●● patch | view | raw | blame | history
src/java/de/uhilger/filecms/api/FileMgr.java
@@ -20,11 +20,13 @@
import de.uhilger.filecms.web.Initialiser;
import de.uhilger.filesystem.FileRef;
import de.uhilger.filesystem.LocalFileSystem;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.security.Principal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -52,23 +54,41 @@
  }
  
  public List<FileRef> list(String relPath) {
    List<FileRef> files = null;
    List<FileRef> files = new ArrayList();
    
    if(relPath.length() == 0) {
      /*
      publicFolder = new FileRef(getUserPubDir().getAbsolutePath(), true);
      logger.info(publicFolder.getAbsolutePath());
      homeFolder = new FileRef(getUserHomeDir().getAbsolutePath(), true);
      logger.info(homeFolder.getAbsolutePath());
      */
      namedPublicFolder = new FileRef(PUB_DIR_NAME, true);
      logger.info(namedPublicFolder.getAbsolutePath());
      logger.finer(namedPublicFolder.getAbsolutePath());
      namedHomeFolder = new FileRef(HOME_DIR_NAME, true);
      logger.info(namedHomeFolder.getAbsolutePath());
      logger.finer(namedHomeFolder.getAbsolutePath());
      files = new ArrayList<FileRef>();
      files.add(namedHomeFolder);
      files.add(namedPublicFolder);
    } else {
      logger.info(relPath);
      String targetPath = null;
      if(relPath.startsWith(PUB_DIR_NAME)) {
        targetPath = PUB_DIR_PATH + getUserName() + "/" + relPath.substring(PUB_DIR_NAME.length());
      } else if(relPath.startsWith(HOME_DIR_NAME)) {
        targetPath = HOME_DIR_PATH + getUserName() + "/" + relPath.substring(HOME_DIR_NAME.length());
      } else {
        // kann eigentlich nicht sein..
      }
      logger.info(targetPath);
      File targetDir = new File(getBase().getAbsolutePath(), targetPath);
      
      LocalFileSystem fs = new LocalFileSystem();
      FileRef[] fileRefs = fs.list(new FileRef(targetDir.getAbsolutePath(), true));
      for(int i = 0; i < fileRefs.length; i++) {
        files.add(fileRefs[i]);
      }
      //files = Arrays.asList(fileRefs);
    }
    
    return files;
@@ -93,6 +113,15 @@
    return userDir;
  }
  
  private String getUserName() {
    String userName = null;
    Object p = getRequest().getUserPrincipal();
    if(p instanceof Principal) {
      userName = ((Principal) p).getName();
    }
    return userName;
  }
  private File getUserHomeDir() {
    File userDir = null;
    File daten = new File(getBase().getAbsolutePath());
web/ui/index.html
@@ -12,11 +12,24 @@
    <script id="tpl-kacheln" type="x-tmpl-mustache">
      {{#files}}          
        <figure class="figure datei-figure text-center text-warning align-top">
          <i class="fa {{ typeClass }} fa-folder fa-3x"></i>
          <i class="fa {{ typeClass }} fa-3x"></i>
          <figcaption class="figure-caption">{{ fr.absolutePath }}</figcaption>
        </figure>   
      {{/files}}
          
    </script>
    <script id="tpl-bcr" type="x-tmpl-mustache">
      {{#files}}
          <a class="breadcrumb-item" href="{{ relPath }}">{{ fName }}</a>
      {{/files}}
    </script>
    <script id="tpl-bcr2" type="x-tmpl-mustache">
      <span class="breadcrumb-item active">Bootstrap</span>
    </script>
    <script id="tpl-bcr3" type="x-tmpl-mustache">
      <div class="pull-right align-middle">
        <i class="fa fa-th-large"></i>
      </div>
    </script>
  </head>
  <body>
@@ -104,7 +117,7 @@
        <div id="dateiansicht">
          <!-- Breadcrumb Start -->
          <div class="zentrum-bc">
            <nav class="breadcrumb">
            <nav class="breadcrumb" id="bcnav">
              <a class="breadcrumb-item" href="#">Home</a>
              <a class="breadcrumb-item" href="#">Library</a>
              <a class="breadcrumb-item" href="#">Data</a>
web/ui/stile.css
@@ -76,3 +76,7 @@
.datei-figure {
  width: 6em;
}
.datei-gewaehlt {
  color: gold;
}
web/ui/ui.js
@@ -1,4 +1,5 @@
var cm;
var pfad = '';
function fm_init() {
  $('.codeeditor-space').hide();
@@ -28,6 +29,25 @@
  $('#dateiansicht').show();  
}
function fm_dateiwahl() {
  var elem = this;
  //console.log('datei gewaehlt ' + $(elem).text().trim());
  if($(elem).children(0).hasClass('fa-folder')) {
    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')) {
    $('.datei-gewaehlt').removeClass('datei-gewaehlt');
    $(elem).children(0).addClass('datei-gewaehlt');
  } else {
    //console.log('kein folder oder file...');
  }
}
/* ----- API Calls ------------- */
function fm_get_login() {
@@ -43,6 +63,7 @@
  var m = '?c=de.uhilger.filecms.api.FileMgr&m=list&p=' + relPath;
  var u = '../svc' + m;
  fm_get(u, "json", function(resp) {
    //if(resp)
    var files = new Array();
    for(var i = 0; i < resp.List[0].FileRef.length; i++) {
      files.push(new FileRef(resp.List[0].FileRef[i]));
@@ -50,8 +71,31 @@
    var fl = new FileList(files);
    var template = $('#tpl-kacheln').html();
    Mustache.parse(template);   // optional, speeds up future uses
    $('.figure').attr('onclick','').unbind('click');
    $('#dateien').empty();
    $('#dateien').html(Mustache.render(template, fl));
    $('.figure').click(fm_dateiwahl);
    var dirList = new Array();
    var rp = '';
    var dirs = relPath.split('/');
    dirList.push(new BcrFile(rp, 'Home'))
    if(dirs.length > 0) {
      for(var i = 0; i < dirs.length; i++) {
        if(rp.length > 0 ) {
          dirList.push(new BcrFile(rp + '/' + dirs[i], dirs[i]));
        } else {
          dirList.push(new BcrFile(dirs[i], dirs[i]));
        }
      }
      var bl = new BcrFiles(dirList);
      var template = $('#tpl-bcr').html();
      Mustache.parse(template);   // optional, speeds up future uses
      $('#bcnav').empty();
      $('#bcnav').html(Mustache.render(template, bl));
      $('#bcnav').append($('#tpl-bcr2').html());
      $('#bcnav').append($('#tpl-bcr3').html());
    }
  });  
}
@@ -178,3 +222,12 @@
    }
  }
}
function BcrFiles(fl) {
  this.files = fl;
}
function BcrFile(rp, n) {
  this.relPath = rp;
  this.fName = n;
}