From aea4995ff0aea1baf9fd4aaaf4cf096a53e94f99 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Wed, 4 Oct 2023 13:16:50 -0300 Subject: support art tag info pages; ensure "art tag" terminology everywhere --- src/common-util/wiki-data.js | 2 +- .../dependencies/generateArtTagGalleryPage.js | 71 ++++++++----------- src/content/dependencies/generateArtTagNavLinks.js | 81 ++++++++++++++++++++++ src/content/dependencies/generateCoverArtwork.js | 2 +- .../generateCoverArtworkArtTagDetails.js | 8 +-- src/content/dependencies/image.js | 4 +- src/content/dependencies/linkArtTag.js | 2 +- src/content/dependencies/linkArtTagGallery.js | 8 +++ src/content/dependencies/listTagsByName.js | 15 ++-- src/content/dependencies/listTagsByUses.js | 49 ++++++------- src/data/checks.js | 2 +- src/data/composite/things/art-tag/index.js | 2 +- .../things/art-tag/withAllDescendantArtTags.js | 44 ++++++++++++ .../things/art-tag/withAllDescendantTags.js | 44 ------------ src/data/things/art-tag.js | 34 ++++----- src/page/art-tag.js | 25 +++++++ src/page/index.js | 2 +- src/page/tag.js | 25 ------- src/replacer.js | 5 ++ src/strings-default.yaml | 45 +++++++----- src/urls-default.yaml | 5 +- 21 files changed, 283 insertions(+), 192 deletions(-) create mode 100644 src/content/dependencies/generateArtTagNavLinks.js create mode 100644 src/content/dependencies/linkArtTagGallery.js create mode 100644 src/data/composite/things/art-tag/withAllDescendantArtTags.js delete mode 100644 src/data/composite/things/art-tag/withAllDescendantTags.js create mode 100644 src/page/art-tag.js delete mode 100644 src/page/tag.js (limited to 'src') diff --git a/src/common-util/wiki-data.js b/src/common-util/wiki-data.js index f97ecd63..e012759d 100644 --- a/src/common-util/wiki-data.js +++ b/src/common-util/wiki-data.js @@ -342,7 +342,7 @@ export function filterItemsForCarousel(items) { return items .filter(item => item.hasCoverArt) - .filter(item => item.artTags.every(tag => !tag.isContentWarning)) + .filter(item => item.artTags.every(artTag => !artTag.isContentWarning)) .slice(0, maxCarouselLayoutItems + 1); } diff --git a/src/content/dependencies/generateArtTagGalleryPage.js b/src/content/dependencies/generateArtTagGalleryPage.js index dc42b1d3..a0b3a0e5 100644 --- a/src/content/dependencies/generateArtTagGalleryPage.js +++ b/src/content/dependencies/generateArtTagGalleryPage.js @@ -3,12 +3,13 @@ import {empty, stitchArrays, unique} from '#sugar'; export default { contentDependencies: [ + 'generateArtTagNavLinks', 'generateCoverGrid', 'generatePageLayout', 'generateQuickDescription', 'image', 'linkAlbum', - 'linkArtTag', + 'linkArtTagGallery', 'linkTrack', ], @@ -20,9 +21,9 @@ export default { }; }, - query(sprawl, tag) { - const directThings = tag.directlyTaggedInThings; - const indirectThings = tag.indirectlyTaggedInThings; + query(sprawl, artTag) { + const directThings = artTag.directlyTaggedInThings; + const indirectThings = artTag.indirectlyTaggedInThings; const allThings = unique([...directThings, ...indirectThings]); sortAlbumsTracksChronologically(allThings, { @@ -33,54 +34,54 @@ export default { return {directThings, indirectThings, allThings}; }, - relations(relation, query, sprawl, tag) { + relations(relation, query, sprawl, artTag) { const relations = {}; relations.layout = relation('generatePageLayout'); - relations.artTagMainLink = - relation('linkArtTag', tag); + relations.navLinks = + relation('generateArtTagNavLinks', artTag); relations.quickDescription = - relation('generateQuickDescription', tag); + relation('generateQuickDescription', artTag); - if (!empty(tag.directAncestorTags)) { + if (!empty(artTag.directAncestorArtTags)) { relations.ancestorLinks = - tag.directAncestorTags.map(tag => - relation('linkArtTag', tag)); + artTag.directAncestorArtTags + .map(artTag => relation('linkArtTagGallery', artTag)); } - if (!empty(tag.directDescendantTags)) { + if (!empty(artTag.directDescendantArtTags)) { relations.descendantLinks = - tag.directDescendantTags.map(tag => - relation('linkArtTag', tag)); + artTag.directDescendantArtTags + .map(artTag => relation('linkArtTagGallery', artTag)); } relations.coverGrid = relation('generateCoverGrid'); relations.links = - query.allThings.map(thing => - (thing.album - ? relation('linkTrack', thing) - : relation('linkAlbum', thing))); + query.allThings + .map(thing => + (thing.album + ? relation('linkTrack', thing) + : relation('linkAlbum', thing))); relations.images = - query.allThings.map(thing => - relation('image', thing.artTags)); + query.allThings + .map(thing => relation('image', thing.artTags)); return relations; }, - data(query, sprawl, tag) { + data(query, sprawl, artTag) { const data = {}; data.enableListings = sprawl.enableListings; - data.name = tag.name; - data.color = tag.color; - data.hasLongerDescription = tag.descriptionShort !== tag.description; + data.name = artTag.name; + data.color = artTag.color; data.numArtworks = query.allThings.length; @@ -109,7 +110,7 @@ export default { }, generate: (data, relations, {html, language}) => - language.encapsulate('tagPage', pageCapsule => + language.encapsulate('artTagGalleryPage', pageCapsule => relations.layout.slots({ title: language.$(pageCapsule, 'title', { @@ -175,21 +176,9 @@ export default { ], navLinkStyle: 'hierarchical', - navLinks: [ - {auto: 'home'}, - - data.enableListings && - { - path: ['localized.listingIndex'], - title: language.$('listingIndex.title'), - }, - - { - html: - language.$(pageCapsule, 'nav.tag', { - tag: relations.artTagMainLink, - }), - }, - ], + navLinks: + html.resolve( + relations.navLinks + .slot('currentExtra', 'gallery')), })), }; diff --git a/src/content/dependencies/generateArtTagNavLinks.js b/src/content/dependencies/generateArtTagNavLinks.js new file mode 100644 index 00000000..df6d7cf0 --- /dev/null +++ b/src/content/dependencies/generateArtTagNavLinks.js @@ -0,0 +1,81 @@ +export default { + contentDependencies: [ + 'generateInterpageDotSwitcher', + 'linkArtTag', + 'linkArtTagGallery', + ], + + extraDependencies: ['html', 'language', 'wikiData'], + + sprawl: ({wikiInfo}) => + ({enableListings: wikiInfo.enableListings}), + + relations: (relation, sprawl, tag) => ({ + switcher: + relation('generateInterpageDotSwitcher'), + + mainLink: + relation('linkArtTag', tag), + + infoLink: + relation('linkArtTag', tag), + + galleryLink: + relation('linkArtTagGallery', tag), + }), + + data: (sprawl) => + ({enableListings: sprawl.enableListings}), + + slots: { + currentExtra: { + validate: v => v.is('gallery'), + }, + }, + + generate(data, relations, slots, {language}) { + if (!data.enableListings) { + return [ + {auto: 'home'}, + {auto: 'current'}, + ]; + } + + const infoLink = + relations.infoLink.slots({ + attributes: {class: slots.currentExtra === null && 'current'}, + content: language.$('misc.nav.info'), + }); + + const galleryLink = + relations.galleryLink.slots({ + attributes: {class: slots.currentExtra === 'gallery' && 'current'}, + content: language.$('misc.nav.gallery'), + }); + + return [ + {auto: 'home'}, + + data.enableListings && + { + path: ['localized.listingIndex'], + title: language.$('listingIndex.title'), + }, + + { + html: + language.$('artTagPage.nav.tag', { + tag: relations.mainLink, + }), + + accent: + relations.switcher.slots({ + links: [ + infoLink, + galleryLink, + ], + }), + }, + ].filter(Boolean); + }, +}; diff --git a/src/content/dependencies/generateCoverArtwork.js b/src/content/dependencies/generateCoverArtwork.js index 50ca89ae..06972d6b 100644 --- a/src/content/dependencies/generateCoverArtwork.js +++ b/src/content/dependencies/generateCoverArtwork.js @@ -1,5 +1,5 @@ export default { - contentDependencies: ['image', 'linkArtistGallery'], + contentDependencies: ['image'], extraDependencies: ['html'], slots: { diff --git a/src/content/dependencies/generateCoverArtworkArtTagDetails.js b/src/content/dependencies/generateCoverArtworkArtTagDetails.js index 81ead8a9..c9475f1f 100644 --- a/src/content/dependencies/generateCoverArtworkArtTagDetails.js +++ b/src/content/dependencies/generateCoverArtworkArtTagDetails.js @@ -11,7 +11,7 @@ export default { }), relations: (relation, query, _artTags) => ({ - tagLinks: + artTagLinks: query.linkableArtTags .map(tag => relation('linkArtTag', tag)), }), @@ -42,9 +42,9 @@ export default { {class: 'art-tag-details'}, stitchArrays({ - tagLink: relations.tagLinks, + artTagLink: relations.artTagLinks, preferShortName: data.preferShortName, - }).map(({tagLink, preferShortName}) => + }).map(({artTagLink, preferShortName}) => html.tag('li', - tagLink.slot('preferShortName', preferShortName)))), + artTagLink.slot('preferShortName', preferShortName)))), }; diff --git a/src/content/dependencies/image.js b/src/content/dependencies/image.js index 6cbcb7dd..8a446c39 100644 --- a/src/content/dependencies/image.js +++ b/src/content/dependencies/image.js @@ -27,8 +27,8 @@ export default { if (artTags) { data.contentWarnings = artTags - .filter(tag => tag.isContentWarning) - .map(tag => tag.name); + .filter(artTag => artTag.isContentWarning) + .map(artTag => artTag.name); } else { data.contentWarnings = null; } diff --git a/src/content/dependencies/linkArtTag.js b/src/content/dependencies/linkArtTag.js index 7ddb7786..409cb3c0 100644 --- a/src/content/dependencies/linkArtTag.js +++ b/src/content/dependencies/linkArtTag.js @@ -2,7 +2,7 @@ export default { contentDependencies: ['linkThing'], relations: (relation, artTag) => - ({link: relation('linkThing', 'localized.tag', artTag)}), + ({link: relation('linkThing', 'localized.artTagInfo', artTag)}), generate: (relations) => relations.link, }; diff --git a/src/content/dependencies/linkArtTagGallery.js b/src/content/dependencies/linkArtTagGallery.js new file mode 100644 index 00000000..a92b69c1 --- /dev/null +++ b/src/content/dependencies/linkArtTagGallery.js @@ -0,0 +1,8 @@ +export default { + contentDependencies: ['linkThing'], + + relations: (relation, artTag) => + ({link: relation('linkThing', 'localized.artTagGallery', artTag)}), + + generate: (relations) => relations.link, +}; diff --git a/src/content/dependencies/listTagsByName.js b/src/content/dependencies/listTagsByName.js index d7022a55..31856478 100644 --- a/src/content/dependencies/listTagsByName.js +++ b/src/content/dependencies/listTagsByName.js @@ -1,8 +1,8 @@ import {sortAlphabetically} from '#sort'; -import {stitchArrays} from '#sugar'; +import {stitchArrays, unique} from '#sugar'; export default { - contentDependencies: ['generateListingPage', 'linkArtTag'], + contentDependencies: ['generateListingPage', 'linkArtTagGallery'], extraDependencies: ['language', 'wikiData'], sprawl({artTagData}) { @@ -16,7 +16,7 @@ export default { artTags: sortAlphabetically( artTagData - .filter(tag => !tag.isContentWarning)), + .filter(artTag => !artTag.isContentWarning)), }; }, @@ -26,15 +26,18 @@ export default { artTagLinks: query.artTags - .map(tag => relation('linkArtTag', tag)), + .map(artTag => relation('linkArtTagGallery', artTag)), }; }, data(query) { return { counts: - query.artTags - .map(tag => tag.taggedInThings.length), + query.artTags.map(artTag => + unique([ + ...artTag.indirectlyTaggedInThings, + ...artTag.directlyTaggedInThings, + ]).length), }; }, diff --git a/src/content/dependencies/listTagsByUses.js b/src/content/dependencies/listTagsByUses.js index 00c700a5..fcd324f7 100644 --- a/src/content/dependencies/listTagsByUses.js +++ b/src/content/dependencies/listTagsByUses.js @@ -1,23 +1,25 @@ import {sortAlphabetically, sortByCount} from '#sort'; -import {filterByCount, stitchArrays} from '#sugar'; +import {filterByCount, stitchArrays, unique} from '#sugar'; export default { - contentDependencies: ['generateListingPage', 'linkArtTag'], + contentDependencies: ['generateListingPage', 'linkArtTagGallery'], extraDependencies: ['language', 'wikiData'], - sprawl({artTagData}) { - return {artTagData}; - }, + sprawl: ({artTagData}) => + ({artTagData}), query({artTagData}, spec) { const artTags = sortAlphabetically( artTagData - .filter(tag => !tag.isContentWarning)); + .filter(artTag => !artTag.isContentWarning)); const counts = - artTags - .map(tag => tag.taggedInThings.length); + artTags.map(artTag => + unique([ + ...artTag.directlyTaggedInThings, + ...artTag.indirectlyTaggedInThings, + ]).length); filterByCount(artTags, counts); sortByCount(artTags, counts, {greatestFirst: true}); @@ -25,26 +27,20 @@ export default { return {spec, artTags, counts}; }, - relations(relation, query) { - return { - page: relation('generateListingPage', query.spec), + relations: (relation, query) => ({ + page: + relation('generateListingPage', query.spec), - artTagLinks: - query.artTags - .map(tag => relation('linkArtTag', tag)), - }; - }, + artTagLinks: + query.artTags + .map(artTag => relation('linkArtTagGallery', artTag)), + }), - data(query) { - return { - counts: - query.artTags - .map(tag => tag.taggedInThings.length), - }; - }, + data: (query) => + ({counts: query.counts}), - generate(data, relations, {language}) { - return relations.page.slots({ + generate: (data, relations, {language}) => + relations.page.slots({ type: 'rows', rows: stitchArrays({ @@ -54,6 +50,5 @@ export default { tag: link, timesUsed: language.countTimesUsed(count, {unit: true}), })), - }); - }, + }), }; diff --git a/src/data/checks.js b/src/data/checks.js index 8698e877..e46f97ef 100644 --- a/src/data/checks.js +++ b/src/data/checks.js @@ -189,7 +189,7 @@ export function filterReferenceErrors(wikiData, { }], ['artTagData', { - directDescendantTags: 'artTag', + directDescendantArtTags: 'artTag', }], ['flashData', { diff --git a/src/data/composite/things/art-tag/index.js b/src/data/composite/things/art-tag/index.js index aedc3a0c..0c365ce2 100644 --- a/src/data/composite/things/art-tag/index.js +++ b/src/data/composite/things/art-tag/index.js @@ -1 +1 @@ -export {default as withAllDescendantTags} from './withAllDescendantTags.js'; +export {default as withAllDescendantArtTags} from './withAllDescendantArtTags.js'; diff --git a/src/data/composite/things/art-tag/withAllDescendantArtTags.js b/src/data/composite/things/art-tag/withAllDescendantArtTags.js new file mode 100644 index 00000000..795f96cd --- /dev/null +++ b/src/data/composite/things/art-tag/withAllDescendantArtTags.js @@ -0,0 +1,44 @@ +// Gets all the art tags which descend from this one - that means its own direct +// descendants, but also all the direct and indirect desceands of each of those! +// The results aren't specially sorted, but they won't contain any duplicates +// (for example if two descendant tags both route deeper to end up including +// some of the same tags). + +import {input, templateCompositeFrom} from '#composite'; +import {unique} from '#sugar'; + +import {raiseOutputWithoutDependency} from '#composite/control-flow'; +import {withResolvedReferenceList} from '#composite/wiki-data'; +import {soupyFind} from '#composite/wiki-properties'; + +export default templateCompositeFrom({ + annotation: `withAllDescendantArtTags`, + + outputs: ['#allDescendantArtTags'], + + steps: () => [ + raiseOutputWithoutDependency({ + dependency: 'directDescendantArtTags', + mode: input.value('empty'), + output: input.value({'#allDescendantArtTags': []}) + }), + + withResolvedReferenceList({ + list: 'directDescendantArtTags', + find: soupyFind.input('artTag'), + }), + + { + dependencies: ['#resolvedReferenceList'], + compute: (continuation, { + ['#resolvedReferenceList']: directDescendantArtTags, + }) => continuation({ + ['#allDescendantArtTags']: + unique([ + ...directDescendantArtTags, + ...directDescendantArtTags.flatMap(artTag => artTag.allDescendantArtTags), + ]), + }), + }, + ], +}) diff --git a/src/data/composite/things/art-tag/withAllDescendantTags.js b/src/data/composite/things/art-tag/withAllDescendantTags.js deleted file mode 100644 index 945e9f37..00000000 --- a/src/data/composite/things/art-tag/withAllDescendantTags.js +++ /dev/null @@ -1,44 +0,0 @@ -// Gets all the tags which descend from this one - that means its own direct -// descendants, but also all the direct and indirect desceands of each of those! -// The results aren't specially sorted, but they won't contain any duplicates -// (for example if two descendant tags both route deeper to end up including -// some of the same tags). - -import {input, templateCompositeFrom} from '#composite'; -import {unique} from '#sugar'; - -import {raiseOutputWithoutDependency} from '#composite/control-flow'; -import {withResolvedReferenceList} from '#composite/wiki-data'; -import {soupyFind} from '#composite/wiki-properties'; - -export default templateCompositeFrom({ - annotation: `withAllDescendantTags`, - - outputs: ['#allDescendantTags'], - - steps: () => [ - raiseOutputWithoutDependency({ - dependency: 'directDescendantTags', - mode: input.value('empty'), - output: input.value({'#allDescendantTags': []}) - }), - - withResolvedReferenceList({ - list: 'directDescendantTags', - find: soupyFind.input('artTag'), - }), - - { - dependencies: ['#resolvedReferenceList'], - compute: (continuation, { - ['#resolvedReferenceList']: directDescendantTags, - }) => continuation({ - ['#allDescendantTags']: - unique([ - ...directDescendantTags, - ...directDescendantTags.flatMap(tag => tag.allDescendantTags), - ]), - }), - }, - ], -}) diff --git a/src/data/things/art-tag.js b/src/data/things/art-tag.js index dd3dddf2..60a4340d 100644 --- a/src/data/things/art-tag.js +++ b/src/data/things/art-tag.js @@ -24,7 +24,7 @@ import { wikiData, } from '#composite/wiki-properties'; -import {withAllDescendantTags} from '#composite/things/art-tag'; +import {withAllDescendantArtTags} from '#composite/things/art-tag'; export class ArtTag extends Thing { static [Thing.referenceType] = 'tag'; @@ -53,7 +53,7 @@ export class ArtTag extends Thing { description: simpleString(), - directDescendantTags: referenceList({ + directDescendantArtTags: referenceList({ class: input.value(ArtTag), find: soupyFind.input('artTag'), }), @@ -94,21 +94,23 @@ export class ArtTag extends Thing { }, indirectlyTaggedInThings: [ - withAllDescendantTags(), + withAllDescendantArtTags(), { - dependencies: ['#allDescendantTags'], - compute: ({'#allDescendantTags': allDescendantTags}) => - unique(allDescendantTags.flatMap(tag => tag.directlyTaggedInThings)), + dependencies: ['#allDescendantArtTags'], + compute: ({'#allDescendantArtTags': allDescendantArtTags}) => + unique( + allDescendantArtTags + .flatMap(artTag => artTag.directlyTaggedInThings)), }, ], - allDescendantTags: [ - withAllDescendantTags(), - exposeDependency({dependency: '#allDescendantTags'}), + allDescendantArtTags: [ + withAllDescendantArtTags(), + exposeDependency({dependency: '#allDescendantArtTags'}), ], - directAncestorTags: reverseReferenceList({ + directAncestorArtTags: reverseReferenceList({ reverse: soupyReverse.input('artTagsWhichDirectlyAncestor'), }), }); @@ -118,10 +120,10 @@ export class ArtTag extends Thing { referenceTypes: ['tag'], bindTo: 'artTagData', - getMatchableNames: tag => - (tag.isContentWarning - ? [`cw: ${tag.name}`] - : [tag.name]), + getMatchableNames: artTag => + (artTag.isContentWarning + ? [`cw: ${artTag.name}`] + : [artTag.name]), }, }; @@ -130,7 +132,7 @@ export class ArtTag extends Thing { bindTo: 'artTagData', referencing: artTag => [artTag], - referenced: artTag => artTag.directDescendantTags, + referenced: artTag => artTag.directDescendantArtTags, }, }; @@ -145,7 +147,7 @@ export class ArtTag extends Thing { 'Color': {property: 'color'}, 'Is CW': {property: 'isContentWarning'}, - 'Direct Descendant Tags': {property: 'directDescendantTags'}, + 'Direct Descendant Tags': {property: 'directDescendantArtTags'}, }, }; diff --git a/src/page/art-tag.js b/src/page/art-tag.js new file mode 100644 index 00000000..32e869e1 --- /dev/null +++ b/src/page/art-tag.js @@ -0,0 +1,25 @@ +// Art tag page specification. + +export const description = `per-art-tag gallery pages`; + +export function condition({wikiData}) { + return wikiData.wikiInfo.enableArtTagUI; +} + +export function targets({wikiData}) { + return wikiData.artTagData.filter((tag) => !tag.isContentWarning); +} + +export function pathsForTarget(tag) { + return [ + { + type: 'page', + path: ['artTagGallery', tag.directory], + + contentFunction: { + name: 'generateArtTagGalleryPage', + args: [tag], + }, + }, + ]; +} diff --git a/src/page/index.js b/src/page/index.js index 21d93c8f..ae480136 100644 --- a/src/page/index.js +++ b/src/page/index.js @@ -1,6 +1,7 @@ export * as album from './album.js'; export * as artist from './artist.js'; export * as artistAlias from './artist-alias.js'; +export * as artTag from './art-tag.js'; export * as flash from './flash.js'; export * as flashAct from './flash-act.js'; export * as group from './group.js'; @@ -8,5 +9,4 @@ export * as homepage from './homepage.js'; export * as listing from './listing.js'; export * as news from './news.js'; export * as static from './static.js'; -export * as tag from './tag.js'; export * as track from './track.js'; diff --git a/src/page/tag.js b/src/page/tag.js deleted file mode 100644 index 8942aea9..00000000 --- a/src/page/tag.js +++ /dev/null @@ -1,25 +0,0 @@ -// Art tag page specification. - -export const description = `per-artwork-tag gallery pages`; - -export function condition({wikiData}) { - return wikiData.wikiInfo.enableArtTagUI; -} - -export function targets({wikiData}) { - return wikiData.artTagData.filter((tag) => !tag.isContentWarning); -} - -export function pathsForTarget(tag) { - return [ - { - type: 'page', - path: ['tag', tag.directory], - - contentFunction: { - name: 'generateArtTagGalleryPage', - args: [tag], - }, - }, - ]; -} diff --git a/src/replacer.js b/src/replacer.js index 5378db1d..a16d1ab8 100644 --- a/src/replacer.js +++ b/src/replacer.js @@ -151,6 +151,11 @@ export const replacerSpec = { }, 'tag': { + find: 'artTag', + link: 'linkArtTagGallery', + }, + + 'tag-info': { find: 'artTag', link: 'linkArtTag', }, diff --git a/src/strings-default.yaml b/src/strings-default.yaml index cfea25ad..44877e6f 100644 --- a/src/strings-default.yaml +++ b/src/strings-default.yaml @@ -1264,6 +1264,32 @@ artistGalleryPage: infoLine: >- Contributed to {COVER_ARTS}. +# +# artTagPage: +# The art tag info page displays general information about a tag, +# including details about how it's networked with other tags in +# particular. +# +artTagPage: + nav: + tag: "Tag: {TAG}" + +# +# artTagGalleryPage: +# The tag gallery page displays all the artworks that a tag has +# been featured in, in one neat grid, with each artwork displaying +# its illustrators, as well as a short info line that indicates +# how many artworks the tag's part of. +# +artTagGalleryPage: + title: "{TAG}" + + infoLine: >- + Appears in {COVER_ARTS}. + + descendsFrom: "Descends from {TAGS}." + descendants: "Direct descendants: {TAGS}." + # # commentaryIndex: # The commentary index page shows a summary of all the commentary @@ -2101,25 +2127,6 @@ referencingArtworksPage: statsLine: >- Referenced by {ARTWORKS}. -# -# tagPage: -# The tag gallery page displays all the artworks that a tag has -# been featured in, in one neat grid, with each artwork displaying -# its illustrators, as well as a short info line that indicates -# how many artworks the tag's part of. -# -tagPage: - title: "{TAG}" - - nav: - tag: "Tag: {TAG}" - - infoLine: >- - Appears in {COVER_ARTS}. - - descendsFrom: "Descends from {TAGS.}" - descendants: "Direct descendants: {TAGS}." - # # trackPage: # diff --git a/src/urls-default.yaml b/src/urls-default.yaml index dce871f6..c3bf89eb 100644 --- a/src/urls-default.yaml +++ b/src/urls-default.yaml @@ -36,6 +36,9 @@ localized: albumReferencedArtworks: 'album/<>/referenced-art/' albumReferencingArtworks: 'album/<>/referencing-art/' + artTagInfo: 'tag/<>/info/' + artTagGallery: 'tag/<>/' + artist: 'artist/<>/' artistGallery: 'artist/<>/gallery/' @@ -60,8 +63,6 @@ localized: staticPage: '<>/' - tag: 'tag/<>/' - track: 'track/<>/' trackReferencedArtworks: 'track/<>/referenced-art/' trackReferencingArtworks: 'track/<>/referencing-art/' -- cgit 1.3.0-6-gf8a5