edit bug fix
This commit is contained in:
parent
39b1724a66
commit
f00f78cdd0
@ -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;
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
|
@ -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>
|
||||
|
Loading…
x
Reference in New Issue
Block a user