From 9f9945232c01bd4f3c2afdd59a5fc4f661ed3f68 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Mon, 2 Oct 2023 19:34:53 -0300 Subject: content: move "quick description" into own fn, try on group page too --- .../dependencies/generateArtTagGalleryPage.js | 26 +++----------- .../dependencies/generateGroupGalleryPage.js | 11 ++++++ .../dependencies/generateQuickDescription.js | 41 ++++++++++++++++++++++ 3 files changed, 57 insertions(+), 21 deletions(-) create mode 100644 src/content/dependencies/generateQuickDescription.js (limited to 'src/content/dependencies') diff --git a/src/content/dependencies/generateArtTagGalleryPage.js b/src/content/dependencies/generateArtTagGalleryPage.js index a60d1a5d..269f1b8a 100644 --- a/src/content/dependencies/generateArtTagGalleryPage.js +++ b/src/content/dependencies/generateArtTagGalleryPage.js @@ -5,11 +5,11 @@ export default { contentDependencies: [ 'generateCoverGrid', 'generatePageLayout', + 'generateQuickDescription', 'image', 'linkAlbum', 'linkArtTag', 'linkTrack', - 'transformContent', ], extraDependencies: ['html', 'language', 'wikiData'], @@ -46,10 +46,8 @@ export default { relations.infoPageLink = relation('linkArtTag', tag); - if (tag.descriptionShort) { - relations.description = - relation('transformContent', tag.descriptionShort); - } + relations.quickDescription = + relation('generateQuickDescription', tag); if (!empty(tag.directAncestorTags)) { relations.ancestorLinks = @@ -86,7 +84,6 @@ export default { data.name = tag.name; data.color = tag.color; - data.hasLongerDescription = tag.descriptionShort !== tag.description; data.numArtworks = query.allThings.length; @@ -120,21 +117,8 @@ export default { mainClasses: ['top-index'], mainContent: [ - html.tag('p', - { - [html.joinChildren]: html.tag('br'), - [html.onlyIfContent]: true, - class:' quick-info', - }, - [ - relations.description?.slot('mode', 'inline'), - data.hasLongerDescription && - language.$('tagPage.moreInfo', { - link: - relations.infoPageLink - .slot('content', language.$('tagPage.moreInfo.link')), - }), - ]), + relations.quickDescription + .slot('infoPageLink', relations.infoPageLink), html.tag('p', {class: 'quick-info'}, language.$('tagPage.infoLine', { diff --git a/src/content/dependencies/generateGroupGalleryPage.js b/src/content/dependencies/generateGroupGalleryPage.js index 47239f55..49869c76 100644 --- a/src/content/dependencies/generateGroupGalleryPage.js +++ b/src/content/dependencies/generateGroupGalleryPage.js @@ -13,8 +13,10 @@ export default { 'generateGroupNavLinks', 'generateGroupSidebar', 'generatePageLayout', + 'generateQuickDescription', 'image', 'linkAlbum', + 'linkGroup', 'linkListing', ], @@ -70,6 +72,12 @@ export default { .map(album => relation('image', album.artTags)); } + relations.quickDescription = + relation('generateQuickDescription', group); + + relations.quickDescriptionInfoLink = + relation('linkGroup', group); + relations.coverGrid = relation('generateCoverGrid'); @@ -143,6 +151,9 @@ export default { image.slot('path', path)), }), + relations.quickDescription + .slot('infoPageLink', relations.quickDescriptionInfoLink), + html.tag('p', {class: 'quick-info'}, language.$('groupGalleryPage.infoLine', { diff --git a/src/content/dependencies/generateQuickDescription.js b/src/content/dependencies/generateQuickDescription.js new file mode 100644 index 00000000..136769ac --- /dev/null +++ b/src/content/dependencies/generateQuickDescription.js @@ -0,0 +1,41 @@ +export default { + contentDependencies: ['transformContent'], + extraDependencies: ['html', 'language'], + + relations: (relation, thing) => + ({description: + (thing.descriptionShort || thing.description + ? relation('transformContent', + thing.descriptionShort ?? thing.description) + : null)}), + + data: (thing) => + ({hasLongerDescription: + thing.description && + thing.descriptionShort && + thing.descriptionShort !== thing.description}), + + slots: { + infoPageLink: {type: 'html'}, + }, + + generate(data, relations, slots, {html, language}) { + return html.tag('p', + { + [html.joinChildren]: html.tag('br'), + [html.onlyIfContent]: true, + class:' quick-info', + }, + [ + relations.description?.slot('mode', 'inline'), + + data.hasLongerDescription && + slots.infoPageLink && + language.$('misc.quickDescription.moreInfo', { + link: + slots.infoPageLink + .slot('content', language.$('misc.quickDescription.moreInfo.link')), + }), + ]); + }, +}; -- cgit 1.3.0-6-gf8a5