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

@ -26,14 +26,21 @@ export default {
type: String,
required: true,
},
isDirectory:{
type: Boolean,
required: true,
}
},
data() {
var newFileName = this.initialFileName;
var extension = '';
if(!this.isDirectory) {
let nameSplit = newFileName.split('.');
if (nameSplit.length > 1) {
extension = nameSplit.pop();
}
}
return {
newFileName,
extension,
@ -44,11 +51,10 @@ export default {
if(this.newFileName !== ''){
// Séparer le nom de fichier sans l'extension
const fileNameWithoutExtension = this.newFileName.slice(0, this.newFileName.lastIndexOf('.'));
// Re-construire le nom du fichier avec l'extension d'origine
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
this.newFileName = newFileNameWithOriginalExtension;
}
@ -61,14 +67,17 @@ export default {
this.$emit("close");
},
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 newFileNameWithOriginalExtension = fileNameWithoutExtension + '.' + this.extension;
// Si l'extension est différente de celle d'origine, on la rétablit
if (this.extension !== '' && 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>
<EditFileName v-if="!editDialogDisabled" :initialFileName="initialFileName" @update="updateFileName" @close="closeEditDialog">
<EditFileName v-if="!editDialogDisabled" :initialFileName="initialFileName" :isDirectory="isDirectory" @update="updateFileName" @close="closeEditDialog">
</EditFileName>
</div>
</template>
@ -163,7 +163,8 @@ export default {
isTransfering: false,
isDragging: false,
editDialogDisabled: true,
initialFileName: '',
initialFileName: '', // Nom originel du fichier/dossier edite
isDirectory: false, // Si l'element edite est un dossier ou non
};
},
async mounted() {
@ -335,21 +336,44 @@ export default {
await this.fetchFiles();
},
/**
* Change les props pour le composant EditFileName
* @param file le ficher/dossier dont on veut editer le nom
*/
async editElem(file) {
if(file.type === 'file'){
this.isDirectory = false;
}
else{
this.isDirectory = true;
}
this.initialFileName = file.basename;
this.editDialogDisabled = false;
},
/**
* Ferme la fenetre d'edition du nom du fichier/dossier
*/
closeEditDialog() {
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){
if(names.initialFileName !== names.newFileName){
const client = getClient()
try{
const oldName = this.root_path + this.current_dir + names.initialFileName;
const newName = this.root_path + this.current_dir + names.newFileName;
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){
console.error('Erreur lors du renommage d\'un element : ', error);
}
@ -357,6 +381,12 @@ export default {
await this.fetchFiles();
}
},
async elemtAlreadyExists(name){
const client = getClient();
let exists = await client.exists(name);
return exists;
}
}
};
</script>