mirror of https://github.com/zulip/zulip.git
markdown: Rewrite /static/ images to use staticfiles_storage.url.
This commit is contained in:
parent
ccecc8eb84
commit
a1967a7f2d
|
@ -17,6 +17,7 @@ PREPROCESSOR_PRIORITES = {
|
|||
"tabbed_sections": -500,
|
||||
"nested_code_blocks": -500,
|
||||
"emoticon_translations": -505,
|
||||
"static_images": -510,
|
||||
}
|
||||
|
||||
BLOCK_PROCESSOR_PRIORITIES = {
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
from typing import Any
|
||||
from xml.etree.ElementTree import Element
|
||||
|
||||
import markdown
|
||||
from django.contrib.staticfiles.storage import staticfiles_storage
|
||||
from markdown.extensions import Extension
|
||||
|
||||
from zerver.lib.markdown.priorities import PREPROCESSOR_PRIORITES
|
||||
|
||||
|
||||
class MarkdownStaticImagesGenerator(Extension):
|
||||
def extendMarkdown(self, md: markdown.Markdown) -> None:
|
||||
md.treeprocessors.register(
|
||||
StaticImageProcessor(md),
|
||||
"static_images",
|
||||
PREPROCESSOR_PRIORITES["static_images"],
|
||||
)
|
||||
|
||||
|
||||
class StaticImageProcessor(markdown.treeprocessors.Treeprocessor):
|
||||
"""
|
||||
Rewrite img tags which refer to /static/ to use staticfiles
|
||||
"""
|
||||
|
||||
def run(self, root: Element) -> None:
|
||||
for img in root.iter("img"):
|
||||
url = img.get("src")
|
||||
if url is not None and url.startswith("/static/"):
|
||||
img.set("src", staticfiles_storage.url(url[len("/static/") :]))
|
||||
|
||||
|
||||
def makeExtension(*args: Any, **kwargs: str) -> MarkdownStaticImagesGenerator:
|
||||
return MarkdownStaticImagesGenerator(*args, **kwargs)
|
|
@ -22,6 +22,7 @@ import zerver.lib.markdown.help_relative_links
|
|||
import zerver.lib.markdown.help_settings_links
|
||||
import zerver.lib.markdown.include
|
||||
import zerver.lib.markdown.nested_code_blocks
|
||||
import zerver.lib.markdown.static
|
||||
import zerver.lib.markdown.tabbed_sections
|
||||
import zerver.openapi.markdown_extension
|
||||
from zerver.lib.cache import dict_to_items_tuple, ignore_unhashable_lru_cache, items_tuple_to_dict
|
||||
|
@ -127,6 +128,7 @@ def render_markdown_path(
|
|||
zerver.lib.markdown.help_settings_links.makeExtension(),
|
||||
zerver.lib.markdown.help_relative_links.makeExtension(),
|
||||
zerver.lib.markdown.help_emoticon_translations_table.makeExtension(),
|
||||
zerver.lib.markdown.static.makeExtension(),
|
||||
]
|
||||
if "api_url" in context:
|
||||
# We need to generate the API code examples extension each
|
||||
|
|
Loading…
Reference in New Issue