|
7 | 7 | {{/* Get all versions for this guide */}} |
8 | 8 | {{ $guidePages := where .Pages "Type" "guide" }} |
9 | 9 |
|
10 | | -{{/* Map to track latest version for each language */}} |
11 | | -{{ $languageMap := dict }} |
12 | | - |
13 | | -{{/* Process all versions to find the latest for each language */}} |
| 10 | +{{/* Create a slice with version info for sorting */}} |
| 11 | +{{ $versionsWithInfo := slice }} |
14 | 12 | {{ range $guidePages }} |
15 | 13 | {{/* Extract version from URL path */}} |
16 | 14 | {{ $pathParts := split .RelPermalink "/" }} |
|
21 | 19 | {{ break }} |
22 | 20 | {{ end }} |
23 | 21 | {{ end }} |
24 | | - |
| 22 | + |
25 | 23 | {{ if $version }} |
26 | | - {{/* Get available translations for this version using the dedicated function */}} |
27 | | - {{ $versionTranslations := partial "functions/get-guide-translations-for-version" . }} |
28 | | - |
29 | | - {{/* Process each translation to find the latest usable version for each language */}} |
30 | | - {{ range $versionTranslations }} |
31 | | - {{ $langCode := .Language }} |
| 24 | + {{/* Parse version for sorting (YYYY.M format) */}} |
| 25 | + {{ $versionParts := split $version "." }} |
| 26 | + {{ $year := int (index $versionParts 0) }} |
| 27 | + {{ $month := int (index $versionParts 1) }} |
| 28 | + {{ $sortKey := add (mul $year 100) $month }} |
| 29 | + {{ $versionsWithInfo = $versionsWithInfo | append (dict "page" . "version" $version "sortKey" $sortKey) }} |
| 30 | + {{ end }} |
| 31 | +{{ end }} |
32 | 32 |
|
33 | | - {{/* Check if this translation is usable (has content or PDF) */}} |
34 | | - {{ $isUsable := or (eq .ReadOnline true) (eq .ReadPDF true) }} |
| 33 | +{{/* Sort versions in DESCENDING order (newest first) */}} |
| 34 | +{{ $versionsWithInfo = sort $versionsWithInfo "sortKey" "desc" }} |
35 | 35 |
|
36 | | - {{/* Only process usable translations */}} |
37 | | - {{ if $isUsable }} |
38 | | - {{/* Check if we already have this language or if this version is newer */}} |
39 | | - {{ $existing := index $languageMap $langCode }} |
40 | | - {{ if not $existing }} |
41 | | - {{/* First time seeing this language, add it with version info */}} |
42 | | - {{ $translationWithVersion := merge . (dict "Version" $version) }} |
43 | | - {{ $languageMap = merge $languageMap (dict $langCode $translationWithVersion) }} |
44 | | - {{ else }} |
45 | | - {{/* Compare versions to see if this one is newer */}} |
46 | | - {{ $currentVersion := $version }} |
47 | | - {{ $existingVersion := $existing.Version }} |
| 36 | +{{/* Map to track best version for each language */}} |
| 37 | +{{ $languageMap := dict }} |
48 | 38 |
|
49 | | - {{/* Parse versions for comparison (YYYY.M format) */}} |
50 | | - {{ $currentParts := split $currentVersion "." }} |
51 | | - {{ $existingParts := split $existingVersion "." }} |
| 39 | +{{/* Process all versions (newest to oldest) to find best available for each language */}} |
| 40 | +{{ range $versionsWithInfo }} |
| 41 | + {{ $guidePage := .page }} |
| 42 | + {{ $version := .version }} |
| 43 | + |
| 44 | + {{/* Get available translations for this version using the dedicated function */}} |
| 45 | + {{ $versionTranslations := partial "functions/get-guide-translations-for-version" $guidePage }} |
52 | 46 |
|
53 | | - {{ $currentYear := int (index $currentParts 0) }} |
54 | | - {{ $currentMonth := int (index $currentParts 1) }} |
55 | | - {{ $existingYear := int (index $existingParts 0) }} |
56 | | - {{ $existingMonth := int (index $existingParts 1) }} |
| 47 | + {{/* Process each translation to find the best version for each language */}} |
| 48 | + {{ range $versionTranslations }} |
| 49 | + {{ $langCode := .Language }} |
57 | 50 |
|
58 | | - {{ $isNewer := false }} |
59 | | - {{ if gt $currentYear $existingYear }} |
60 | | - {{ $isNewer = true }} |
61 | | - {{ else if and (eq $currentYear $existingYear) (gt $currentMonth $existingMonth) }} |
62 | | - {{ $isNewer = true }} |
63 | | - {{ end }} |
| 51 | + {{/* Check if this translation is usable (has content or PDF) */}} |
| 52 | + {{ $isUsable := or (eq .ReadOnline true) (eq .ReadPDF true) }} |
64 | 53 |
|
65 | | - {{ if $isNewer }} |
66 | | - {{/* Update with newer version only if it's usable */}} |
67 | | - {{ $updatedTranslation := merge . (dict "Version" $currentVersion) }} |
68 | | - {{ $languageMap = merge $languageMap (dict $langCode $updatedTranslation) }} |
69 | | - {{ end }} |
| 54 | + {{/* Only process usable translations */}} |
| 55 | + {{ if $isUsable }} |
| 56 | + {{/* Check if we already have this language */}} |
| 57 | + {{ $existing := index $languageMap $langCode }} |
| 58 | + {{ if not $existing }} |
| 59 | + {{/* First time seeing this language, add it */}} |
| 60 | + {{ $translationWithVersion := merge . (dict "Version" $version) }} |
| 61 | + {{ $languageMap = merge $languageMap (dict $langCode $translationWithVersion) }} |
| 62 | + {{ else }} |
| 63 | + {{/* We already have this language from a newer version */}} |
| 64 | + {{/* Only replace if current (older) version has ReadOnline content and existing doesn't */}} |
| 65 | + {{ if and (eq .ReadOnline true) (ne $existing.ReadOnline true) }} |
| 66 | + {{/* This older version has actual content, while newer version doesn't - use this one */}} |
| 67 | + {{ $updatedTranslation := merge . (dict "Version" $version) }} |
| 68 | + {{ $languageMap = merge $languageMap (dict $langCode $updatedTranslation) }} |
70 | 69 | {{ end }} |
71 | 70 | {{ end }} |
72 | 71 | {{ end }} |
|
0 commit comments