Skip to content

Commit ca6a18a

Browse files
committedJul 4, 2015
Fix #1856 -- make tag listing pages per-language
Signed-off-by: Chris Warrick <kwpolska@gmail.com>
1 parent e8ce9bb commit ca6a18a

File tree

3 files changed

+18
-9
lines changed

3 files changed

+18
-9
lines changed
 

Diff for: ‎nikola/nikola.py

+6
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,7 @@ def __init__(self, **config):
273273
self.posts_per_month = defaultdict(list)
274274
self.posts_per_tag = defaultdict(list)
275275
self.posts_per_category = defaultdict(list)
276+
self.tags_per_language = defaultdict(list)
276277
self.post_per_file = {}
277278
self.timeline = []
278279
self.pages = []
@@ -1440,6 +1441,7 @@ def scan_posts(self, really=False, ignore_quit=False, quiet=False):
14401441
self.posts_per_month = defaultdict(list)
14411442
self.posts_per_tag = defaultdict(list)
14421443
self.posts_per_category = defaultdict(list)
1444+
self.tags_per_language = defaultdict(list)
14431445
self.category_hierarchy = {}
14441446
self.post_per_file = {}
14451447
self.timeline = []
@@ -1472,6 +1474,8 @@ def scan_posts(self, really=False, ignore_quit=False, quiet=False):
14721474
else:
14731475
slugged_tags.add(utils.slugify(tag, force=True))
14741476
self.posts_per_tag[tag].append(post)
1477+
for lang in post.translated_to:
1478+
self.tags_per_language[lang].extend(post.tags_for_language(lang))
14751479
self._add_post_to_category(post, post.meta('category'))
14761480

14771481
if post.is_post:
@@ -1497,6 +1501,8 @@ def scan_posts(self, really=False, ignore_quit=False, quiet=False):
14971501
quit = True
14981502
self.post_per_file[dest] = post
14991503
self.post_per_file[src_dest] = post
1504+
# deduplicate tags_per_language
1505+
self.tags_per_language[lang] = list(set(self.tags_per_language[lang]))
15001506

15011507
# Sort everything.
15021508

Diff for: ‎nikola/plugins/task/tags.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -179,19 +179,19 @@ def write_tag_data(data):
179179

180180
def _create_tags_page(self, kw, include_tags=True, include_categories=True):
181181
"""a global "all your tags/categories" page for each language"""
182-
tags = natsort.natsorted([tag for tag in self.site.posts_per_tag.keys()
183-
if len(self.site.posts_per_tag[tag]) >= kw["taglist_minimum_post_count"]],
184-
alg=natsort.ns.F | natsort.ns.IC)
185182
categories = [cat.category_name for cat in self.site.category_hierarchy]
186-
has_tags = (tags != []) and include_tags
187183
has_categories = (categories != []) and include_categories
188184
template_name = "tags.tmpl"
189185
kw = kw.copy()
190-
if include_tags:
191-
kw['tags'] = tags
192186
if include_categories:
193187
kw['categories'] = categories
194188
for lang in kw["translations"]:
189+
tags = natsort.natsorted([tag for tag in self.site.tags_per_language[lang]
190+
if len(self.site.posts_per_tag[tag]) >= kw["taglist_minimum_post_count"]],
191+
alg=natsort.ns.F | natsort.ns.IC)
192+
has_tags = (tags != []) and include_tags
193+
if include_tags:
194+
kw['tags'] = tags
195195
output_name = os.path.join(
196196
kw['output_folder'], self.site.path('tag_index' if has_tags else 'category_index', None, lang))
197197
output_name = output_name

Diff for: ‎nikola/post.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -261,16 +261,19 @@ def alltags(self):
261261
tags.extend(self._tags[l])
262262
return list(set(tags))
263263

264-
@property
265-
def tags(self):
266-
lang = nikola.utils.LocaleBorg().current_lang
264+
def tags_for_language(self, lang):
267265
if lang in self._tags:
268266
return self._tags[lang]
269267
elif self.default_lang in self._tags:
270268
return self._tags[self.default_lang]
271269
else:
272270
return []
273271

272+
@property
273+
def tags(self):
274+
lang = nikola.utils.LocaleBorg().current_lang
275+
return self.tags_for_language(lang)
276+
274277
@property
275278
def prev_post(self):
276279
lang = nikola.utils.LocaleBorg().current_lang

0 commit comments

Comments
 (0)
Please sign in to comment.