aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/content
diff options
context:
space:
mode:
authorGravatar kosayoda <[email protected]>2021-04-01 19:11:28 +0800
committerGravatar kosayoda <[email protected]>2021-04-01 19:11:28 +0800
commitbbb6fc242a4eb10551a8549c400f3db88658fce1 (patch)
tree24624910bcf33e1b16033885e619a4d629ea953f /pydis_site/apps/content
parentDocument defining a table of contents for a page. (diff)
Add a dropdown menu listing direct children.
This only shows when the page is also a category, since regular pages have no children and regular categories already list their children.
Diffstat (limited to 'pydis_site/apps/content')
-rw-r--r--pydis_site/apps/content/templatetags/__init__.py0
-rw-r--r--pydis_site/apps/content/templatetags/str_methods.py21
-rw-r--r--pydis_site/apps/content/tests/test_templatetags.py12
-rw-r--r--pydis_site/apps/content/tests/test_views.py3
-rw-r--r--pydis_site/apps/content/views/page_category.py7
5 files changed, 42 insertions, 1 deletions
diff --git a/pydis_site/apps/content/templatetags/__init__.py b/pydis_site/apps/content/templatetags/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/pydis_site/apps/content/templatetags/__init__.py
diff --git a/pydis_site/apps/content/templatetags/str_methods.py b/pydis_site/apps/content/templatetags/str_methods.py
new file mode 100644
index 00000000..91db3e72
--- /dev/null
+++ b/pydis_site/apps/content/templatetags/str_methods.py
@@ -0,0 +1,21 @@
+from django import template
+from django.template.defaultfilters import stringfilter
+
+register = template.Library()
+
+
[email protected](is_safe=True)
+@stringfilter
+def replace_hyphens(value: str, replacement: str) -> str:
+ """
+ Simple filter to replace hyphens with the specified replacement string.
+
+ Usage:
+
+ ```django
+ {% for name_with_hyphens in name_list %}
+ {{ name_with_hyphens|replace_hyphen:" " }}
+ {% endfor %}
+ ```
+ """
+ return value.replace("-", replacement)
diff --git a/pydis_site/apps/content/tests/test_templatetags.py b/pydis_site/apps/content/tests/test_templatetags.py
new file mode 100644
index 00000000..1147bd88
--- /dev/null
+++ b/pydis_site/apps/content/tests/test_templatetags.py
@@ -0,0 +1,12 @@
+from django.test import TestCase
+
+from pydis_site.apps.content.templatetags.str_methods import replace_hyphens
+
+
+class TestTemplateTags(TestCase):
+ """Tests for the custom template tags in the content app."""
+
+ def test_replace_hyphens(self):
+ self.assertEquals(replace_hyphens("word-with-hyphens", " "), "word with hyphens")
+ self.assertEquals(replace_hyphens("---", ""), "")
+ self.assertEquals(replace_hyphens("hi----", "A"), "hiAAAA")
diff --git a/pydis_site/apps/content/tests/test_views.py b/pydis_site/apps/content/tests/test_views.py
index ab266b29..cd0d0bf7 100644
--- a/pydis_site/apps/content/tests/test_views.py
+++ b/pydis_site/apps/content/tests/test_views.py
@@ -160,7 +160,8 @@ class PageOrCategoryViewTests(MockPagesTestCase, SimpleTestCase, TestCase):
"page": PARSED_HTML,
"page_title": PARSED_METADATA["title"],
"page_description": PARSED_METADATA["description"],
- "relevant_links": PARSED_METADATA["relevant_links"]
+ "relevant_links": PARSED_METADATA["relevant_links"],
+ "subarticles": ["category"]
}
for key, expected_value in expected_page_context.items():
with self.subTest():
diff --git a/pydis_site/apps/content/views/page_category.py b/pydis_site/apps/content/views/page_category.py
index 8783e33f..bb2c07cc 100644
--- a/pydis_site/apps/content/views/page_category.py
+++ b/pydis_site/apps/content/views/page_category.py
@@ -47,6 +47,13 @@ class PageOrCategoryView(TemplateView):
else:
raise Http404
+ # Add subarticle information for dropdown menu if the page is also a category
+ if self.page_path.is_file() and self.category_path.is_dir():
+ context["subarticles"] = [
+ path.stem for path in self.category_path.iterdir()
+ if path.suffix != ".yml"
+ ]
+
context["breadcrumb_items"] = [
{
"name": utils.get_category(settings.PAGES_PATH / location)["title"],