edit bug fix

This commit is contained in:
Alexandre_BRAVO 2024-11-22 14:42:45 +01:00
parent 39b1724a66
commit f00f78cdd0
2 changed files with 55 additions and 16 deletions

View File

@ -23,17 +23,24 @@ export default {
name: "FileNameEditor", name: "FileNameEditor",
props: { props: {
initialFileName: { initialFileName: {
type: String, type: String,
required: true, required: true,
}, },
isDirectory:{
type: Boolean,
required: true,
}
}, },
data() { data() {
var newFileName = this.initialFileName; var newFileName = this.initialFileName;
var extension = ''; var extension = '';
let nameSplit = newFileName.split('.'); if(!this.isDirectory) {
if (nameSplit.length > 1) { let nameSplit = newFileName.split('.');
extension = nameSplit.pop(); if (nameSplit.length > 1) {
extension = nameSplit.pop();
}
} }
return { return {
newFileName, newFileName,
extension, extension,
@ -44,11 +51,10 @@ export default {
if(this.newFileName !== ''){ if(this.newFileName !== ''){
// Séparer le nom de fichier sans l'extension // Séparer le nom de fichier sans l'extension
const fileNameWithoutExtension = this.newFileName.slice(0, this.newFileName.lastIndexOf('.')); const fileNameWithoutExtension = this.newFileName.slice(0, this.newFileName.lastIndexOf('.'));
// Re-construire le nom du fichier avec l'extension d'origine // Re-construire le nom du fichier avec l'extension d'origine
const newFileNameWithOriginalExtension = fileNameWithoutExtension + '.' + this.extension; const newFileNameWithOriginalExtension = fileNameWithoutExtension + '.' + this.extension;
if (this.extension !== '' && this.newFileName !== newFileNameWithOriginalExtension) { if (!this.isDirectory && this.newFileName !== newFileNameWithOriginalExtension) {
// L'extension a été modifiée, on rétablit l'extension correcte // L'extension a été modifiée, on rétablit l'extension correcte
this.newFileName = newFileNameWithOriginalExtension; this.newFileName = newFileNameWithOriginalExtension;
} }
@ -61,13 +67,16 @@ export default {
this.$emit("close"); this.$emit("close");
}, },
onInputChange() { onInputChange() {
// Vous pouvez ici vérifier si l'extension a été modifiée et la rétablir if (!this.isDirectory) {
const fileNameWithoutExtension = this.newFileName.slice(0, this.newFileName.lastIndexOf('.')); const fileNameWithoutExtension = this.newFileName.slice(0, this.newFileName.lastIndexOf('.'));
const newFileNameWithOriginalExtension = fileNameWithoutExtension + '.' + this.extension; const newFileNameWithOriginalExtension = fileNameWithoutExtension + '.' + this.extension;
// Si l'extension est différente de celle d'origine, on la rétablit // Si l'extension est différente de celle d'origine, on la rétablit
if (this.extension !== '' && this.newFileName !== newFileNameWithOriginalExtension) { if (this.extension !== '' && this.newFileName !== newFileNameWithOriginalExtension) {
this.newFileName = newFileNameWithOriginalExtension; // Vous pouvez ici vérifier si l'extension a été modifiée et la rétablir
this.newFileName = newFileNameWithOriginalExtension;
}
} }
}, },
}, },

View File

@ -115,7 +115,7 @@
</div> </div>
</div> </div>
</div> </div>
<EditFileName v-if="!editDialogDisabled" :initialFileName="initialFileName" @update="updateFileName" @close="closeEditDialog"> <EditFileName v-if="!editDialogDisabled" :initialFileName="initialFileName" :isDirectory="isDirectory" @update="updateFileName" @close="closeEditDialog">
</EditFileName> </EditFileName>
</div> </div>
</template> </template>
@ -163,7 +163,8 @@ export default {
isTransfering: false, isTransfering: false,
isDragging: false, isDragging: false,
editDialogDisabled: true, editDialogDisabled: true,
initialFileName: '', initialFileName: '', // Nom originel du fichier/dossier edite
isDirectory: false, // Si l'element edite est un dossier ou non
}; };
}, },
async mounted() { async mounted() {
@ -335,20 +336,43 @@ export default {
await this.fetchFiles(); await this.fetchFiles();
}, },
/**
* Change les props pour le composant EditFileName
* @param file le ficher/dossier dont on veut editer le nom
*/
async editElem(file) { async editElem(file) {
if(file.type === 'file'){
this.isDirectory = false;
}
else{
this.isDirectory = true;
}
this.initialFileName = file.basename; this.initialFileName = file.basename;
this.editDialogDisabled = false; this.editDialogDisabled = false;
}, },
/**
* Ferme la fenetre d'edition du nom du fichier/dossier
*/
closeEditDialog() { closeEditDialog() {
this.editDialogDisabled = true; this.editDialogDisabled = true;
}, },
/**
* Change le nom du fichier sur le serveur Cloud via un client WebDAV
* @param names Contient un initialFileName et un newFileName
*/
async updateFileName(names){ async updateFileName(names){
if(names.initialFileName !== names.newFileName){ if(names.initialFileName !== names.newFileName){
const client = getClient() const client = getClient()
try{ try{
const oldName = this.root_path + this.current_dir + names.initialFileName; const oldName = this.root_path + this.current_dir + names.initialFileName;
const newName = this.root_path + this.current_dir + names.newFileName; const newName = this.root_path + this.current_dir + names.newFileName;
await client.moveFile(oldName,newName); let alreadyExists = await this.elemtAlreadyExists(newName);
if(!alreadyExists) {
await client.moveFile(oldName,newName);
}
else{
alert(`Vous ne pouvez pas renommez le fichier/dossier : ${names.newFileName} car un autre fichier/dossier porte deja le meme nom.`);
}
} }
catch(error){ catch(error){
console.error('Erreur lors du renommage d\'un element : ', error); console.error('Erreur lors du renommage d\'un element : ', error);
@ -357,6 +381,12 @@ export default {
await this.fetchFiles(); await this.fetchFiles();
} }
}, },
async elemtAlreadyExists(name){
const client = getClient();
let exists = await client.exists(name);
return exists;
}
} }
}; };
</script> </script>