diff options
author | 2021-04-01 19:11:28 +0800 | |
---|---|---|
committer | 2021-04-01 19:11:28 +0800 | |
commit | bbb6fc242a4eb10551a8549c400f3db88658fce1 (patch) | |
tree | 24624910bcf33e1b16033885e619a4d629ea953f /pydis_site/apps/content | |
parent | Document 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__.py | 0 | ||||
-rw-r--r-- | pydis_site/apps/content/templatetags/str_methods.py | 21 | ||||
-rw-r--r-- | pydis_site/apps/content/tests/test_templatetags.py | 12 | ||||
-rw-r--r-- | pydis_site/apps/content/tests/test_views.py | 3 | ||||
-rw-r--r-- | pydis_site/apps/content/views/page_category.py | 7 |
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"], |