From 83cad814dcde98e6596502d74e48c9627bb95897 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Tue, 7 Oct 2025 11:16:30 -0300 Subject: content, data: generateName, Track.nameText --- src/content/dependencies/generateName.js | 33 +++++++++++++++++++++++ src/content/dependencies/generatePageLayout.js | 8 ++++-- src/content/dependencies/generateTrackInfoPage.js | 5 +++- src/content/dependencies/linkThing.js | 20 +++++++------- src/data/things/track.js | 3 +++ 5 files changed, 57 insertions(+), 12 deletions(-) create mode 100644 src/content/dependencies/generateName.js diff --git a/src/content/dependencies/generateName.js b/src/content/dependencies/generateName.js new file mode 100644 index 00000000..e0d0c6d3 --- /dev/null +++ b/src/content/dependencies/generateName.js @@ -0,0 +1,33 @@ +export default { + contentDependencies: ['transformContent'], + extraDependencies: ['html', 'language'], + + relations: (relation, thing) => ({ + customName: + (thing.nameText + ? relation('transformContent', thing.nameText) + : null), + }), + + data: (thing) => ({ + normalName: + thing.name, + + shortName: + thing.nameShort, + }), + + slots: { + preferShortName: { + type: 'boolean', + default: false, + }, + }, + + generate: (data, relations, slots, {language}) => + (relations.customName + ? relations.customName.slot('mode', 'inline') + : slots.preferShortName && data.shortName + ? language.sanitize(data.shortName) + : language.sanitize(data.normalName)), +}; diff --git a/src/content/dependencies/generatePageLayout.js b/src/content/dependencies/generatePageLayout.js index 324a5ee4..f3fad2db 100644 --- a/src/content/dependencies/generatePageLayout.js +++ b/src/content/dependencies/generatePageLayout.js @@ -1,3 +1,5 @@ +import striptags from 'striptags'; + import {openAggregate} from '#aggregate'; import {atOffset, empty, repeat} from '#sugar'; @@ -654,11 +656,13 @@ export default { language.encapsulate('misc.pageTitle', workingCapsule => { const workingOptions = {}; - workingOptions.title = slots.title; + workingOptions.title = + striptags(slots.title.toString()); if (!html.isBlank(slots.subtitle)) { workingCapsule += '.withSubtitle'; - workingOptions.subtitle = slots.subtitle; + workingOptions.subtitle = + striptags(slots.subtitle.toString()); } const showWikiName = diff --git a/src/content/dependencies/generateTrackInfoPage.js b/src/content/dependencies/generateTrackInfoPage.js index df17d460..92e00a41 100644 --- a/src/content/dependencies/generateTrackInfoPage.js +++ b/src/content/dependencies/generateTrackInfoPage.js @@ -71,6 +71,9 @@ export default { contentHeading: relation('generateContentHeading'), + name: + relation('generateName', track), + releaseInfo: relation('generateTrackReleaseInfo', track), @@ -153,7 +156,7 @@ export default { relations.layout.slots({ title: language.$(pageCapsule, 'title', { - track: data.name, + track: relations.name, }), headingMode: 'sticky', diff --git a/src/content/dependencies/linkThing.js b/src/content/dependencies/linkThing.js index 7ee42980..7784afe7 100644 --- a/src/content/dependencies/linkThing.js +++ b/src/content/dependencies/linkThing.js @@ -11,11 +11,15 @@ export default { tooltip: relation('generateTooltip'), + + name: + relation('generateName', thing), }), data: (pathKey, thing) => ({ name: thing.name, nameShort: thing.nameShort ?? thing.shortName, + nameText: thing.nameText, path: (pathKey @@ -66,7 +70,7 @@ export default { hash: {type: 'string'}, }, - generate(data, relations, slots, {html, language}) { + generate(data, relations, slots, {html}) { const path = slots.path ?? data.path; @@ -74,14 +78,12 @@ export default { const wrapperAttributes = html.attributes(); const showShortName = - (slots.preferShortName - ? data.nameShort && data.nameShort !== data.name - : false); + slots.preferShortName && + !data.nameText && + data.nameShort && + data.nameShort !== data.name; - const name = - (showShortName - ? data.nameShort - : data.name); + const name = relations.name; const showWikiTooltip = (slots.tooltipStyle === 'auto' @@ -105,7 +107,7 @@ export default { const content = (html.isBlank(slots.content) - ? language.sanitize(name) + ? name : slots.content); if (slots.color !== false) { diff --git a/src/data/things/track.js b/src/data/things/track.js index 1871e86b..93193b6a 100644 --- a/src/data/things/track.js +++ b/src/data/things/track.js @@ -50,6 +50,7 @@ import { import { commentatorArtists, constitutibleArtworkList, + contentString, contributionList, dimensions, directory, @@ -113,6 +114,7 @@ export class Track extends Thing { // > Update & expose - Identifying metadata name: name('Unnamed Track'), + nameText: contentString(), directory: [ withDirectorySuffix(), @@ -579,6 +581,7 @@ export class Track extends Thing { // Identifying metadata 'Track': {property: 'name'}, + 'Track Text': {property: 'nameText'}, 'Directory': {property: 'directory'}, 'Suffix Directory': {property: 'suffixDirectoryFromAlbum'}, 'Always Reference By Directory': {property: 'alwaysReferenceByDirectory'}, -- cgit 1.3.0-6-gf8a5