From f5c757b855e333b568faf33d7238ccb40fe24859 Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Mon, 4 May 2020 16:02:24 +0200
Subject: [PATCH] Add template filter to add CSS classes to HTML elements

---
 aleksis/core/templatetags/html_helpers.py | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)
 create mode 100644 aleksis/core/templatetags/html_helpers.py

diff --git a/aleksis/core/templatetags/html_helpers.py b/aleksis/core/templatetags/html_helpers.py
new file mode 100644
index 000000000..2601b3aad
--- /dev/null
+++ b/aleksis/core/templatetags/html_helpers.py
@@ -0,0 +1,23 @@
+from typing import Any
+
+from django import template
+
+from bs4 import BeautifulSoup
+
+register = template.Library()
+
+
+@register.filter
+def add_class_to_el(value: str, arg: str) -> str:
+    """Add a CSS class to every occurence of an element type.
+
+    Example: {{ mymodel.myhtmlfield|add_class_to_el:"ul,browser-default"
+    """
+
+    el, cls = value.split(",")
+    soup = BeautifulSoup(value, "html.parser")
+
+    for el in soup.find_all(el):
+        el["class"] = el.get("class", "") + f" {cls}"
+
+    return str(soup)
-- 
GitLab