« 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/generateAdditionalFilesListChunk.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/content/dependencies/generateAdditionalFilesListChunk.js')
-rw-r--r--src/content/dependencies/generateAdditionalFilesListChunk.js34
1 files changed, 31 insertions, 3 deletions
diff --git a/src/content/dependencies/generateAdditionalFilesListChunk.js b/src/content/dependencies/generateAdditionalFilesListChunk.js
index 466a5d8d..7d0e41c1 100644
--- a/src/content/dependencies/generateAdditionalFilesListChunk.js
+++ b/src/content/dependencies/generateAdditionalFilesListChunk.js
@@ -8,6 +8,9 @@ export default {
     links:
       file.filenames
         .map(filename => relation('linkAdditionalFile', file, filename)),
+
+    artistCredit:
+      relation('generateArtistCredit', file.artistContribs, []),
   }),
 
   data: (file) => ({
@@ -19,6 +22,11 @@ export default {
   }),
 
   slots: {
+    string: {
+      type: 'string',
+      default: 'miscellaneousAdditionalFiles',
+    },
+
     showFileSizes: {
       type: 'boolean',
     },
@@ -34,9 +42,29 @@ export default {
           [
             html.tag('summary',
               html.tag('span',
-                language.$(capsule, 'entry', {
-                  title:
-                    html.tag('b', data.title),
+                language.encapsulate(capsule, 'entry', workingCapsule => {
+                  const workingOptions = {};
+                  const entryCapsule = workingCapsule;
+
+                  const titlePart =
+                    (data.title
+                      ? language.sanitize(data.title)
+                      : language.$('releaseInfo', slots.string, 'entry.placeholderTitle'));
+
+                  workingOptions.title =
+                    html.tag('b', titlePart);
+
+                  relations.artistCredit.setSlots({
+                    normalStringKey:
+                      entryCapsule + '.credit',
+                  });
+
+                  if (!html.isBlank(relations.artistCredit)) {
+                    workingCapsule += '.withCredit';
+                    workingOptions.credit = relations.artistCredit;
+                  }
+
+                  return language.$(workingCapsule, workingOptions);
                 }))),
 
             html.tag('ul', [