feat(attachment): 按参考主题重构后台上传配置套件
- 新增 AKSRT\Attachment\UploadLimits:按用户类型解析图片/视频/文件 上传上限(取最大值+默认兜底,钳制到 PHP 上限)、允许/禁止格式过滤、 上传自动重命名、非管理员附件页 404;不含论坛角色 - 后台「附件配置」重做:大小限制/格式限制/上传行为三组配置, PHP Schema 与 SPA Schema 逐字段镜像(v1.2.0) - 定制页 AttachmentPermissions.vue 改为标准 schemaPage,清理失效的 API 包装、组件加载器与旧配置键(submit_image_max_size 等) - 投稿/评论上传、批量上传数量全部切换到新链路;AksField 数字组件 支持单位展示 - 更新 captcha harness 与 front-submit 契约测试;421 项测试通过
This commit is contained in:
@@ -144,6 +144,18 @@
|
||||
});
|
||||
}
|
||||
|
||||
function imageBatchLimit() {
|
||||
// 0 = 不限制(沿用默认 100 的选取上限),1 = 不允许批量上传。
|
||||
var configured = Number(cfg.imageUploadMultiple);
|
||||
if (!isFinite(configured) || configured <= 0) {
|
||||
return { multiple: true, maxItems: 100 };
|
||||
}
|
||||
if (configured === 1) {
|
||||
return { multiple: false, maxItems: 1 };
|
||||
}
|
||||
return { multiple: true, maxItems: Math.min(configured, 100) };
|
||||
}
|
||||
|
||||
function mediaDefinition(type) {
|
||||
if (type === 'video') return {
|
||||
title: i18n.insertVideo || '插入视频', mineTab: i18n.mineVideo || '我的视频', uploadTab: i18n.uploadVideo || '上传视频',
|
||||
@@ -156,9 +168,10 @@
|
||||
accept: '*/*', multiple: false, maxItems: 1, canUpload: !!editorCfg.canUploadFile && !!((cfg.uploads || {}).resource), canEmbed: false,
|
||||
select: i18n.selectFile || '选择或拖入附件', hint: i18n.fileUploadHint || '上传完成后自动插入正文', externalHint: i18n.externalFileHint || '请填写附件地址:',
|
||||
};
|
||||
var batch = imageBatchLimit();
|
||||
return {
|
||||
title: i18n.insertImage || '插入图片', mineTab: i18n.mineImage || '我的图片', uploadTab: i18n.uploadImage || '上传图片', externalTab: i18n.externalImage || '外链图片',
|
||||
accept: 'image/gif,image/jpeg,image/png,image/webp', multiple: true, maxItems: 100, canUpload: !!editorCfg.canUploadImage && !!((cfg.uploads || {}).image), canEmbed: false,
|
||||
accept: 'image/gif,image/jpeg,image/png,image/webp', multiple: batch.multiple, maxItems: batch.maxItems, canUpload: !!editorCfg.canUploadImage && !!((cfg.uploads || {}).image), canEmbed: false,
|
||||
select: i18n.selectImages || '选择或拖入图片', hint: i18n.imageUploadHint || '可批量选择,上传完成后自动插入正文', externalHint: i18n.externalImageHint || '每行填写一个图片地址:',
|
||||
};
|
||||
}
|
||||
@@ -575,13 +588,14 @@
|
||||
bindCharacterCount(editor);
|
||||
|
||||
if (editorCfg.canUploadImage) {
|
||||
var imageBatch = imageBatchLimit();
|
||||
editor.addButton('aksrt_image', {
|
||||
text: '',
|
||||
icon: 'image',
|
||||
tooltip: i18n.insertImage || '插入图片',
|
||||
onclick: function () {
|
||||
window.AksrtSubmitMedia.open({
|
||||
type: 'image', multiple: true, maxItems: 100,
|
||||
type: 'image', multiple: imageBatch.multiple, maxItems: imageBatch.maxItems,
|
||||
onSelect: function (items) {
|
||||
editor.insertContent(items.map(function (item) { return mediaMarkup('image', item); }).join('') + '<p></p>');
|
||||
editor.nodeChanged();
|
||||
|
||||
Reference in New Issue
Block a user