edit bug fix
This commit is contained in:
		@@ -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;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
    },
 | 
			
		||||
 
 | 
			
		||||
@@ -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,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;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user