1
0
mirror of https://github.com/misterunknown/ifm.git synced 2025-08-11 10:34:00 +02:00

Add hint before overwrite files

Signed-off-by: Marco Dickert <marco@misterunknown.de>
This commit is contained in:
Marco Dickert
2020-08-04 21:13:57 +02:00
parent e014781af4
commit f0b647c2b9
5 changed files with 57 additions and 5 deletions

View File

@@ -102,6 +102,8 @@
"upload": "Hochladen", "upload": "Hochladen",
"upload_drop": "Dateien zum hochladen hier ablegen", "upload_drop": "Dateien zum hochladen hier ablegen",
"upload_file": "Datei hochladen", "upload_file": "Datei hochladen",
"upload_overwrite_hint": "Die folgenden Dateien würden überschrieben:",
"upload_overwrite_confirm": "Sollen die Dateien dennoch hochgeladen werden?",
"upload_remote": "Hochladen von ausserhalb", "upload_remote": "Hochladen von ausserhalb",
"upload_remote_url": "Entfernte URL zum hochladen", "upload_remote_url": "Entfernte URL zum hochladen",
"username": "Benutzername", "username": "Benutzername",

View File

@@ -103,6 +103,8 @@
"upload": "Upload", "upload": "Upload",
"upload_drop": "Drop files to upload", "upload_drop": "Drop files to upload",
"upload_file": "Upload File", "upload_file": "Upload File",
"upload_overwrite_hint": "The following files would be overwritten:",
"upload_overwrite_confirm": "Upload anyway?",
"upload_remote": "Remote Upload", "upload_remote": "Remote Upload",
"upload_remote_url": "Remote Upload URL", "upload_remote_url": "Remote Upload URL",
"username": "Username", "username": "Username",

View File

@@ -951,13 +951,43 @@ function IFM(params) {
form.addEventListener( 'click', function( e ) { form.addEventListener( 'click', function( e ) {
if( e.target.id == 'buttonUpload' ) { if( e.target.id == 'buttonUpload' ) {
e.preventDefault(); e.preventDefault();
var newfilename = form.elements.newfilename.value;
var files = Array.prototype.slice.call( form.elements.files.files ); var files = Array.prototype.slice.call( form.elements.files.files );
var existing_files = [];
if (files.length > 1) if (files.length > 1)
existing_files = files.map(x => x.name).filter(item => self.fileCache.map(x => x.name).includes(item));
else
existing_files = self.fileCache.map(x => x.name).includes(newfilename);
if (existing_files.length > 0)
self.showUploadConfirmOverwrite(files, existing_files, newfilename);
else {
if (files.length == 1)
self.uploadFile(files[0], newfilename);
else
files.forEach( function( file ) { files.forEach( function( file ) {
self.uploadFile( file ); self.uploadFile( file );
}); });
}
self.hideModal();
} else if( e.target.id == 'buttonCancel' ) {
e.preventDefault();
self.hideModal();
}
});
};
this.showUploadConfirmOverwrite = function(files, existing_files, newfilename="") {
self.showModal(Mustache.render(self.templates.uploadconfirmoverwrite, {files: existing_files, i18n: self.i18n}));
var form = document.forms.formUploadConfirmOverwrite;
form.addEventListener('click', function(e) {
if (e.target.id == "buttonConfirm") {
e.preventDefault();
if (files.length == 1)
self.uploadFile(files[0], newfilename);
else else
self.uploadFile( files[0], form.elements.newfilename.value ); files.forEach(function(file) {
self.uploadFile(file);
});
self.hideModal(); self.hideModal();
} else if (e.target.id == 'buttonCancel') { } else if (e.target.id == 'buttonCancel') {
e.preventDefault(); e.preventDefault();

View File

@@ -176,6 +176,9 @@ f00bar;
f00bar; f00bar;
$templates['uploadfile'] = <<<'f00bar' $templates['uploadfile'] = <<<'f00bar'
@@@file:src/templates/modal.uploadfile.html@@@ @@@file:src/templates/modal.uploadfile.html@@@
f00bar;
$templates['uploadconfirmoverwrite'] = <<<'f00bar'
@@@file:src/templates/modal.uploadconfirmoverwrite.html@@@
f00bar; f00bar;
$this->templates = $templates; $this->templates = $templates;

View File

@@ -0,0 +1,15 @@
<form id="formUploadConfirmOverwrite">
<div class="modal-body">
{{i18n.upload_overwrite_hint}}
<ul>
{{#files}}
<li>{{.}}</li>
{{/files}}
</ul>
{{i18n.upload_overwrite_confirm}}
</div>
<div class="modal-footer">
<button class="btn btn-primary" id="buttonConfirm">{{i18n.upload}}</button>
<button class="btn btn-danger" id="buttonCancel">{{i18n.cancel}}</button>
</div>
</form>