« get me outta code hell

client, content: sidebar-search: show where you started - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies/generatePageLayout.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2025-12-13 11:50:25 -0400
committer(quasar) nebula <qznebula@protonmail.com>2025-12-13 11:50:25 -0400
commit9bffc4291c73c598bbad23b379ba268a23ca2660 (patch)
tree72d97969636f8a2c4f0fb5981138e05cc66f3d6a /src/content/dependencies/generatePageLayout.js
parent0f45b260201f98b05dae1a18428b1a5619384c26 (diff)
client, content: sidebar-search: show where you started preview
Diffstat (limited to 'src/content/dependencies/generatePageLayout.js')
-rw-r--r--src/content/dependencies/generatePageLayout.js53
1 files changed, 14 insertions, 39 deletions
diff --git a/src/content/dependencies/generatePageLayout.js b/src/content/dependencies/generatePageLayout.js
index 23d5932d..fec3bd78 100644
--- a/src/content/dependencies/generatePageLayout.js
+++ b/src/content/dependencies/generatePageLayout.js
@@ -1,5 +1,3 @@
-import striptags from 'striptags';
-
 import {openAggregate} from '#aggregate';
 import {atOffset, empty, repeat} from '#sugar';
 
@@ -27,6 +25,9 @@ export default {
     relations.stickyHeadingContainer =
       relation('generateStickyHeadingContainer');
 
+    relations.titleText =
+      relation('generatePageTitleText');
+
     relations.sidebar =
       relation('generatePageSidebar');
 
@@ -629,6 +630,12 @@ export default {
       footerHTML,
     ];
 
+    relations.titleText.setSlots({
+      title: slots.title,
+      showWikiNameInTitle: slots.showWikiNameInTitle,
+      subtitle: slots.subtitle,
+    });
+
     const pageHTML = html.tags([
       `<!DOCTYPE html>`,
       html.tag('html',
@@ -653,44 +660,12 @@ export default {
 
           html.tag('head', [
             html.tag('title',
-              language.encapsulate('misc.pageTitle', workingCapsule => {
-                const workingOptions = {};
-
-                // Slightly jank: The output of striptags is, of course, a string,
-                // and as far as language.formatString() is concerned, that means
-                // it needs to be sanitized - including turning ampersands into
-                // &amp;'s. But the title is already HTML that has implicitly been
-                // sanitized, however it got here, and includes HTML entities that
-                // are properly escaped. Those need to get included as they are,
-                // so we wrap the title in a tag and pass it off as good to go.
-                workingOptions.title =
-                  html.tags([
-                    striptags(slots.title.toString()),
-                  ]);
-
-                if (!html.isBlank(slots.subtitle)) {
-                  // Same shenanigans here, as far as wrapping striptags goes.
-                  workingCapsule += '.withSubtitle';
-                  workingOptions.subtitle =
-                    html.tags([
-                      striptags(slots.subtitle.toString()),
-                    ]);
-                }
+              {'data-without-wiki-name':
+                relations.titleText.clone()
+                  .slot('showWikiNameInTitle', false)
+                  .toString()},
 
-                const showWikiName =
-                  (slots.showWikiNameInTitle === true
-                    ? true
-                 : slots.showWikiNameInTitle === 'auto'
-                    ? html.isBlank(slots.subtitle)
-                    : false);
-
-                if (showWikiName) {
-                  workingCapsule += '.withWikiName';
-                  workingOptions.wikiName = data.wikiName;
-                }
-
-                return language.$(workingCapsule, workingOptions);
-              })),
+              relations.titleText),
 
             html.tag('meta', {charset: 'utf-8'}),
             html.tag('meta', {