« get me outta code hell

hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/content/dependencies
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/dependencies')
-rw-r--r--src/content/dependencies/generateArtistInfoPageAlbumArtistOnlyChunkItem.js12
-rw-r--r--src/content/dependencies/generateContentEntry.js9
-rw-r--r--src/content/dependencies/generateFlashActGalleryPage.js13
-rw-r--r--src/content/dependencies/generateFlashActSidebarSideMapBox.js2
-rw-r--r--src/content/dependencies/generateUnsafeMunchy.js8
-rw-r--r--src/content/dependencies/linkFlashAct.js21
-rw-r--r--src/content/dependencies/linkFlashActInline.js24
7 files changed, 61 insertions, 28 deletions
diff --git a/src/content/dependencies/generateArtistInfoPageAlbumArtistOnlyChunkItem.js b/src/content/dependencies/generateArtistInfoPageAlbumArtistOnlyChunkItem.js
new file mode 100644
index 00000000..314813f5
--- /dev/null
+++ b/src/content/dependencies/generateArtistInfoPageAlbumArtistOnlyChunkItem.js
@@ -0,0 +1,12 @@
+export default {
+  relations: (relation) => ({
+    template:
+      relation('generateArtistInfoPageChunkItem'),
+  }),
+
+  generate: (relations, {language}) =>
+    relations.template.slots({
+      content:
+        language.$('artistPage.creditList.entry.album.albumArtistOnly'),
+    }),
+};
diff --git a/src/content/dependencies/generateContentEntry.js b/src/content/dependencies/generateContentEntry.js
index 7712d9f6..80a155fe 100644
--- a/src/content/dependencies/generateContentEntry.js
+++ b/src/content/dependencies/generateContentEntry.js
@@ -29,8 +29,9 @@ export default {
   }),
 
   data: (entry) => ({
-    isWikiEditorCommentary:
-      entry.isWikiEditorCommentary,
+    isWikiEditorEntry:
+      entry.isWikiEditorCommentary ||
+      entry.isWikiEditorSource,
   }),
 
   slots: {
@@ -89,7 +90,7 @@ export default {
                       html.tag('span', {class: 'content-entry-accent'},
                         language.$(titleCapsule, 'accent.withAnnotation', {annotation}));
 
-                    if (data.isWikiEditorCommentary) {
+                    if (data.isWikiEditorEntry) {
                       workingCapsule += '.wikiEditor';
                     }
                   }
@@ -106,7 +107,7 @@ export default {
             relations.colorStyle.clone()
               .slot('color', slots.color),
 
-          data.isWikiEditorCommentary &&
+          data.isWikiEditorEntry &&
             {class: 'wiki-commentary'},
 
           relations.bodyContent.slot('mode', 'multiline')),
diff --git a/src/content/dependencies/generateFlashActGalleryPage.js b/src/content/dependencies/generateFlashActGalleryPage.js
index 896ee224..4097d765 100644
--- a/src/content/dependencies/generateFlashActGalleryPage.js
+++ b/src/content/dependencies/generateFlashActGalleryPage.js
@@ -1,5 +1,3 @@
-import striptags from 'striptags';
-
 export default {
   relations: (relation, act) => ({
     layout:
@@ -9,7 +7,7 @@ export default {
       relation('linkFlashIndex'),
 
     flashActNavLink:
-      relation('linkFlashAct', act),
+      relation('linkFlashActInline', act),
 
     flashActNavAccent:
       relation('generateFlashActNavAccent', act),
@@ -31,18 +29,23 @@ export default {
 
   data: (act) => ({
     name: act.name,
+    nameHTML: act.nameHTML,
     color: act.color,
 
     flashNames:
       act.flashes.map(flash => flash.name),
   }),
 
-  generate: (data, relations, {language}) =>
+  generate: (data, relations, {html, language}) =>
     language.encapsulate('flashPage', pageCapsule =>
       relations.layout.slots({
         title:
           language.$(pageCapsule, 'title', {
-            flash: striptags(data.name),
+            flash:
+              html.ifelse([
+                html.permit(data.nameHTML, {strip: true}),
+                language.sanitize(data.name),
+              ]),
           }),
 
         color: data.color,
diff --git a/src/content/dependencies/generateFlashActSidebarSideMapBox.js b/src/content/dependencies/generateFlashActSidebarSideMapBox.js
index 4b97f21d..7cae184f 100644
--- a/src/content/dependencies/generateFlashActSidebarSideMapBox.js
+++ b/src/content/dependencies/generateFlashActSidebarSideMapBox.js
@@ -17,7 +17,7 @@ export default {
     sideActLinks:
       sprawl.flashSideData
         .map(side => side.acts
-          .map(act => relation('linkFlashAct', act))),
+          .map(act => relation('linkFlashActInline', act))),
   }),
 
   data: (sprawl, act, flash) => ({
diff --git a/src/content/dependencies/generateUnsafeMunchy.js b/src/content/dependencies/generateUnsafeMunchy.js
deleted file mode 100644
index df8231ef..00000000
--- a/src/content/dependencies/generateUnsafeMunchy.js
+++ /dev/null
@@ -1,8 +0,0 @@
-export default {
-  slots: {
-    contentSource: {type: 'string'},
-  },
-
-  generate: (slots, {html}) =>
-    new html.Tag(null, null, slots.contentSource),
-};
diff --git a/src/content/dependencies/linkFlashAct.js b/src/content/dependencies/linkFlashAct.js
index 069bedf4..dcad71e0 100644
--- a/src/content/dependencies/linkFlashAct.js
+++ b/src/content/dependencies/linkFlashAct.js
@@ -1,20 +1,21 @@
 export default {
   relations: (relation, flashAct) => ({
-    unsafeMunchy:
-      relation('generateUnsafeMunchy'),
-
     link:
       relation('linkThing', 'localized.flashActGallery', flashAct),
   }),
 
   data: (flashAct) => ({
-    name: flashAct.name,
+    name:
+      flashAct.name,
+
+    nameHTML:
+      flashAct.nameHTML,
   }),
 
-  generate: (data, relations) =>
-    relations.link.slots({
-      content:
-        relations.unsafeMunchy
-          .slot('contentSource', data.name),
-    }),
+  generate: (data, relations, {html, language}) =>
+    relations.link.slot('content',
+      html.ifelse([
+        html.permit(data.nameHTML),
+        language.sanitize(data.name),
+      ])),
 };
diff --git a/src/content/dependencies/linkFlashActInline.js b/src/content/dependencies/linkFlashActInline.js
new file mode 100644
index 00000000..ba2a4883
--- /dev/null
+++ b/src/content/dependencies/linkFlashActInline.js
@@ -0,0 +1,24 @@
+// junk component which only exists because you can't
+// "extend" the slots of underlying linkThing.
+
+export default {
+  relations: (relation, flashAct) => ({
+    link:
+      relation('linkThing', 'localized.flashActGallery', flashAct),
+  }),
+
+  data: (flashAct) => ({
+    name:
+      flashAct.name,
+
+    nameHTML:
+      flashAct.nameHTML,
+  }),
+
+  generate: (data, relations, {html, language}) =>
+    relations.link.slot('content',
+      html.ifelse([
+        html.permit(data.nameHTML, {inline: true}),
+        language.sanitize(data.name),
+      ])),
+};