diff --git a/netbox/project-static/dist/netbox.css b/netbox/project-static/dist/netbox.css index 80d23acfa..dcc103d85 100644 Binary files a/netbox/project-static/dist/netbox.css and b/netbox/project-static/dist/netbox.css differ diff --git a/netbox/project-static/styles/custom/_markdown.scss b/netbox/project-static/styles/custom/_markdown.scss index cb4527f37..fb9182a19 100644 --- a/netbox/project-static/styles/custom/_markdown.scss +++ b/netbox/project-static/styles/custom/_markdown.scss @@ -35,6 +35,11 @@ td > .rendered-markdown { } } +td > .rendered-markdown.vertical-scroll { + max-height: 200px; + overflow-y: scroll; +} + // Markdown preview .markdown-widget { .preview { diff --git a/netbox/utilities/templates/builtins/customfield_value.html b/netbox/utilities/templates/builtins/customfield_value.html index dbf10e1bf..7fe8d1eff 100644 --- a/netbox/utilities/templates/builtins/customfield_value.html +++ b/netbox/utilities/templates/builtins/customfield_value.html @@ -3,7 +3,7 @@ {% if customfield.type == 'integer' and value is not None %} {{ value }} {% elif customfield.type == 'longtext' and value %} - {{ value|markdown }} + {{ value|markdown:True }} {% elif customfield.type == 'boolean' and value == True %} {% checkmark value true="True" %} {% elif customfield.type == 'boolean' and value == False %} diff --git a/netbox/utilities/templatetags/builtins/filters.py b/netbox/utilities/templatetags/builtins/filters.py index 738b9a23e..03c91b132 100644 --- a/netbox/utilities/templatetags/builtins/filters.py +++ b/netbox/utilities/templatetags/builtins/filters.py @@ -159,11 +159,16 @@ def content_type_id(model): # @register.filter('markdown', is_safe=True) -def render_markdown(value): +def render_markdown(value, clamp_height=False): """ Render a string as Markdown. This filter is invoked as "markdown": {{ md_source_text|markdown }} + + If clamp_height is True, the "vertical-scroll" class will be added to the container div which sets a max-height + and adds a vertical scrollbar: + + {{ md_source_text|markdown:True }} """ if not value: return '' @@ -178,7 +183,11 @@ def render_markdown(value): # If the string is not empty wrap it in rendered-markdown to style tables if html: - html = f'