diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2025-04-02 13:13:20 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2025-04-10 16:02:38 -0300 |
commit | 883c5209f4e78600b851238646bbdcaafdcc210b (patch) | |
tree | ddefa94bf7fb75f4e1283f8318302d64a3b94241 /src | |
parent | 5bbecc7e2e9a4836ba3ee8323e685bf70ef51f32 (diff) |
data, content: Artwork.{label,source}
Diffstat (limited to 'src')
-rw-r--r-- | src/content/dependencies/generateArtistCredit.js | 18 | ||||
-rw-r--r-- | src/content/dependencies/generateCoverArtworkOriginDetails.js | 25 | ||||
-rw-r--r-- | src/data/things/artwork.js | 9 | ||||
-rw-r--r-- | src/strings-default.yaml | 5 |
4 files changed, 49 insertions, 8 deletions
diff --git a/src/content/dependencies/generateArtistCredit.js b/src/content/dependencies/generateArtistCredit.js index 72d55854..6bdbeb23 100644 --- a/src/content/dependencies/generateArtistCredit.js +++ b/src/content/dependencies/generateArtistCredit.js @@ -80,6 +80,8 @@ export default { // It won't be used if contextContributions isn't provided. featuringStringKey: {type: 'string'}, + additionalStringOptions: {validate: v => v.isObject}, + showAnnotation: {type: 'boolean', default: false}, showExternalLinks: {type: 'boolean', default: false}, showChronology: {type: 'boolean', default: false}, @@ -148,7 +150,10 @@ export default { if (empty(relations.featuringContributionLinks)) { if (data.normalContributionsDifferFromContext) { - return language.$(slots.normalStringKey, {artists: artistsList}); + return language.$(slots.normalStringKey, { + ...slots.additionalStringOptions, + artists: artistsList, + }); } else { return html.blank(); } @@ -156,13 +161,20 @@ export default { if (data.normalContributionsDifferFromContext && slots.normalFeaturingStringKey) { return language.$(slots.normalFeaturingStringKey, { + ...slots.additionalStringOptions, artists: artistsList, featuring: featuringList, }); } else if (slots.featuringStringKey) { - return language.$(slots.featuringStringKey, {artists: featuringList}); + return language.$(slots.featuringStringKey, { + ...slots.additionalStringOptions, + artists: featuringList, + }); } else { - return language.$(slots.normalStringKey, {artists: everyoneList}); + return language.$(slots.normalStringKey, { + ...slots.additionalStringOptions, + artists: everyoneList, + }); } }, }; diff --git a/src/content/dependencies/generateCoverArtworkOriginDetails.js b/src/content/dependencies/generateCoverArtworkOriginDetails.js index 8b5a28ac..83f5ae8a 100644 --- a/src/content/dependencies/generateCoverArtworkOriginDetails.js +++ b/src/content/dependencies/generateCoverArtworkOriginDetails.js @@ -1,13 +1,19 @@ export default { - contentDependencies: ['generateArtistCredit'], + contentDependencies: ['generateArtistCredit', 'transformContent'], extraDependencies: ['html', 'language'], relations: (relation, artwork) => ({ credit: relation('generateArtistCredit', artwork.artistContribs, []), + + source: + relation('transformContent', artwork.source), }), data: (artwork) => ({ + label: + artwork.label, + date: (artwork.date !== artwork.thing.date ? artwork.date @@ -33,12 +39,25 @@ export default { chronologyKind: 'coverArt', - normalStringKey: capsule + '.artworkBy', + normalStringKey: + (data.label + ? capsule + '.artworkBy.customLabel' + : capsule + '.artworkBy'), + + additionalStringOptions: + (data.label + ? {label: data.label} + : {}), }), language.$(capsule, 'released', { [language.onlyIfOptions]: ['date'], date: language.formatDate(data.date), - }) + }), + + language.$(capsule, 'source', { + [language.onlyIfOptions]: ['source'], + source: relations.source.slot('mode', 'inline'), + }), ])), }; diff --git a/src/data/things/artwork.js b/src/data/things/artwork.js index fcc766e9..24850057 100644 --- a/src/data/things/artwork.js +++ b/src/data/things/artwork.js @@ -4,7 +4,8 @@ import {isContributionList, isDate, validateReferenceList} from '#validators'; import {parseContributors, parseDate} from '#yaml'; import {withPropertyFromObject} from '#composite/data'; -import {simpleString, soupyFind, thing} from '#composite/wiki-properties'; +import {contentString, simpleString, soupyFind, thing} + from '#composite/wiki-properties'; import { exposeConstant, @@ -32,6 +33,9 @@ export class Artwork extends Thing { thing: thing(), + label: simpleString(), + source: contentString(), + dateFromThingProperty: simpleString(), date: [ @@ -115,6 +119,9 @@ export class Artwork extends Thing { static [Thing.yamlDocumentSpec] = { fields: { + 'Label': {property: 'label'}, + 'Source': {property: 'source'}, + 'Date': { property: 'date', transform: parseDate, diff --git a/src/strings-default.yaml b/src/strings-default.yaml index 2b0c02bf..27cd33ec 100644 --- a/src/strings-default.yaml +++ b/src/strings-default.yaml @@ -902,7 +902,10 @@ misc: coverArtwork: artworkBy: "Artwork by {ARTISTS}" - released: "Released {DATE}" + artworkBy.customLabel: "{LABEL} by {ARTISTS}" + + released: "Art released {DATE}" + source: "Via {SOURCE}" trackArtFromAlbum: "Album cover for {ALBUM}" |