浏览代码

Update `_checkFile` to have nicer variable names
Check that `name` contains a `String` when creating a directory
Add space as a valid char when creating a directory
Store the directory name URL encoded when creating a directory
Don't add a trailing slash to the title when creating a directory

dom111 6 年之前
父节点
当前提交
073fa5d9f8
共有 1 个文件被更改,包括 16 次插入9 次删除
  1. 16 9
      src/webdav.js

+ 16 - 9
src/webdav.js

@@ -157,17 +157,17 @@
             return file.item;
         },
         _checkFile = function(file) {
-            var r = false;
+            var foundFile = false;
 
             $.each(_files, function() {
                 if (this.name == file.name) {
-                    r = this;
+                    foundFile = this;
 
                     return false;
                 }
             });
 
-            return r;
+            return foundFile;
         },
         _createListItem = function(file) {
             file.item = $('<li/>').data('file', file);
@@ -446,9 +446,14 @@
 
                 // create directory
                 $('a.create-directory').on('click', function() {
-                    var name = prompt('New folder name:'), file;
+                    var name = prompt('New folder name:'),
+                    file = _checkFile(name);
 
-                    if (!name.match(/^[\w\d_\-\.]+$/)) {
+                    if (!name) {
+                        return false;
+                    }
+
+                    if (!name.match(/^[\w \-\.]+$/)) {
                         alert('Name contains non-standard characters, aborting.');
 
                         return false;
@@ -459,7 +464,7 @@
                         return false;
                     }
 
-                    if (file = _checkFile(name)) {
+                    if (file) {
                         if (file.directory) {
                             alert('Directory "' + file.name + '" already exists.');
                         }
@@ -470,10 +475,12 @@
                         return false;
                     }
 
-                    var file = {
+                    file = {
                         directory: true,
-                        name: name,
-                        title: name + '/',
+                        name: name.replace(/[^\w\/\-\.]/g, function(char) {
+                            return encodeURIComponent(char);
+                        }),
+                        title: name,
                         path: _path,
                         modified: Date.now(),
                         size: false,