Check-in by ben on 2025-01-19 20:38:11

 If an item has multiple creators, list them in the item details.
  Prior to this commit, the details would ignore the creator
 field when an item had multiple creators.

 INSERTED    DELETED
       18          5 src/details/index.dcgi.m4
       18          5 TOTAL over 1 changed file

Index: src/details/index.dcgi.m4
==================================================================
--- src/details/index.dcgi.m4
+++ src/details/index.dcgi.m4
@@ -27,11 +27,12 @@
    cmd = sprintf("%s <%s 2>&1", cmd_json2tsv, iaout)
    FS = "\t"
    cols = 0
    delete col
    add_date = ""
-    creator = ""
+    creators = 0
+    delete creator
    descr = ""
    dir = ""
    id = ""
    item_server = ""
    item_size = 0
@@ -62,11 +63,15 @@
            col[cols] = $3
        } else if ($1 == ".metadata.collection[]" && $2 == "s") {
            cols++
            col[cols] = $3
        } else if ($1 == ".metadata.creator" && $2 == "s") {
-            creator = $3
+            creators++
+            creator[creators] = $3
+        } else if ($1 == ".metadata.creator[]" && $2 == "s") {
+            creators++
+            creator[creators] = $3
        } else if ($1 == ".metadata.description" && $2 == "s") {
            descr = $3
        } else if ($1 == ".metadata.identifier" && $2 == "s") {
            id = $3
        } else if ($1 == ".metadata.language" && $2 == "s") {
@@ -100,14 +105,22 @@
        unlink(iaout)
        return
    }

    print(shorten(title, 70))
-    if (length(creator) > 0) {
-        label = "by " shorten(creator, 70)
+    if (creators == 1) {
+        label = "by " shorten(creator[1], 70)
        printf "[1|%s|%s/search/%%09creator:(%s)|%s|%s]\n", label,
-            cgipath, creator, server, port
+            cgipath, creator[1], server, port
+    } else if (creators > 1) {
+        printf "\nby:\n"
+        for (i = 1; i <= creators; i++) {
+            label = shorten(creator[i], 70)
+            printf "[1|%s|%s/search/%%09creator:(%s)|%s|%s]\n", label,
+                cgipath, creator[i], server, port
+        }
+        printf "\n"
    }
    if (length(thumb) > 0) {
        url = sprintf("http://%s%s/%s", item_server, dir, thumb)
        printf "[I|Thumbnail|%s/raw/%%09%s|%s|%s]\n",
            cgipath, url, server, port