e3230f8f21
Fixed broken build system in broken webpack version. Also updates module system to standardise on ES6 import/exports, Especially since babel has changed it's 'default' logic for the old module system.
142 lines
No EOL
4.1 KiB
JavaScript
142 lines
No EOL
4.1 KiB
JavaScript
import draggable from "vuedraggable";
|
|
import dropzone from "./components/dropzone";
|
|
|
|
function mounted() {
|
|
this.pageId = this.$el.getAttribute('page-id');
|
|
this.file = this.newFile();
|
|
|
|
this.$http.get(window.baseUrl(`/attachments/get/page/${this.pageId}`)).then(resp => {
|
|
this.files = resp.data;
|
|
}).catch(err => {
|
|
this.checkValidationErrors('get', err);
|
|
});
|
|
}
|
|
|
|
let data = {
|
|
pageId: null,
|
|
files: [],
|
|
fileToEdit: null,
|
|
file: {},
|
|
tab: 'list',
|
|
editTab: 'file',
|
|
errors: {link: {}, edit: {}, delete: {}}
|
|
};
|
|
|
|
const components = {dropzone, draggable};
|
|
|
|
let methods = {
|
|
|
|
newFile() {
|
|
return {page_id: this.pageId};
|
|
},
|
|
|
|
getFileUrl(file) {
|
|
if (file.external && file.path.indexOf('http') !== 0) {
|
|
return file.path;
|
|
}
|
|
return window.baseUrl(`/attachments/${file.id}`);
|
|
},
|
|
|
|
fileSortUpdate() {
|
|
this.$http.put(window.baseUrl(`/attachments/sort/page/${this.pageId}`), {files: this.files}).then(resp => {
|
|
this.$events.emit('success', resp.data.message);
|
|
}).catch(err => {
|
|
this.checkValidationErrors('sort', err);
|
|
});
|
|
},
|
|
|
|
startEdit(file) {
|
|
this.fileToEdit = Object.assign({}, file);
|
|
this.fileToEdit.link = file.external ? file.path : '';
|
|
this.editTab = file.external ? 'link' : 'file';
|
|
},
|
|
|
|
deleteFile(file) {
|
|
if (!file.deleting) {
|
|
return this.$set(file, 'deleting', true);
|
|
}
|
|
|
|
this.$http.delete(window.baseUrl(`/attachments/${file.id}`)).then(resp => {
|
|
this.$events.emit('success', resp.data.message);
|
|
this.files.splice(this.files.indexOf(file), 1);
|
|
}).catch(err => {
|
|
this.checkValidationErrors('delete', err)
|
|
});
|
|
},
|
|
|
|
uploadSuccess(upload) {
|
|
this.files.push(upload.data);
|
|
this.$events.emit('success', trans('entities.attachments_file_uploaded'));
|
|
},
|
|
|
|
uploadSuccessUpdate(upload) {
|
|
let fileIndex = this.filesIndex(upload.data);
|
|
if (fileIndex === -1) {
|
|
this.files.push(upload.data)
|
|
} else {
|
|
this.files.splice(fileIndex, 1, upload.data);
|
|
}
|
|
|
|
if (this.fileToEdit && this.fileToEdit.id === upload.data.id) {
|
|
this.fileToEdit = Object.assign({}, upload.data);
|
|
}
|
|
this.$events.emit('success', trans('entities.attachments_file_updated'));
|
|
},
|
|
|
|
checkValidationErrors(groupName, err) {
|
|
if (typeof err.response.data === "undefined" && typeof err.response.data === "undefined") return;
|
|
this.errors[groupName] = err.response.data;
|
|
},
|
|
|
|
getUploadUrl(file) {
|
|
let url = window.baseUrl(`/attachments/upload`);
|
|
if (typeof file !== 'undefined') url += `/${file.id}`;
|
|
return url;
|
|
},
|
|
|
|
cancelEdit() {
|
|
this.fileToEdit = null;
|
|
},
|
|
|
|
attachNewLink(file) {
|
|
file.uploaded_to = this.pageId;
|
|
this.errors.link = {};
|
|
this.$http.post(window.baseUrl('/attachments/link'), file).then(resp => {
|
|
this.files.push(resp.data);
|
|
this.file = this.newFile();
|
|
this.$events.emit('success', trans('entities.attachments_link_attached'));
|
|
}).catch(err => {
|
|
this.checkValidationErrors('link', err);
|
|
});
|
|
},
|
|
|
|
updateFile(file) {
|
|
$http.put(window.baseUrl(`/attachments/${file.id}`), file).then(resp => {
|
|
let search = this.filesIndex(resp.data);
|
|
if (search === -1) {
|
|
this.files.push(resp.data);
|
|
} else {
|
|
this.files.splice(search, 1, resp.data);
|
|
}
|
|
|
|
if (this.fileToEdit && !file.external) this.fileToEdit.link = '';
|
|
this.fileToEdit = false;
|
|
|
|
this.$events.emit('success', trans('entities.attachments_updated_success'));
|
|
}).catch(err => {
|
|
this.checkValidationErrors('edit', err);
|
|
});
|
|
},
|
|
|
|
filesIndex(file) {
|
|
for (let i = 0, len = this.files.length; i < len; i++) {
|
|
if (this.files[i].id === file.id) return i;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
};
|
|
|
|
export default {
|
|
data, methods, mounted, components,
|
|
}; |