diff options
Diffstat (limited to 'src/content')
-rw-r--r-- | src/content/dependencies/generateName.js | 33 | ||||
-rw-r--r-- | src/content/dependencies/generatePageLayout.js | 8 | ||||
-rw-r--r-- | src/content/dependencies/generateTrackInfoPage.js | 5 | ||||
-rw-r--r-- | src/content/dependencies/linkThing.js | 20 |
4 files changed, 54 insertions, 12 deletions
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) { |