diff --git a/app/helpers.php b/app/helpers.php index 15937c27..4d77b9e8 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -686,6 +686,26 @@ function convertSqlTo(string $sql, $callback) } } +/** + * Markdown 预处理 + * + * @param string $markdown + * @return string + */ +function processMarkdown(string $markdown): string +{ + $defaultTOC = config('wizard.markdown.default_toc'); + if (!in_array($defaultTOC, ['TOC', 'TOCM'])) { + return $markdown; + } + + if (Str::contains($markdown, ['[TOC]', '[TOCM]'])) { + return $markdown; + } + + return "[{$defaultTOC}]\n\n{$markdown}"; +} + /** * 预处理 X-spreadsheet 表格内容 * diff --git a/config/wizard.php b/config/wizard.php index b68c370f..25147a12 100644 --- a/config/wizard.php +++ b/config/wizard.php @@ -90,17 +90,23 @@ /** * Markdown 配置 */ - 'markdown' => [ + 'markdown' => [ /** * 是否启用严格的 Markdown 解释器,如果你的 markdown 格式并不标准,可以将该选项设置为 false */ - 'strict' => env('WIZARD_MARKDOWN_STRICT', true), + 'strict' => env('WIZARD_MARKDOWN_STRICT', true), + /** + * 是否自动添加 TOC(文档目录,当页面内容中不包含 TOC/TOCM 标签时,自动添加) + * + * 设置为空则不启用该功能,如果启用,则设置为 TOC 或者 TOCM + */ + 'default_toc' => env('WIZARD_MARKDOWN_TOC_DEFAULT', ''), ], /** * 表格类型文档配置 */ - 'spreedsheet' => [ + 'spreedsheet' => [ /** * 最大支持的行数 */ @@ -122,7 +128,7 @@ /** * 文件附件 */ - 'attachments' => [ + 'attachments' => [ /** * 支持的文件扩展名列表,使用,分割 */ diff --git a/resources/views/components/markdown-show.blade.php b/resources/views/components/markdown-show.blade.php index 24eecaee..d0ad70c6 100644 --- a/resources/views/components/markdown-show.blade.php +++ b/resources/views/components/markdown-show.blade.php @@ -40,6 +40,7 @@ } editormd.markdownToHTML('markdown-body', { tocm: true, + toc: true, tocDropdown: false, markdownSourceCode: true, taskList: true, diff --git a/resources/views/project/project.blade.php b/resources/views/project/project.blade.php index 7201bca5..607453d5 100644 --- a/resources/views/project/project.blade.php +++ b/resources/views/project/project.blade.php @@ -95,7 +95,7 @@
@if($type === 'markdown') - + @endif @if($type === 'table')