编辑器三件套(参考 xLog):CodeMirror 源码模式 + 外链图片一键转存 + 上传进度/前置校验
- md 页签从裸 textarea 升级 CodeMirror 6:markdown 语法高亮、行内历史,粘贴/拖图直传; markdown 仍是唯一真相源,转存/切换用 syncCM 全量灌回,工具栏选区辅助改为面向 CM - POST /api/admin/files/import:外链抓取复用 linkmeta SSRF 防护拨号与跳转限制, 二进制传输放宽 30s;类型按内容嗅探反查白名单,与手动上传共用去重/落盘(persistFile 抽取共享) - 上传走 XHR 进度回调 + 编辑器 toast 栈:类型/大小前置校验(与后端白名单一致)、逐文件进度 - persistFile 去重路径补 URL 解析——此前命中去重返回的行没有 URL,转存替换会把正文图链清空(已修复受损数据) - hub nil 安全(测试环境未装配时不 panic)
This commit is contained in:
+25
-5
@@ -835,17 +835,37 @@ html.topbar-hidden {--topbar-h: 0px;}
|
||||
0%, 100% {opacity: 1;}
|
||||
50% {opacity: 0.3;}
|
||||
}
|
||||
/* md 页签容器现在是 CodeMirror 挂载点(原为 textarea) */
|
||||
.md-pane {width: 100%;
|
||||
min-height: 460px;
|
||||
border: 1px solid var(--admin-line);
|
||||
border-radius: 3px;
|
||||
background: var(--admin-card);
|
||||
padding: 18px 22px;
|
||||
font-family: var(--mono);
|
||||
font-size: 14px;
|
||||
line-height: 1.7;
|
||||
padding: 6px 14px;
|
||||
color: var(--admin-ink);
|
||||
resize: vertical;
|
||||
overflow: hidden;}
|
||||
.md-pane:focus-within {border-color: var(--admin-accent);}
|
||||
/* 轻提示栈:上传进度 / 转存结果 / 校验失败 */
|
||||
.toast-stack {position: fixed;
|
||||
right: 18px;
|
||||
bottom: 18px;
|
||||
z-index: 90;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 8px;
|
||||
max-width: 360px;}
|
||||
.toast {padding: 9px 14px;
|
||||
border-radius: 6px;
|
||||
font-size: 13px;
|
||||
line-height: 1.6;
|
||||
color: var(--admin-ink);
|
||||
background: var(--admin-card);
|
||||
border: 1px solid var(--admin-line);
|
||||
box-shadow: 0 6px 24px rgba(0,0,0,.12);
|
||||
overflow-wrap: anywhere;}
|
||||
.toast.ok {border-color: color-mix(in srgb, var(--admin-accent) 55%, transparent);}
|
||||
.toast.err {border-color: #c26a55;
|
||||
color: #b4553f;
|
||||
outline: none;}
|
||||
.md-pane:focus {border-color: var(--admin-accent);}
|
||||
.toolbar {display: flex;
|
||||
|
||||
Reference in New Issue
Block a user