From 8d6914b35a71d6f62d952f90e758f61aac6dee18 Mon Sep 17 00:00:00 2001
From: "j.vondoemming" <j.vondoemming@stud.uni-goettingen.de>
Date: Sat, 15 Oct 2022 19:01:51 +0200
Subject: [PATCH] render hidden pages too

---
 fgs/generator.py                    | 35 +++++++++++++++++++++--------
 theme/templates/macros/getters.html |  6 ++++-
 2 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/fgs/generator.py b/fgs/generator.py
index 1531922..bab0efc 100644
--- a/fgs/generator.py
+++ b/fgs/generator.py
@@ -12,21 +12,34 @@ class Generator:
 
         pages = self.factories['page'].all()
         published_pages = []
+        hidden_pages = []
         for lang in self.config['lang']['supported']:
             for slug, page in pages[lang].items():
                 if page.status == "published":
                     published_pages.append(page)
+                elif page.status == "hidden":
+                    hidden_pages.append(page)
 
 
-        # pages
-        all_pages = {}
+        # set context.pages from published_pages as a dict of languages containing dicts of slugs
+        all_published_pages = {}
+        for lang in self.config['lang']['supported']:
+            all_published_pages[lang] = {}
         for page in published_pages:
-            if page.lang not in all_pages:
-                all_pages[page.lang] = {}
-            if page.slug in all_pages[page.lang]:
+            if page.slug in all_published_pages[page.lang]:
+                raise Exception("duplicate language (",lang,") for slug '", slug ,"'")
+            all_published_pages[page.lang][page.slug] = page
+        self.context['pages'] = all_published_pages
+
+        # set context.hidden_pages from hidden_pages as a dict of languages containing dicts of slugs
+        all_hidden_pages = {}
+        for lang in self.config['lang']['supported']:
+            all_hidden_pages[lang] = {}
+        for page in hidden_pages:
+            if page.slug in all_hidden_pages[page.lang]:
                 raise Exception("duplicate language (",lang,") for slug '", slug ,"'")
-            all_pages[page.lang][page.slug] = page
-        self.context['pages'] = all_pages
+            all_hidden_pages[page.lang][page.slug] = page
+        self.context['hidden_pages'] = all_hidden_pages
 
         # pages_modified
         pages_modified = {}
@@ -40,7 +53,6 @@ class Generator:
             pages_modified[lang] = lang_pages
         self.context['pages_modified'] = pages_modified
 
-        # TODO hidden pages
         # TODO draft pages
         # TODO authors
 
@@ -88,10 +100,15 @@ class Generator:
                 writer.write_file(f.link.path, f.rawcontents, mode="wb")
 
         for lang in self.config['lang']['supported']:
-            # all pages
+            # all published pages
             for page in self.context['pages'][lang].values():
                 writer.write_template(page.template, page.link.path, lang, {'page': page}, page.config)
 
+            # all hidden pages
+            for page in self.context['hidden_pages'][lang].values():
+                #print(page.slug)
+                writer.write_template(page.template, page.link.path, lang, {'page': page}, page.config)
+
             # all tags
             for tag in self.context['tags'][lang].values():
                 writer.write_template('tag.html', tag.link.path, lang, {'tag': tag}, tag.config)
diff --git a/theme/templates/macros/getters.html b/theme/templates/macros/getters.html
index 2ddbe4c..b682346 100644
--- a/theme/templates/macros/getters.html
+++ b/theme/templates/macros/getters.html
@@ -1,5 +1,9 @@
 {%- macro page_by_slug(slug, lang) -%}
-	{{- caller(pages[lang][slug]) -}}
+	{%- if slug in pages[lang]-%}
+		{{- caller(pages[lang][slug]) -}}
+	{%- elif slug in hidden_pages[lang]-%}
+		{{- caller(hidden_pages[lang][slug]) -}}
+	{%- endif -%}
 {%- endmacro -%}
 
 {%- macro tag_by_name(name, lang) -%}
-- 
GitLab