From 213bddbd9851ee01f256835b1bca0c4bc0cf5fc6 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Wed, 8 Nov 2023 19:58:44 -0400 Subject: content: generateNewsEntryPage: read next/previous links at end --- src/content/dependencies/generateNewsEntryPage.js | 66 +++++++++++++++++++++-- src/data/things/language.js | 1 + src/static/site5.css | 4 ++ src/strings-default.yaml | 6 +++ 4 files changed, 73 insertions(+), 4 deletions(-) diff --git a/src/content/dependencies/generateNewsEntryPage.js b/src/content/dependencies/generateNewsEntryPage.js index 62d6bb7b..c8db9f35 100644 --- a/src/content/dependencies/generateNewsEntryPage.js +++ b/src/content/dependencies/generateNewsEntryPage.js @@ -53,12 +53,18 @@ export default { relation('generatePreviousNextLinks'); if (query.previousEntry) { - relations.previousEntryLink = + relations.previousEntryNavLink = + relation('linkNewsEntry', query.previousEntry); + + relations.previousEntryContentLink = relation('linkNewsEntry', query.previousEntry); } if (query.nextEntry) { - relations.nextEntryLink = + relations.nextEntryNavLink = + relation('linkNewsEntry', query.nextEntry); + + relations.nextEntryContentLink = relation('linkNewsEntry', query.nextEntry); } } @@ -70,6 +76,20 @@ export default { return { name: newsEntry.name, date: newsEntry.date, + + daysSincePreviousEntry: + query.previousEntry && + Math.round((newsEntry.date - query.previousEntry.date) / 86400000), + + daysUntilNextEntry: + query.nextEntry && + Math.round((query.nextEntry.date - newsEntry.date) / 86400000), + + previousEntryDate: + query.previousEntry?.date, + + nextEntryDate: + query.nextEntry?.date, }; }, @@ -90,6 +110,44 @@ export default { })), relations.content, + + html.tag('p', { + [html.onlyIfContent]: true, + [html.joinChildren]: html.tag('br'), + class: 'read-another-links', + }, [ + relations.previousEntryContentLink && + language.$('newsEntryPage.readAnother.previous', { + entry: relations.previousEntryContentLink, + + date: + html.tag('span', + { + title: + language.$('newsEntryPage.readAnother.earlier', { + time: + language.countDays(data.daysSincePreviousEntry, {unit: true}), + }).toString(), + }, + language.formatDate(data.previousEntryDate)), + }), + + relations.nextEntryContentLink && + language.$('newsEntryPage.readAnother.next', { + entry: relations.nextEntryContentLink, + + date: + html.tag('span', + { + title: + language.$('newsEntryPage.readAnother.later', { + time: + language.countDays(data.daysUntilNextEntry, {unit: true}), + }).toString(), + }, + language.formatDate(data.nextEntryDate)), + }), + ]), ], navLinkStyle: 'hierarchical', @@ -101,8 +159,8 @@ export default { accent: (relations.previousNextLinks ? `(${language.formatUnitList(relations.previousNextLinks.slots({ - previousLink: relations.previousEntryLink ?? null, - nextLink: relations.nextEntryLink ?? null, + previousLink: relations.previousEntryNavLink ?? null, + nextLink: relations.nextEntryNavLink ?? null, }).content)})` : null), }, diff --git a/src/data/things/language.js b/src/data/things/language.js index 646eb6d1..0aeb7ad5 100644 --- a/src/data/things/language.js +++ b/src/data/things/language.js @@ -398,6 +398,7 @@ Object.assign(Language.prototype, { countAdditionalFiles: countHelper('additionalFiles', 'files'), countAlbums: countHelper('albums'), countArtworks: countHelper('artworks'), + countDays: countHelper('days'), countFlashes: countHelper('flashes'), countCommentaryEntries: countHelper('commentaryEntries', 'entries'), countContributions: countHelper('contributions'), diff --git a/src/static/site5.css b/src/static/site5.css index 0eb7dcda..d9b354d9 100644 --- a/src/static/site5.css +++ b/src/static/site5.css @@ -798,6 +798,10 @@ html[data-url-key="localized.albumCommentary"] li.no-commentary { opacity: 0.7; } +html[data-url-key="localized.newsEntry"] .read-another-links { + font-style: oblique; +} + /* Images */ .image-container { diff --git a/src/strings-default.yaml b/src/strings-default.yaml index a5a09280..8b97eaf5 100644 --- a/src/strings-default.yaml +++ b/src/strings-default.yaml @@ -1586,6 +1586,12 @@ newsEntryPage: title: "{ENTRY}" published: "(Published {DATE}.)" + readAnother: + previous: "(← {DATE} {ENTRY})" + next: "(→ {DATE} {ENTRY})" + earlier: "{TIME} earlier" + later: "{TIME} later" + # # redirectPage: # Static "placeholder" pages when redirecting a visitor from one -- cgit 1.3.0-6-gf8a5