diff --git a/src/templates/overview.html b/src/templates/overview.html index 77022d4..f5fc2f3 100644 --- a/src/templates/overview.html +++ b/src/templates/overview.html @@ -3,7 +3,7 @@ - STSG + {article_name} @@ -22,7 +22,7 @@
-
{overview_cards}
+
{article_overview_cards}
diff --git a/src/templates/overview_card.html b/src/templates/overview_card.html index 3261dcb..c80e209 100644 --- a/src/templates/overview_card.html +++ b/src/templates/overview_card.html @@ -1,6 +1,6 @@
- -
+ +

{article_language_flag} {article_title}

{article_preview}

diff --git a/stsg/build.py b/stsg/build.py index 4aa815c..77fbbfc 100644 --- a/stsg/build.py +++ b/stsg/build.py @@ -47,6 +47,7 @@ class ArticleTranslation: self.article_content = self.file.read_text() if self.file.suffix == ".md": self.article_content = markdown.markdown(self.article_content) + self.title = get_first_header_content(self.article_content) self.location_in_tree = [self.language_code, *self.article_overview.location_in_tree] self.url = "/" + "/".join(self.location_in_tree) @@ -70,18 +71,27 @@ class ArticleTranslation: with Path(self.dist_path, "index.html").open("w") as f: f.write(self.get_article()) + def _get_values(self) -> Dict[str, str]: return { "article_content": self.article_content, "article_preview": self.article_content[:ARTICLE_PREVIEW_LENGTH] + "...", + "article_url": self.url, "article_overview_url": self.article_overview.url, - "article_href": self.url, - "article_title": get_first_header_content(self.article_content), + "article_slug": self.article_overview.slug, + "article_title": self.title, "article_language_name": self.language_name, "article_language_code": self.language_code, "article_language_flag": self.language_flag, } + def get_article_values(self) -> Dict[str, str]: + res = {} + for key, value in self._get_values().items(): + res[key + ":" + self.article_overview.slug] = value + + return res + def get_article(self) -> str: global TEMPLATE return replace_values(TEMPLATE.article, self._get_values()) @@ -109,10 +119,13 @@ class ArticleOverview: self.child_articles: List[ArticleOverview] = [] self.article_translations: List[ArticleTranslation] = [] + self.article_translations_map: Dict[str, ArticleTranslation] = {} for c in self.directory.iterdir(): if c.is_file(): - self.article_translations.append(ArticleTranslation(c, self)) + at = ArticleTranslation(c, self) + self.article_translations.append(at) + self.article_translations_map[at.language_code] = at elif c.is_dir(): self.child_articles.append(ArticleOverview( directory=c, @@ -137,10 +150,22 @@ class ArticleOverview: def _get_values(self) -> Dict[str, str]: return { - "overview_cards": self.overview_cards, - "overview_slug": self.slug, + "article_url": self.url, + "article_title": self.slug, + "article_slug": self.slug, + "article_overview_url": self.url, + "article_overview_cards": self.overview_cards, } + def get_article_values(self, language_code: Optional[str] = None) -> Dict[str, str]: + if language_code in self.article_translations_map: + return self.article_translations_map[language_code].get_article_values() + + res = {} + for key, value in self._get_values().items(): + res[key + ":" + self.slug] = value + return res + def get_overview(self) -> str: global TEMPLATE return replace_values(TEMPLATE.overview, self._get_values())