From d0272d281e25a179c655a84489d18d442e15b96b Mon Sep 17 00:00:00 2001
From: Robert Lange <robert.lange@uni-leipzig.de>
Date: Wed, 15 Sep 2021 11:19:09 +0200
Subject: [PATCH] refs #20344 [finc] license information

* get multiple lines
* show additional data (f) for Marc license information
* combine text a (note f) with url u as link in data-license.phtml
* use external links for licenses
* move template from Default to new SolrMarc directory
* consolidate data-license of Marc and DiCo to avoid confusion with Marc data-license and digital collections introduced with #14583
** rename getLicenceInfo to getLicense in SolrDico record driver
** add Dico data-licence.phtml (moved from de_15)
** use same labels like Dico - possible to use same template under DefaultRecord
---
 module/finc/src/finc/RecordDriver/SolrDico.php  |  2 +-
 .../src/finc/RecordDriver/SolrMarcFincTrait.php | 16 ++++++++++------
 .../DefaultRecord/data-license.phtml            |  5 -----
 .../RecordDriver/SolrDico/data-license.phtml    | 17 +++++++++++++++++
 .../RecordDriver/SolrMarc/data-license.phtml    | 14 ++++++++++++++
 5 files changed, 42 insertions(+), 12 deletions(-)
 delete mode 100644 themes/finc/templates/RecordDriver/DefaultRecord/data-license.phtml
 create mode 100644 themes/finc/templates/RecordDriver/SolrDico/data-license.phtml
 create mode 100644 themes/finc/templates/RecordDriver/SolrMarc/data-license.phtml

diff --git a/module/finc/src/finc/RecordDriver/SolrDico.php b/module/finc/src/finc/RecordDriver/SolrDico.php
index c18b6323c5f..f534a67a14f 100644
--- a/module/finc/src/finc/RecordDriver/SolrDico.php
+++ b/module/finc/src/finc/RecordDriver/SolrDico.php
@@ -124,7 +124,7 @@ class SolrDico extends SolrDefault
      * Returns the object'S licence information from the full record
      * @return array
      */
-    public function getLicenceInfo()
+    public function getLicense()
     {
         $prefix = "object_rights_statement_";
         $fields = [
diff --git a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
index c17bd5e99f6..c5ca36fcf7e 100644
--- a/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
+++ b/module/finc/src/finc/RecordDriver/SolrMarcFincTrait.php
@@ -2476,16 +2476,20 @@ trait SolrMarcFincTrait
      * @return array|null
      */
     public function getLicense() {
-        if ($field = $this->getMarcRecord()->getField('540')) {
+        $retval = null;
+        if ($licenses = $this->getMarcRecord()->getFields('540')) {
             $retval = [];
-            foreach (['name' => 'a', 'url' => 'u'] as $key => $sub_name) {
-                if ($line = $field->getSubfield($sub_name)) {
-                    $retval[$key] = $line->getData();
+            $i = 0;
+            foreach ($licenses as $license) {
+                foreach (['code' => 'a', 'url' => 'u', 'text' => 'f'] as $key => $sub_name) {
+                    if ($line = $license->getSubfield($sub_name)) {
+                        $retval[$i][$key] = $line->getData();
+                    }
                 }
+                $i++;
             }
-            return $retval;
         }
-        return null;
+        return $retval;
     }
 
     /**
diff --git a/themes/finc/templates/RecordDriver/DefaultRecord/data-license.phtml b/themes/finc/templates/RecordDriver/DefaultRecord/data-license.phtml
deleted file mode 100644
index d8230b72f63..00000000000
--- a/themes/finc/templates/RecordDriver/DefaultRecord/data-license.phtml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!-- finc: RecordDriver - DefaultRecord - data-license -->
-<?php if (!empty($data) && is_array($data)): ?>
-  <?= $data['name'] ?> (<a href="<?= $data['url'] ?>"><?= $data['url'] ?></a>)
-<?php endif; ?>
-<!-- finc: RecordDriver - DefaultRecord - data-license - END -->
\ No newline at end of file
diff --git a/themes/finc/templates/RecordDriver/SolrDico/data-license.phtml b/themes/finc/templates/RecordDriver/SolrDico/data-license.phtml
new file mode 100644
index 00000000000..5cef1f3ac0d
--- /dev/null
+++ b/themes/finc/templates/RecordDriver/SolrDico/data-license.phtml
@@ -0,0 +1,17 @@
+<!-- finc: RecordDriver - SolrDico - data-license -->
+<!-- in contrast to SolrMarc data-license.phtml, $data is an one-dimensional array and has an optional icon -->
+<?php $label = $this->escapeHtml($data['code']) . "&nbsp;(" . $this->escapeHtml($data['text']) . ")"; ?>
+<?php ob_start() ?>
+<?=$label ?>
+<?php if (isset($data['icon'])): ?>
+  <img class="collection-data collection-licence-image" src="<?=$data['icon']?>"/>
+<?php endif; ?>
+<?php $label = ob_get_contents();
+  ob_end_clean();
+?>
+<?php if (isset($data['url'])): ?>
+  <?= $this->externalLink($data['url'], $label) ?>
+<?php else: ?>
+  <?= $label ?>
+<?php endif;?>
+<!-- finc: RecordDriver - SolrDico - data-license - END -->
\ No newline at end of file
diff --git a/themes/finc/templates/RecordDriver/SolrMarc/data-license.phtml b/themes/finc/templates/RecordDriver/SolrMarc/data-license.phtml
new file mode 100644
index 00000000000..7407ecf9612
--- /dev/null
+++ b/themes/finc/templates/RecordDriver/SolrMarc/data-license.phtml
@@ -0,0 +1,14 @@
+<!-- finc: RecordDriver - SolrMarc - data-licence -->
+<?php if (is_array($data) && count($data)): ?>
+  <?php foreach ($data as $license) : ?>
+    <div>
+      <?php $text = ($license['code'] ?? '') . (isset($license['text']) ? " ({$license['text']})" : '') ?>
+      <?php if (isset($license['url'])): ?>
+          <?= $this->externalLink($license['url'], $text ?? $license['url']) ?>
+      <?php else: ?>
+          <?= $text ?>
+      <?php endif;?>
+    </div>
+  <?php endforeach; ?>
+<?php endif; ?>
+<!-- finc: RecordDriver - SolrMarc - data-licence - END -->
\ No newline at end of file
-- 
GitLab