diff --git a/src/components/EditFileName.vue b/src/components/EditFileName.vue index 0a36cc9..44a3f84 100644 --- a/src/components/EditFileName.vue +++ b/src/components/EditFileName.vue @@ -23,17 +23,24 @@ export default { name: "FileNameEditor", props: { initialFileName: { - type: String, - required: true, + type: String, + required: true, }, + isDirectory:{ + type: Boolean, + required: true, + } }, data() { var newFileName = this.initialFileName; var extension = ''; - let nameSplit = newFileName.split('.'); - if (nameSplit.length > 1) { - extension = nameSplit.pop(); + 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,13 +67,16 @@ export default { this.$emit("close"); }, onInputChange() { - // Vous pouvez ici vérifier si l'extension a été modifiée et la rétablir - const fileNameWithoutExtension = this.newFileName.slice(0, this.newFileName.lastIndexOf('.')); - const newFileNameWithOriginalExtension = fileNameWithoutExtension + '.' + this.extension; + 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) { - this.newFileName = newFileNameWithOriginalExtension; + // 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; + } } }, }, diff --git a/src/components/FileTable.vue b/src/components/FileTable.vue index b075852..4f8addb 100644 --- a/src/components/FileTable.vue +++ b/src/components/FileTable.vue @@ -115,7 +115,7 @@ - + @@ -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,20 +336,43 @@ 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; - 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){ 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; + } } };