Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/assets/vue/views/documents/Upload.vue

126 lines
3.0 KiB

<template>
<div>
<DocumentsForm
ref="createForm"
:values="files"
:parentResourceNodeId="parentResourceNodeId"
:resourceLinkList="resourceLinkList"
:errors="violations"
:process-files="processFiles"
/>
<Toolbar
:handle-submit="onUploadForm"
/>
<Loading :visible="isLoading" />
</div>
</template>
<script>
import { mapActions } from 'vuex';
import { createHelpers } from 'vuex-map-fields';
import DocumentsForm from '../../components/documents/FormUpload.vue';
import Loading from '../../components/Loading.vue';
import Toolbar from '../../components/Toolbar.vue';
import UploadMixin from '../../mixins/UploadMixin';
import { ref, onMounted } from 'vue'
const servicePrefix = 'Documents';
const { mapFields } = createHelpers({
getterType: 'documents/getField',
mutationType: 'documents/updateField'
});
export default {
name: 'DocumentsCreate',
servicePrefix,
components: {
Loading,
Toolbar,
DocumentsForm
},
setup() {
const createForm = ref(null);
return {
createForm
}
},
mixins: [UploadMixin],
data() {
return {
files : [],
parentResourceNodeId: 0,
resourceLinkList: '',
};
},
computed: {
...mapFields(['error', 'isLoading', 'created', 'violations'])
},
created() {
console.log('created');
this.parentResourceNodeId = Number(this.$route.params.node);
this.resourceLinkList = JSON.stringify([{
gid: this.$route.query.gid,
sid: this.$route.query.sid,
c_id: this.$route.query.cid,
visibility: 2,
}]);
this.files = [];
},
methods: {
async processFiles(files) {
/*this.files = [
...this.files,
...map(files, file => ({
title: file.name,
name: file.name,
size: file.size,
type: file.type,
filetype: 'file',
parentResourceNodeId: this.parentResourceNodeId,
resourceLinkList: this.resourceLinkList,
uploadFile: file,
invalidMessage: this.validate(file),
}))
];*/
return new Promise((resolve) => {
for (let i = 0; i < files.length; i++) {
files[i].title = files[i].name;
files[i].parentResourceNodeId = this.parentResourceNodeId;
files[i].resourceLinkList = this.resourceLinkList;
files[i].uploadFile = files[i];
this.createFile(files[i]);
}
resolve(files);
/*console.log(file);
file.title = file.name;
file.parentResourceNodeId = this.parentResourceNodeId;
file.resourceLinkList = this.resourceLinkList;
file.uploadFile = file;
this.create(file);
resolve(file);*/
/*for (let i = 0; i < this.files.length; i++) {
this.create(this.files[i]);
}
resolve(true);*/
}).then(() => {
this.files = [];
});
},
validate(file) {
if (file) {
return '';
}
return 'error';
},
...mapActions('documents', ['uploadMany', 'create', 'createFile'])
}
};
</script>