From d6a3faa16149be4e23e28fad561e67b1dd49b66c Mon Sep 17 00:00:00 2001 From: Lephe Date: Thu, 28 Apr 2022 19:40:17 +0100 Subject: [PATCH] markdown: make header slugs unique in every thread --- app/templates/widgets/thread.html | 2 +- app/utils/filters/markdown.py | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/app/templates/widgets/thread.html b/app/templates/widgets/thread.html index 67cd270..9d6dc16 100644 --- a/app/templates/widgets/thread.html +++ b/app/templates/widgets/thread.html @@ -67,7 +67,7 @@ {{ post_actions(c) }} - {{ c.text|md }} + {{ c.text|md(c.id) }} {{ widget_attachments.attachments(c) }} {% if c.author.signature %} diff --git a/app/utils/filters/markdown.py b/app/utils/filters/markdown.py index 71912b4..d353bcb 100644 --- a/app/utils/filters/markdown.py +++ b/app/utils/filters/markdown.py @@ -3,7 +3,7 @@ from markupsafe import Markup from markdown import markdown from markdown.extensions.codehilite import CodeHiliteExtension from markdown.extensions.footnotes import FootnoteExtension -from markdown.extensions.toc import TocExtension +from markdown.extensions.toc import TocExtension, slugify_unicode from bleach import clean from app.utils.bleach_allowlist import markdown_tags, markdown_attrs @@ -15,8 +15,14 @@ from app.utils.markdown_extensions.media import MediaExtension from app.utils.markdown_extensions.gallery import GalleryExtension +def slug(prefix, text, sep): + if prefix is None: + return slugify_unicode(text, sep) + else: + return str(prefix) + sep + slugify_unicode(text, sep) + @app.template_filter('md') -def md(text): +def md(text, prefix=None): """ Converts markdown to html5 """ @@ -33,7 +39,7 @@ def md(text): FootnoteExtension(UNIQUE_IDS=True), HardBreakExtension(), LinkifyExtension(), - TocExtension(baselevel=2), + TocExtension(baselevel=2, slugify=lambda *args: slug(prefix, *args)), PCLinkExtension(), MediaExtension(), GalleryExtension(),