diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/content/dependencies/generateArtTagInfoPage.js | 70 | ||||
-rw-r--r-- | src/strings-default.yaml | 20 |
2 files changed, 80 insertions, 10 deletions
diff --git a/src/content/dependencies/generateArtTagInfoPage.js b/src/content/dependencies/generateArtTagInfoPage.js index 3576351c..55da4148 100644 --- a/src/content/dependencies/generateArtTagInfoPage.js +++ b/src/content/dependencies/generateArtTagInfoPage.js @@ -1,11 +1,12 @@ -import {unique} from '#sugar'; +import {empty, unique} from '#sugar'; export default { contentDependencies: [ 'generateArtTagNavLinks', 'generateContentHeading', 'generatePageLayout', - 'linkArtTag', + 'linkArtTagGallery', + 'linkArtTagInfo', 'linkExternal', 'transformContent', ], @@ -37,17 +38,22 @@ export default { description: relation('transformContent', artTag.description), + galleryLink: + (empty(query.allThings) + ? null + : relation('linkArtTagGallery', artTag)), + extraReadingLinks: artTag.extraReadingURLs .map(url => relation('linkExternal', url)), directAncestorLinks: artTag.directAncestorArtTags - .map(artTag => relation('linkArtTag', artTag)), + .map(artTag => relation('linkArtTagInfo', artTag)), directDescendantLinks: artTag.directDescendantArtTags - .map(artTag => relation('linkArtTag', artTag)), + .map(artTag => relation('linkArtTagInfo', artTag)), }), data: (query, sprawl, artTag) => ({ @@ -60,7 +66,13 @@ export default { color: artTag.color, - numArtworks: + numArtworksIndirectly: + query.indirectThings.length, + + numArtworksDirectly: + query.directThings.length, + + numArtworksTotal: query.allThings.length, names: @@ -82,7 +94,7 @@ export default { relations.layout.slots({ title: language.$(pageCapsule, 'title', { - tag: data.name, + tag: language.sanitize(data.name), }), headingMode: 'static', @@ -90,12 +102,42 @@ export default { mainContent: [ html.tag('p', + language.encapsulate(pageCapsule, 'featuredIn', capsule => + (data.numArtworksTotal === 0 + ? language.$(capsule, 'notFeatured') + + : data.numArtworksDirectly === 0 + ? language.$(capsule, 'indirectlyOnly', { + artworks: + language.countArtworks(data.numArtworksIndirectly, {unit: true}), + }) + + : data.numArtworksIndirectly === 0 + ? language.$(capsule, 'directlyOnly', { + artworks: + language.countArtworks(data.numArtworksDirectly, {unit: true}), + }) + + : language.$(capsule, 'directlyAndIndirectly', { + artworksDirectly: + language.countArtworks(data.numArtworksDirectly, {unit: true}), + + artworksIndirectly: + language.countArtworks(data.numArtworksIndirectly, {unit: false}), + + artworksTotal: + language.countArtworks(data.numArtworksTotal, {unit: false}), + })))), + + html.tag('p', {[html.onlyIfContent]: true}, - language.$('releaseInfo.readMoreOn', { - [language.onlyIfOptions]: ['links'], + language.$(pageCapsule, 'viewArtGallery', { + [language.onlyIfOptions]: ['link'], - links: language.formatDisjunctionList(relations.extraReadingLinks), + link: + relations.galleryLink + ?.slot('content', language.$(pageCapsule, 'viewArtGallery.link')), })), html.tag('blockquote', @@ -104,6 +146,16 @@ export default { relations.description .slot('mode', 'multiline')), + html.tag('p', + {[html.onlyIfContent]: true}, + + language.$(pageCapsule, 'readMoreOn', { + [language.onlyIfOptions]: ['links'], + + tag: language.sanitize(data.name), + links: language.formatDisjunctionList(relations.extraReadingLinks), + })), + html.tags([ relations.contentHeading.clone() .slots({ diff --git a/src/strings-default.yaml b/src/strings-default.yaml index 12f39dc6..386d1a42 100644 --- a/src/strings-default.yaml +++ b/src/strings-default.yaml @@ -347,7 +347,6 @@ releaseInfo: visitOn: "Visit on {LINKS}." playOn: "Play on {LINKS}." - readMoreOn: "Read more on {LINKS}." readCommentary: _: "Read {LINK}." @@ -1282,6 +1281,25 @@ artTagPage: artTagInfoPage: title: "{TAG}" + viewArtGallery: + _: "View this tag's {LINK}!" + link: "art gallery" + + readMoreOn: "Read more about {TAG} on {LINKS}." + + featuredIn: + notFeatured: >- + This tag hasn't been featured in any artworks yet. + + directlyOnly: >- + This tag is featured in {ARTWORKS}. + + indirectlyOnly: >- + This tag is featured in {ARTWORKS}, but only indirectly - have a look at its descendant tags! + + directlyAndIndirectly: >- + This tag is directly featured in {ARTWORKS_DIRECTLY}, and indirectly in {ARTWORKS_INDIRECTLY} more, for a total of {ARTWORKS_TOTAL}. + descendantTags: "Tags that descend from {TAG}:" descendsFromTags: "Tags that {TAG} descends from:" |