diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8d6f95f..86e4ffe 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,9 +1,11 @@
# 更新记录
-### TODO v1.6.0
+### v1.6.1
-- [ ] 更换vditor版本为官方版本 (pending vditor 3.9.9)
-- [ ] 修复所见即所得模式下使用工具栏修改属性不生效的问题 (pending vditor 3.9.9)
+- 🐛 修复单页文章加载Vditor资源时 version 未成功替换问题 `#27`
+- 🐛 添加遗漏的 plantuml 渲染器 `#28`
+- 🐛 修复多媒体链接无法渲染的问题
+- 🐛 修复多媒体渲染的大小问题
### v1.6.0
diff --git a/doc/test/halo-render.md b/doc/test/halo-render.md
new file mode 100644
index 0000000..6bdf1e4
--- /dev/null
+++ b/doc/test/halo-render.md
@@ -0,0 +1,47 @@
+```halo
+tips:info
+test1
+```
+
+```halo**
+tips:warn
+22222
+```
+
+```halo
+tips:default
+DEFAULT TIPS
+```
+
+```halo
+tips:success
+SUCCESS TIPS
+```
+
+```halo
+tips:danger
+DANGER TIPS
+```
+
+```halo
+git:[@github/justice2001/halo-plugin-vditor]
+```
+
+```halo
+gallery:grid[Grid]
+![/截屏2024-01-17%2015.53.25](/upload/截屏2024-01-17%2015.53.25.png)
+![123](/upload/截屏2024-01-17%2014.11.28.png)
+```
+
+```halo
+gallery:linear
+![/截屏2024-01-17%2015.53.25](/upload/截屏2024-01-17%2015.53.25.png)
+![123](/upload/截屏2024-01-17%2014.11.28.png)
+```
+
+
+![截屏2024-01-17 15.53.25.png](/upload/截屏2024-01-17%2015.53.25.png)
+
+![截屏2024-01-17 15.53.25.png](/upload/截屏2024-01-17%2015.53.25.png)
+
+![截屏2024-01-17 14.11.28.png](/upload/截屏2024-01-17%2014.11.28.png)
diff --git a/doc/test/render.md b/doc/test/render.md
new file mode 100644
index 0000000..0e3d959
--- /dev/null
+++ b/doc/test/render.md
@@ -0,0 +1 @@
+[WIP]
\ No newline at end of file
diff --git a/doc/test/test_case.md b/doc/test/test_case.md
new file mode 100644
index 0000000..f90d364
--- /dev/null
+++ b/doc/test/test_case.md
@@ -0,0 +1,51 @@
+# 测试文档[WIP]
+
+为了保证插件更新过程的正常运行,需要进行下面的测试用例,测试包含下面几个大类:
+
+1. 基础功能,包含插件的基础设置功能,运行状态
+2. 插件配置,包含所有插件的配置功能
+3. 拓展功能,包含插件的拓展项测试
+4. 文档测试,检查插件在前台、编辑器中的显示状态
+
+## 基础功能
+
+- 编辑器是否正常加载
+- 编辑器能否正常使用
+- 前台是否能够正常渲染
+
+## 插件配置
+
+- 编辑器配置
+ - 默认渲染模式是否正常工作
+ - 打字机模式是否正常开启
+ - 编辑器代码块渲染是否能够正常关闭
+ - 启用快速插入功能是否正常启用(使用见下方用例)
+ - 是否能够禁用代码块隐藏
+- 文件格式
+ - 能否正常限制上传的格式
+- 渲染
+ - `内置渲染器` 能否正常禁用渲染器
+ - `暗色模式` 切换主题,检查能否正常适配主题暗色模式
+ - `渲染媒体标签` 检查渲染媒体标签是否正常运作
+ - `仅在Markdown模式下渲染` 是否能够禁用在其他编辑器下渲染
+- 开发者配置
+ - `启用Debugger` Debugger能否正常工作
+
+## 拓展功能
+
+WIP
+
+## 文档测试
+
+借助文档测试,可以判断编辑器及渲染器能否正常渲染文章,这包含下列几种情况
+
+- 编辑器能否正常工作
+- 能否在文章页面进行渲染
+- 能否在单页进行渲染
+- 能否兼容PJAX
+
+文章列表如下
+
+- [Vditor 官方用例](vditor.md)
+- [渲染器用例](render.md)
+- [Halo Render测试](halo-render.md)
\ No newline at end of file
diff --git a/doc/test/vditor.md b/doc/test/vditor.md
new file mode 100644
index 0000000..728de2f
--- /dev/null
+++ b/doc/test/vditor.md
@@ -0,0 +1,396 @@
+Vditor 是一款**所见即所得**编辑器,支持 *Markdown*。
+
+* 不熟悉 Markdown 可使用工具栏或快捷键进行排版
+* 熟悉 Markdown 可直接排版,也可切换为分屏预览
+
+更多细节和用法请参考 [Vditor - 浏览器端的 Markdown 编辑器](https://ld246.com/article/1549638745630),同时也欢迎向我们提出建议或报告问题,谢谢 ❤️
+
+## 教程
+
+这是一篇讲解如何正确使用 **Markdown** 的排版示例,学会这个很有必要,能让你的文章有更佳清晰的排版。
+
+> 引用文本:Markdown is a text formatting syntax inspired
+
+## 语法指导
+
+### 普通内容
+
+这段内容展示了在内容里面一些排版格式,比如:
+
+- **加粗** - `**加粗**`
+- *倾斜* - `*倾斜*`
+- ~~删除线~~ - `~~删除线~~`
+- `Code 标记` - `` `Code 标记` ``
+- [超级链接](https://ld246.com) - `[超级链接](https://ld246.com)`
+- [username@gmail.com](mailto:username@gmail.com) - `[username@gmail.com](mailto:username@gmail.com)`
+
+### 提及用户
+
+@Vanessa 通过 `@User` 可以在内容中提及用户,被提及的用户将会收到系统通知。
+
+> NOTE:
+>
+> 1. @用户名之后需要有一个空格
+> 2. 新手没有艾特的功能权限
+
+### 表情符号 Emoji
+
+支持大部分标准的表情符号,可使用输入法直接输入,也可手动输入字符格式。通过输入 `:` 触发自动完成,可在个人设置中[设置常用表情](https://ld246.com/settings/function)。
+
+#### 一些表情例子
+
+😄 😆 😵 😭 😰 😅 😢 😤 😍 😌
+👍 👎 💯 👏 🔔 🎁 ❓ 💣 ❤️ ☕️ 🌀 🙇 💋 🙏 💢
+
+### 大标题 - Heading 3
+
+你可以选择使用 H1 至 H6,使用 ##(N) 打头。建议帖子或回帖中的顶级标题使用 Heading 3,不要使用 1 或 2,因为 1 是系统站点级,2 是帖子标题级。
+
+> NOTE: 别忘了 # 后面需要有空格!
+
+#### Heading 4
+
+##### Heading 5
+
+###### Heading 6
+
+### 图片
+
+```
+![alt 文本](http://image-path.png)
+![alt 文本](http://image-path.png "图片 Title 值")
+```
+
+支持复制粘贴直接上传。
+
+### 代码块
+
+#### 普通
+
+```
+*emphasize* **strong**
+_emphasize_ __strong__
+var a = 1
+```
+
+#### 语法高亮支持
+
+如果在 ``` 后面跟随语言名称,可以有语法高亮的效果哦,比如:
+
+##### 演示 Go 代码高亮
+
+```go
+package main
+
+import "fmt"
+
+func main() {
+ fmt.Println("Hello, 世界")
+}
+```
+
+##### 演示 Java 高亮
+
+```java
+public class HelloWorld {
+
+ public static void main(String[] args) {
+ System.out.println("Hello World!");
+ }
+
+}
+```
+
+> Tip: 语言名称支持下面这些: `ruby`, `python`, `js`, `html`, `erb`, `css`, `coffee`, `bash`, `json`, `yml`, `xml` ...
+
+### 有序、无序、任务列表
+
+#### 无序列表
+
+- Java
+ - Spring
+ - IoC
+ - AOP
+- Go
+ - gofmt
+ - Wide
+- Node.js
+ - Koa
+ - Express
+
+#### 有序列表
+
+1. Node.js
+ 1. Express
+ 2. Koa
+ 3. Sails
+2. Go
+ 1. gofmt
+ 2. Wide
+3. Java
+ 1. Latke
+ 2. IDEA
+
+#### 任务列表
+
+- [x] 发布 Sym
+- [x] 发布 Solo
+- [ ] 预约牙医
+
+### 表格
+
+如果需要展示数据什么的,可以选择使用表格。
+
+| header 1 | header 2 |
+| -------- | -------- |
+| cell 1 | cell 2 |
+| cell 3 | cell 4 |
+| cell 5 | cell 6 |
+
+### 隐藏细节
+
+
+这里是摘要部分。
+这里是细节部分。
+
+
+### 段落
+
+空行可以将内容进行分段,便于阅读。(这是第一段)
+
+使用空行在 Markdown 排版中相当重要。(这是第二段)
+
+### 链接引用
+
+[链接文本][链接标识]
+
+[链接标识]: https://b3log.org
+
+```
+[链接文本][链接标识]
+
+[链接标识]: https://b3log.org
+```
+
+### 数学公式
+
+多行公式块:
+
+$$
+\frac{1}{
+\Bigl(\sqrt{\phi \sqrt{5}}-\phi\Bigr) e^{
+\frac25 \pi}} = 1+\frac{e^{-2\pi}} {1+\frac{e^{-4\pi}} {
+1+\frac{e^{-6\pi}}
+{1+\frac{e^{-8\pi}}{1+\cdots}}
+}
+}
+$$
+
+行内公式:
+
+公式 $a^2 + b^2 = \color{red}c^2$ 是行内。
+
+### 脑图
+
+```mindmap
+- 教程
+- 语法指导
+ - 普通内容
+ - 提及用户
+ - 表情符号 Emoji
+ - 一些表情例子
+ - 大标题 - Heading 3
+ - Heading 4
+ - Heading 5
+ - Heading 6
+ - 图片
+ - 代码块
+ - 普通
+ - 语法高亮支持
+ - 演示 Go 代码高亮
+ - 演示 Java 高亮
+ - 有序、无序、任务列表
+ - 无序列表
+ - 有序列表
+ - 任务列表
+ - 表格
+ - 隐藏细节
+ - 段落
+ - 链接引用
+ - 数学公式
+ - 脑图
+ - 流程图
+ - 时序图
+ - 甘特图
+ - 图表
+ - 五线谱
+ - Graphviz
+ - 多媒体
+ - 脚注
+- 快捷键
+```
+
+### 流程图
+
+```mermaid
+graph TB
+ c1-->a2
+ subgraph one
+ a1-->a2
+ end
+ subgraph two
+ b1-->b2
+ end
+ subgraph three
+ c1-->c2
+ end
+```
+
+### 时序图
+
+```mermaid
+sequenceDiagram
+ Alice->>John: Hello John, how are you?
+ loop Every minute
+ John-->>Alice: Great!
+ end
+```
+
+### 甘特图
+
+```mermaid
+gantt
+ title A Gantt Diagram
+ dateFormat YYYY-MM-DD
+ section Section
+ A task :a1, 2019-01-01, 30d
+ Another task :after a1 , 20d
+ section Another
+ Task in sec :2019-01-12 , 12d
+ another task : 24d
+```
+
+### 图表
+
+```echarts
+{
+ "title": { "text": "最近 30 天" },
+ "tooltip": { "trigger": "axis", "axisPointer": { "lineStyle": { "width": 0 } } },
+ "legend": { "data": ["帖子", "用户", "回帖"] },
+ "xAxis": [{
+ "type": "category",
+ "boundaryGap": false,
+ "data": ["2019-05-08","2019-05-09","2019-05-10","2019-05-11","2019-05-12","2019-05-13","2019-05-14","2019-05-15","2019-05-16","2019-05-17","2019-05-18","2019-05-19","2019-05-20","2019-05-21","2019-05-22","2019-05-23","2019-05-24","2019-05-25","2019-05-26","2019-05-27","2019-05-28","2019-05-29","2019-05-30","2019-05-31","2019-06-01","2019-06-02","2019-06-03","2019-06-04","2019-06-05","2019-06-06","2019-06-07"],
+ "axisTick": { "show": false },
+ "axisLine": { "show": false }
+ }],
+ "yAxis": [{ "type": "value", "axisTick": { "show": false }, "axisLine": { "show": false }, "splitLine": { "lineStyle": { "color": "rgba(0, 0, 0, .38)", "type": "dashed" } } }],
+ "series": [
+ {
+ "name": "帖子", "type": "line", "smooth": true, "itemStyle": { "color": "#d23f31" }, "areaStyle": { "normal": {} }, "z": 3,
+ "data": ["18","14","22","9","7","18","10","12","13","16","6","9","15","15","12","15","8","14","9","10","29","22","14","22","9","10","15","9","9","15","0"]
+ },
+ {
+ "name": "用户", "type": "line", "smooth": true, "itemStyle": { "color": "#f1e05a" }, "areaStyle": { "normal": {} }, "z": 2,
+ "data": ["31","33","30","23","16","29","23","37","41","29","16","13","39","23","38","136","89","35","22","50","57","47","36","59","14","23","46","44","51","43","0"]
+ },
+ {
+ "name": "回帖", "type": "line", "smooth": true, "itemStyle": { "color": "#4285f4" }, "areaStyle": { "normal": {} }, "z": 1,
+ "data": ["35","42","73","15","43","58","55","35","46","87","36","15","44","76","130","73","50","20","21","54","48","73","60","89","26","27","70","63","55","37","0"]
+ }
+ ]
+}
+```
+
+### 五线谱
+
+```abc
+X: 24
+T: Clouds Thicken
+C: Paul Rosen
+S: Copyright 2005, Paul Rosen
+M: 6/8
+L: 1/8
+Q: 3/8=116
+R: Creepy Jig
+K: Em
+|:"Em"EEE E2G|"C7"_B2A G2F|"Em"EEE E2G|\
+"C7"_B2A "B7"=B3|"Em"EEE E2G|
+"C7"_B2A G2F|"Em"GFE "D (Bm7)"F2D|\
+1"Em"E3-E3:|2"Em"E3-E2B|:"Em"e2e gfe|
+"G"g2ab3|"Em"gfeg2e|"D"fedB2A|"Em"e2e gfe|\
+"G"g2ab3|"Em"gfe"D"f2d|"Em"e3-e3:|
+```
+
+### Graphviz
+
+```graphviz
+digraph finite_state_machine {
+ rankdir=LR;
+ size="8,5"
+ node [shape = doublecircle]; S;
+ node [shape = point ]; qi
+
+ node [shape = circle];
+ qi -> S;
+ S -> q1 [ label = "a" ];
+ S -> S [ label = "a" ];
+ q1 -> S [ label = "a" ];
+ q1 -> q2 [ label = "ddb" ];
+ q2 -> q1 [ label = "b" ];
+ q2 -> q2 [ label = "b" ];
+}
+```
+
+### Flowchart
+
+```flowchart
+st=>start: Start
+op=>operation: Your Operation
+cond=>condition: Yes or No?
+e=>end
+
+st->op->cond
+cond(yes)->e
+cond(no)->op
+```
+
+### 多媒体
+
+支持 v.qq.com,youtube.com,youku.com,coub.com,facebook.com/video,dailymotion.com,.mp4,.m4v,.ogg,.ogv,.webm,.mp3,.wav 链接解析
+
+https://v.qq.com/x/cover/zf2z0xpqcculhcz/y0016tj0qvh.html
+
+### 脚注
+
+这里是一个脚注引用[^1],这里是另一个脚注引用[^bignote]。
+
+[^1]: 第一个脚注定义。
+
+[^bignote]: 脚注定义可使用多段内容。
+
+ 缩进对齐的段落包含在这个脚注定义内。
+
+ ```
+ 可以使用代码块。
+ ```
+
+ 还有其他行级排版语法,比如**加粗**和[链接](https://b3log.org)。
+
+```
+这里是一个脚注引用[^1],这里是另一个脚注引用[^bignote]。
+[^1]: 第一个脚注定义。
+[^bignote]: 脚注定义可使用多段内容。
+
+ 缩进对齐的段落包含在这个脚注定义内。
+
+ ```
+ 可以使用代码块。
+ ```
+
+ 还有其他行级排版语法,比如**加粗**和[链接](https://b3log.org)。
+```
+
+## 快捷键
+
+我们的编辑器支持很多快捷键,具体请参考 [键盘快捷键](https://ld246.com/article/1474030007391)(或者按 "`?` "😼)
diff --git a/gradle.properties b/gradle.properties
index 625fdf5..2877f83 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1 +1 @@
-version=1.6.0-SNAPSHOT
+version=1.6.1-SNAPSHOT
diff --git a/src/main/java/top/mczhengyi/vditor/extension/VditorSinglePageContentHandler.java b/src/main/java/top/mczhengyi/vditor/extension/VditorSinglePageContentHandler.java
index 0cbab6b..091ea5c 100644
--- a/src/main/java/top/mczhengyi/vditor/extension/VditorSinglePageContentHandler.java
+++ b/src/main/java/top/mczhengyi/vditor/extension/VditorSinglePageContentHandler.java
@@ -4,6 +4,7 @@ import com.google.common.base.Throwables;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.pf4j.PluginWrapper;
import org.springframework.stereotype.Component;
import reactor.core.publisher.Mono;
import run.halo.app.plugin.ReactiveSettingFetcher;
@@ -16,6 +17,8 @@ import top.mczhengyi.vditor.utils.ScriptUtils;
@Slf4j
public class VditorSinglePageContentHandler implements ReactiveSinglePageContentHandler {
private final ReactiveSettingFetcher reactiveSettingFetcher;
+
+ private final PluginWrapper pluginWrapper;
@Override
public Mono handle(SinglePageContentContext contentContext) {
return reactiveSettingFetcher.fetch("render", RenderConfig.class)
@@ -23,7 +26,8 @@ public class VditorSinglePageContentHandler implements ReactiveSinglePageContent
// 启用条件:开启渲染器,在启用仅Markdown渲染时当前页面为Markdown
if (renderConfig.getEnableRender() &&
(!renderConfig.getOnlyMarkdown() || contentContext.getRawType().equals("markdown"))) {
- contentContext.setContent(ScriptUtils.renderScript(renderConfig) + "\n" + contentContext.getContent());
+ var content = ScriptUtils.renderScript(renderConfig) + "\n" + contentContext.getContent();
+ contentContext.setContent(ScriptUtils.setContentProperty(content, pluginWrapper));
}
return contentContext;
})
diff --git a/src/main/resources/static/external/media-render.js b/src/main/resources/static/external/media-render.js
index fa90007..2012131 100644
--- a/src/main/resources/static/external/media-render.js
+++ b/src/main/resources/static/external/media-render.js
@@ -1,8 +1,5 @@
vditorRender.addExternal((conf) => {
console.log("Run External Function: Media Render!")
- let mediaRenderOption = document.getElementById("vditor-render").dataset.mediarender
- if (mediaRenderOption==="true") {
- let article = document.getElementById("vditor-render").parentElement;
- Vditor.mediaRender(article)
- }
+ let root = document.getElementById("vditor-article-sign").parentElement;
+ Vditor.mediaRender(root)
})
\ No newline at end of file
diff --git a/src/main/resources/static/render-utils.js b/src/main/resources/static/render-utils.js
index a3e30e3..6f9eced 100644
--- a/src/main/resources/static/render-utils.js
+++ b/src/main/resources/static/render-utils.js
@@ -54,6 +54,7 @@
Vditor.abcRender(root, CDN)
Vditor.graphvizRender(root, CDN)
Vditor.flowchartRender(root, CDN)
+ Vditor.plantumlRender(root, CDN)
// Run External Plugin
functionList.forEach(func => {
func({
diff --git a/src/main/resources/static/themes/dark.css b/src/main/resources/static/themes/dark.css
index 7cc3527..741fdd3 100644
--- a/src/main/resources/static/themes/dark.css
+++ b/src/main/resources/static/themes/dark.css
@@ -11,3 +11,17 @@ Modified from vditor content_theme
.language-graphviz polygon {
fill: rgba(66, 133, 244, .36);
}
+
+.vditor-reset .iframe__video {
+ display: block;
+ margin: 0 auto !important;
+ min-width: 80%;
+ min-height: 36vh;
+ border: none;
+}
+
+.vditor-reset video {
+ display: block;
+ margin: 0 auto !important;
+ min-width: 80%;
+}
\ No newline at end of file
diff --git a/src/main/resources/static/themes/light.css b/src/main/resources/static/themes/light.css
index aa1be9a..1b89938 100644
--- a/src/main/resources/static/themes/light.css
+++ b/src/main/resources/static/themes/light.css
@@ -1,4 +1,18 @@
/**
This is a theme for halo-plugin-vditor
Modified from vditor content_theme
- */
\ No newline at end of file
+ */
+
+.vditor-reset .iframe__video {
+ display: block;
+ margin: 0 auto !important;
+ min-width: 80%;
+ min-height: 36vh;
+ border: none;
+}
+
+.vditor-reset video {
+ display: block;
+ margin: 0 auto !important;
+ min-width: 80%;
+}
\ No newline at end of file