plugins(files): Feature 11 — Rename validation
- Invalid chars: \ / : * ? " < > | and control chars (0x00-0x1f) - Invalid names: '.', '..', leading/trailing spaces, trailing dot - Collision check via api.files.metadata before rename - Special case for case-only difference - Errors shown in renameInput.placeholder
This commit is contained in:
parent
c3a14411ab
commit
8f8f431d4d
|
|
@ -609,9 +609,24 @@
|
|||
cancelRename();
|
||||
return;
|
||||
}
|
||||
if (/[\\/:*?"<>|\x00-\x1f]/.test(newName)) {
|
||||
renameInput.placeholder = 'Invalid characters in name';
|
||||
return;
|
||||
}
|
||||
if (newName === '.' || newName === '..' || newName[0] === ' ' || newName[newName.length - 1] === ' ' || newName[newName.length - 1] === '.') {
|
||||
renameInput.placeholder = 'Invalid name';
|
||||
return;
|
||||
}
|
||||
var from = renameTarget.relativePath;
|
||||
var targetParent = parentPath(from);
|
||||
var to = targetParent ? targetParent + '/' + newName : newName;
|
||||
api.files.metadata(to).then(function () {
|
||||
if (to.toLowerCase() === from.toLowerCase() && to !== from) {
|
||||
renameInput.placeholder = 'Name differs only by case';
|
||||
return;
|
||||
}
|
||||
renameInput.placeholder = 'A file with that name already exists';
|
||||
}, function () {
|
||||
api.files.move(from, to, { overwrite: false }).then(function () {
|
||||
cancelRename();
|
||||
loadEntries();
|
||||
|
|
@ -619,6 +634,7 @@
|
|||
renameInput.value = renameTarget.name;
|
||||
renameInput.placeholder = 'Error: ' + ((err && err.message) ? err.message : String(err));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function trashEntry(entry) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue