feat: 完成批量发布系统和详细文档
- 实现批量发布模态框,支持数据库式文章筛选 - 添加鼠标拖拽多选功能,支持Ctrl键修饰符 - 增加文章过滤器,支持标签、文件名、文件夹筛选 - 完善图库短码mppickall参数支持 - 优化EXIF图片方向处理 - 添加全面的中文代码注释 - 更新详细设计文档和架构图表 - 完善变更日志和README文档 版本: v1.3.0 (里程碑版本)
This commit is contained in:
@@ -24,6 +24,26 @@ import { App, Modal, Setting, TFile, Notice, ButtonComponent } from 'obsidian';
|
||||
import { BatchArticleFilter, BatchFilterConfig } from './batch-filter';
|
||||
import NoteToMpPlugin from './main';
|
||||
|
||||
/**
|
||||
* BatchPublishModal
|
||||
*
|
||||
* 说明(中文注释):
|
||||
* 该模块负责提供一个在 Obsidian 中的模态窗口,用于:
|
||||
* - 根据多个条件筛选笔记(标签、文件名、文件夹、frontmatter 等)
|
||||
* - 在筛选结果中支持单选/多选/框选(鼠标拖拽)操作
|
||||
* - 将选中的文章逐条发送到公众号(通过 NotePreview 的 renderMarkdown/postArticle 流程)
|
||||
*
|
||||
* 设计要点:
|
||||
* - 使用 `BatchArticleFilter` 复用筛选逻辑,返回已排序的 `TFile[]` 列表
|
||||
* - 用 `Set<TFile>` 保存选中状态,避免重复项并方便计数
|
||||
* - 鼠标拖拽选择支持两种模式:常规拖拽为“添加选择”,按 Ctrl/Cmd 拖拽为“取消选择”
|
||||
* - 发布流程为顺序异步执行,发送间隔有短延迟以降低请求频率
|
||||
*
|
||||
* 注意事项:
|
||||
* - 该文件以用户交互为主,敏感的网络/身份验证交互在 `note-preview` 模块内处理
|
||||
* - 对 DOM 的位置计算要考虑容器滚动偏移(scrollLeft/scrollTop),已在代码中处理
|
||||
*/
|
||||
|
||||
export class BatchPublishModal extends Modal {
|
||||
plugin: NoteToMpPlugin;
|
||||
filter: BatchArticleFilter;
|
||||
|
||||
15
src/main.ts
15
src/main.ts
@@ -29,6 +29,21 @@ import { setVersion, uevent } from './utils';
|
||||
import { WidgetsModal } from './widgets-modal';
|
||||
import { BatchPublishModal } from './batch-publish-modal';
|
||||
|
||||
/**
|
||||
* NoteToMpPlugin
|
||||
*
|
||||
* 中文说明:
|
||||
* 这是插件的入口类,负责:
|
||||
* - 插件生命周期管理(onload/onunload)
|
||||
* - 注册自定义视图 NotePreview 用于渲染与发布文章
|
||||
* - 提供多种命令:单篇发布、批量发布、插入样式组件等
|
||||
* - 提供文件右键菜单扩展,支持对单文件或文件夹进行发布操作
|
||||
*
|
||||
* 设计决策(简要):
|
||||
* - 将批量发布的 UI 放在 `BatchPublishModal` 中,命令 `note-to-mp-batch-publish` 会打开该模态框
|
||||
* - 单篇发布/文件夹批量发布仍复用 `NotePreview` 的发布逻辑,避免重复实现上传流程
|
||||
*/
|
||||
|
||||
|
||||
export default class NoteToMpPlugin extends Plugin {
|
||||
settings: NMPSettings;
|
||||
|
||||
Reference in New Issue
Block a user