ui: file upload support

This commit is contained in:
undefined committed 2021-04-18 00:41:16 +08:00
1 parent 2539dfa412
commit 595f28b1df
5 files changed
+64 -22

No files matched your search

+55 -1
View File
@@ -5,6 +5,7 @@ import tpl from 'vj/utils/tpl';
import i18n from 'vj/utils/i18n';
import { ConfirmDialog } from 'vj/components/dialog';
import Dropdown from 'vj/components/dropdown/Dropdown';
import CmEditor from 'vj/components/cmeditor/index';
const categories = {};
const dirtyCategories = [];
@@ -141,7 +142,7 @@ function buildCategoryFilter() {
});
}
export default new NamedPage(['problem_create', 'problem_edit'], () => {
export default new NamedPage(['problem_create', 'problem_edit'], (pagename) => {
$(document).on('click', '[name="problem-sidebar__show-category"]', (ev) => {
$(ev.currentTarget).hide();
$('[name="problem-sidebar__categories"]').show();
@@ -169,4 +170,57 @@ export default new NamedPage(['problem_create', 'problem_edit'], () => {
$(document).on('change', '[name="tag"]', parseCategorySelection);
buildCategoryFilter();
parseCategorySelection();
setInterval(() => {
$('img').each(function () {
if (this.src.startsWith('file://')) this.setAttribute('src', this.src.replace('file://', './file/'));
});
}, 50);
CmEditor.getOrConstruct($('textarea[data-markdown-upload]'), {
upload: {
accept: 'image/*,.mp3, .wav, .zip',
url: './files',
extraData: {
type: 'additional_file',
operation: 'upload_file',
},
multiple: false,
fieldName: 'file',
setHeaders() {
return { accept: 'application/json' };
},
format(files, resp) {
const res = JSON.parse(resp);
if (res.error) {
return JSON.stringify({
msg: res.error.message,
code: -1,
data: {
errFiles: [files[0].name],
succMap: {},
},
});
}
return JSON.stringify({
msg: '',
code: 0,
data: {
errFiles: [],
succMap: {
[files[0].name]: `file://${files[0].name.replace(/[^(a-zA-Z0-9\u4e00-\u9fa5.)]/g, '')
.replace(/[?\\/:|<>*[\]()$%{}@~]/g, '')
.replace('/\\s/g', '')}`,
},
},
});
},
filename(name) {
return name.replace(/[^(a-zA-Z0-9\u4e00-\u9fa5.)]/g, '')
.replace(/[?\\/:|<>*[\]()$%{}@~]/g, '')
.replace('/\\s/g', '');
},
validate: () => (pagename === 'problem_create' ? i18n('Cannot upload file before problem is created.') : true),
},
});
});