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